写点什么

PHP 增量代码规范 PHPCS 通过极狐 GitLab CI 平滑落地

作者:极狐GitLab
  • 2024-02-02
    上海
  • 本文字数:1320 字

    阅读完需:约 4 分钟

PHP 增量代码规范 PHPCS 通过极狐 GitLab CI 平滑落地

代码越写越规范是优秀开发者成长的必经之路,但很多人放弃了老项目,因为太不规范了,所有人停下来一起修复也要很久,而且一次改动太多难以确保可靠性。 可以借助 git diff 把本次修改的代码挑出来,实现增量扫描,但配置起来太繁琐。 有的人在持续集成里配置了规范扫描工具,报错之后需要在成千上万行的 log 里查找,降低了研发效率,最终也没能推广。


本文以 PHP 项目配置 PHPCS 扫描工具为例,讲解消灭这些问题的办法:

  1. 将代码规范问题显示在「合并请求页面」,大幅度提高研发效率

  2. 增量代码规范报告,让老项目越来越干净


PHP code sniffer(PHPCS) 是业界知名的开源扫描工具,可扫描 PSR12 等代码规范。 在项目中引入插件,并执行全量扫描:

$ composer require --dev squizlabs/php_codesniffer
$ ./vendor/bin/phpcs --standard=PSR12 app/ tests/
FILE: app/Console/Kernel.php-------------------------------------------------------------------------------FOUND 2 ERRORS AFFECTING 1 LINE------------------------------------------------------------------------------- 28 | ERROR | [x] Expected at least 1 space before "."; 0 found 28 | ERROR | [x] Expected at least 1 space after "."; 0 found-------------------------------------------------------------------------------
FILE: tests/Unit/ExampleTest.php-------------------------------------------------------------------------------FOUND 1 ERROR AFFECTING 1 LINE------------------------------------------------------------------------------- 14 | ERROR | Method name "ExampleTest::test_that_true_is_true" is not in | | camel caps format-------------------------------------------------------------------------------


复制代码


在极狐 GitLab 持续集成中执行强制扫描:

$ vi .gitlab-ci.yml
phpcs: script: - ./vendor/bin/phpcs --standard=PSR12 app/ tests/

复制代码


当扫描工具报错,持续集成退出,想看代码规范问题,需要到 log 中查找,降低了开发效率,很多持续集成产品只做到了这一步,而极狐 GitLab 可以更进一步——采集「代码质量报告」。

在项目中引入 micheh/phpcs-gitlab,它会将 phpcs 报告转换成极狐 GitLab 标准格式,在 CI 中进行采集。

$ composer require --dev micheh/phpcs-gitlab
$ vi .gitlab-ci.yml
phpcs: script: vendor/bin/phpcs --report=full --report-\\Micheh\\PhpCodeSniffer\\Report\\Gitlab=gl-code-quality-report.json --standard=PSR12 app/ tests/ artifacts: reports: codequality: gl-code-quality-report.json

复制代码

可以看到在开发人员频繁使用的「合并请求」页面,直接显示了「代码规范问题」,供开发人员自助修复以及提醒评审的同事注意,提高了研发效率。

老项目第一次配置代码规范可能会出现很多错误,没关系,先将规范合并进入主干,下次修改代码发起合并请求时,极狐 GitLab 将展示「增量代码质量报告」,而无需任何复杂设置,如上图所示:代码质量在某几个位置下降了,而不是一共有多少问题。


关注【极狐 GitLab】获取更多 DevOps 行业最佳实践。

用户头像

极狐GitLab

关注

开源开放,人人贡献 2021-05-19 加入

开放式一体化DevOps平台,助力行业高速协同增长!

评论

发布
暂无评论
PHP 增量代码规范 PHPCS 通过极狐 GitLab CI 平滑落地_极狐GitLab_InfoQ写作社区