如何仅对分支中已更改的文件进行lint或静态分析?

时间:2017-06-29 07:58:49

标签: php git jenkins lint phplint

我正在使用Jenkins并对Pull Requests进行PHPMD,PHPCS和PHP lint检查。我们拥有的基本上是每个功能的单独分支,如果它通过检查和测试,它应该再次合并到主分支。

我们正在使用以下命令检查项目中的所有php文件:

echo "php syntax checks are started"
find ./ -type f -name \*.php -exec php -l '{}' \; | grep -v "No syntax errors detected" && echo "PHP Syntax error(s) detected" && exit 1;

对所有php文件使用“php -l”需要大约一分钟。

我想知道是否有办法加快这个速度,并想出一个解决方案。请检查下面的答案。

1 个答案:

答案 0 :(得分:1)

考虑到只有少数php文件会改变,这只需要几秒钟。

echo "php syntax checks for only changed files"
( ( (git diff --name-only origin/master $GIT_COMMIT ) | grep .php$ ) | xargs -n1 echo php -l | bash ) | grep -v "No syntax errors detected" && echo "PHP Syntax error(s) detected" && exit 1;

如果你在Jenkins中使用git插件,你可以保留$ GIT_COMMIT,否则用提交号或分支名称来改变它。

这也适用于css和js lints。更改“php -l”部分取决于您的需求。