【问题标题】:How to lint or static analysis for only changed files in a branch?如何仅对分支中更改的文件进行 lint 或静态分析?
【发布时间】:2017-06-29 07:58:49
【问题描述】:

我正在使用 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”大约需要几分钟。

我想知道是否有一种方法可以加快速度并想出了一个解决方案。请在下面查看我的答案。

【问题讨论】:

    标签: php git jenkins lint phplint


    【解决方案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”部分取决于您的需要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 2016-08-11
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      相关资源
      最近更新 更多