rednaxe / project-quality-inspector
项目质量检查器提供了一个 pqi 命令,该命令通过可定制的规则检查项目的良好实践
Requires
- php: ^5.6 || ^7.0
- ext-dom: *
- composer/semver: ^1.4.2
- guzzlehttp/guzzle: ^6.3.0
- symfony/console: ~2.7 || ~3.0
- symfony/yaml: ~2.7 || ~3.0
Requires (Dev)
- phpunit/phpunit: ^5.5
Suggests
- ext-xdebug: *
README
ProjectQualityInspector 是一个 PHP 脚本 pqi
,用于检查项目的自定义良好实践。这个通用的质量检查工具将通过各种可配置的规则检查您的项目。
如果您想在项目中检查以下内容,则此工具适合您:
- 文件或目录(或路径模式)是否存在,或不应存在
- Composer 包是否存在,或不应存在
- Composer 包版本不应使用通配符...
需求
ProjectQualityInspector 需要 PHP 版本 5.6 或更高
安装
您可以通过两种不同的方式安装此组件:
- 通过 Composer 安装(在 Packagist 上的
rednaxe/project-quality-inspector
);
如果您使用 Composer 管理项目的依赖项,只需在项目的 composer.json
文件中添加对 rednaxe/project-quality-inspector
的(开发时间)依赖即可
composer require --dev rednaxe/project-quality-inspector ^1.6.0
- 使用官方 Git 仓库(https://github.com/rednaxe/project-quality-inspector)。
您需要最新版本的 Git(至少 >=2.7.0)以使用 git 规则。
使用
首先,您需要在项目中创建一个 pqi.yml 配置文件。如果在当前目录中没有配置文件,则默认使用示例 pqi.yml。
配置的第一级由您决定。当您运行命令时,您必须指定配置文件中的部分,例如
$ ./bin/pqi mycustomconfig
对于 Symfony 2.*,您需要添加类似于这样的 run
键
$ ./bin/pqi run mycustomconfig
您可以使用 -c
或 --configFile
,以及 -b
或 --baseDir
选项来分别更改配置文件和检查的基本目录
$ ./bin/pqi mycustomconfig -c config/pqi.yml -b Back/src
您可以使用 -j
或 --junitFile
生成一个 JUnit 文件
$ ./bin/pqi mycustomconfig -j pqi-junit.xml
您可以使用多个 -r
或 --rules
来选择要加载的规则
$ ./bin/pqi mycustomconfig -r files-rule -r git-rule
您还可以添加一个 common
部分,该部分将始终合并到选定的部分
mycustomconfig: files-rule: config: - "appveyor.yml" mysecondcustomconfig: files-rule: config: - ".travis.yml" common: files-rule: config: - ".gitignore.yml"
规则
当规则键存在于配置中时,将加载规则。以下是现有规则及其可能的配置列表
- files-rule 配置示例
mycustomconfig: files-rule: config: - "ruleset.xml" - "app/phpunit.xml" - "!web/app_*.php" - { value: "web/app.php", grep: [ "getenv", "SYMFONY_ENV", "!$_ENV" ], reason: "This file is required and must use getenv php function to retrieve SYMFONY_ENV environment variable" } - { value: "app/phpunit.xml", reason: "This file is required for testing code" } - "composer.json" - "phpcs.xml" - "phpmd.xml" - "php-git-hooks.yml" - { value: "README.md", grep: "!Symfony Standard Edition" } - { value: "tests/", grep: "group" }
- composer-config-rule 配置示例
mycustomconfig: composer-config-rule: config: file: "composer.json" disallow-wildcard-versioning: true packages: - { value: "!h4cc/alice-fixtures-bundle", reason: "This package is no more maintained" } - "phpunit-bridge" - "bruli/php-git-hooks" - { value: "symfony/swiftmailer-bundle", semver: "^2.5.0" }
- git-rule
当一个项目中的 Git 分支比开发人员多时,有时很难避免合并冲突。然后当是构建软件包的时候,通常太晚重新合并或清理每个分支。为了防止不必要的冲突风险,这个规则可以帮助您检测
- 大量已合并的分支(并建议您删除这些分支)
- 应该更新的分支,因为在稳定分支中有太多新的提交
- 应该更新的分支,因为在稳定分支中有太多天的工作
您需要最新版本的 Git(至少 >=2.7.0)以使用 git 规则。
配置示例
mycustomconfig: git-rule: config: stable-branches-regex: - "origin/\\d\\+.\\d\\+.\\d\\+" - "origin/master" ignored-branches-regex: ~ threshold-days-behind: "20" #in days threshold-commits-behind: "50" threshold-too-many-merged-branches: 5
待办事项
- 创建 PHP 归档 PHP 归档 (PHAR)
- 测试
- composer-config-rule: disallow-wildcard-versioning > 将当前安装的版本添加到错误消息中,以便于显式版本更正
- composer-config-rule: 检查是否有大量更新要做,以及是否有已过时的软件包已安装
- curl 规则:创建一个 curl 规则,可以用于发起请求和检查响应、头部等...
- 在 jUnit 生成的文件内容中添加时间
- 为每个规则配置中的期望添加通知/警报级别概念
- 添加指向 CONTRIBUTING.md 文件的链接,该文件解释了如何轻松开发新规则
- 找到更多规则 ;)