openeuropa/code-review

OpenEuropa 代码审查组件。


README

Build Status Packagist

通过 GrumPHP 在每个提交时自动检查 约定

安装

通过 Composer 安装代码审查组件

composer require --dev openeuropa/code-review

在项目根目录创建以下 grumphp.yml.dist

imports:
  - { resource: vendor/openeuropa/code-review/dist/library-conventions.yml }

对于 Drupal 项目,应导入 drupal-conventions.yml

使用 Docker Compose

或者,您可以使用提供的配置通过 DockerDocker Compose 建立开发环境。

Docker 提供了必要的服务和技术,如 Web 服务器和数据库服务器,以启动站点,无论您的本地主机配置如何。

要求

配置

默认情况下,Docker Compose 读取两个文件,一个是 docker-compose.yml,另一个是可选的 docker-compose.override.yml 文件。按照惯例,docker-compose.yml 包含您的基配置,并且默认提供。重写文件,正如其名称所暗示的,可以包含现有服务或完全新的服务的配置重写。如果服务在两个文件中都定义,Docker Compose 会合并配置。

有关 Docker Compose 扩展机制的更多信息,请参阅 官方 Docker Compose 文档

用法

要开始,运行

docker-compose up

建议不要将 docker-compose 作为守护进程运行,这样您可以在完成工作后快速关闭它(CTRL+C)。但是,如果您想以守护进程运行,必须添加标志 -d

docker-compose up -d

然后

docker-compose exec web composer install

运行测试

要运行 grumphp 检查

docker-compose exec web ./vendor/bin/grumphp run

要运行 phpunit 测试

docker-compose exec web ./vendor/bin/phpunit

步骤调试

要从命令行启用步骤调试,将 XDEBUG_SESSION 环境变量传递给容器以任何值

docker-compose exec -e XDEBUG_SESSION=1 web <your command>

请注意,从 XDebug 3 开始,如果设置了变量但您的客户端没有监听调试连接,将在控制台输出连接错误消息。错误消息将导致 PHPUnit 测试的假阴性。

要从浏览器中开始步骤调试,请使用浏览器扩展或书签设置正确的 cookie,例如在 https://www.jetbrains.com/phpstorm/marklets/ 生成的那些。

自定义

此组件提供了一系列现成的约定,所有项目都必须遵循。默认约定的列表可以在 CONVENTIONS.md 中找到。

由于 GrumPHP 使用 Symfony 依赖注入组件,因此您可以在项目的 grumphp.yml.dist 文件中重写特定参数,如下所示

imports:
  - { resource: vendor/openeuropa/code-review/dist/library-conventions.yml }

parameters:
  tasks.git_commit_message.matchers: ['/^JIRA-\d+: [A-Z].+\./']

以下列表中的任务参数可以在每个项目的基础上重写

  • tasks.phpcs.standard
  • tasks.phpcs.ignore_patterns
  • tasks.phpcs.triggered_by
  • tasks.phpcs.whitelist_patterns
  • tasks.phpcs.warning_severity
  • tasks.phpmd.exclude
  • tasks.phpmd.ruleset
  • tasks.phpmd.triggered_by
  • tasks.git_commit_message.matchers

关于如何导入和覆盖配置文件的更多信息,请点击这里

还可以通过加载额外的任务扩展并在extra_tasks:参数下添加任务来扩展要运行的任务列表,如下所示

imports:
  - { resource: vendor/openeuropa/code-review/dist/library-conventions.yml }

parameters:
  extra_tasks:
    phpparser: ~
  extensions:
    - OpenEuropa\CodeReview\ExtraTasksExtension

GrumPHP已经有一系列可以直接使用的任务,您可以在GrumPHP任务页面找到完整列表。

您也可以根据自己的需求创建自定义任务,详情请参考GrumPHP扩展页面

用法

GrumPHP任务会在每次提交时运行,如果您想在未提交的情况下运行它们,请使用以下命令

./vendor/bin/grumphp run

如果您想模拟创建新提交时将运行的任务

./vendor/bin/grumphp git:pre-commit

有关更多信息,请查看GrumPHP文档

变更日志

变更日志是通过本地Docker安装生成的,该安装包含了muccg/docker-github-changelog-generator

该工具读取Github API中所需存储库的信息,并将CHANGELOG.md写入存储库的根目录。

先决条件

  • 本地Docker机器正在运行。
  • 应该生成一个Github访问令牌并导出(或写入~/.gitconfig),格式为CHANGELOG_GITHUB_TOKEN=<YOUR TOKEN HERE>

在标记新版本之前,请导出以下内容

export CHANGELOG_GITHUB_TOKEN=<YOUR TOKEN HERE>
export CHANGELOG_FUTURE_RELEASE=0.1.0

然后可以通过运行以下命令生成变更日志

composer run-script changelog

故障排除

GrumPHP在新提交上未触发

从Git 2.9+(2016年6月)开始,您有一个新的选项用于集中管理钩子:core.hooksPath。如果GrumPHP在新提交上没有触发,请通过运行以下命令检查全局选项core.hooksPath

git config --global --list

要取消该选项,请运行

git config --global --unset core.hooksPath 

在Mac上生成变更日志

  • 使用Docker应用可以获得最佳结果
  • 本地仓库文件夹应在Docker中共享,在Docker -> Preferences -> File sharing下启用,以允许在本地写入文件。