rednaxe/project-quality-inspector

项目质量检查器提供了一个 pqi 命令,该命令通过可定制的规则检查项目的良好实践

v1.8.0 2017-08-25 13:10 UTC

README

ProjectQualityInspector 是一个 PHP 脚本 pqi,用于检查项目的自定义良好实践。这个通用的质量检查工具将通过各种可配置的规则检查您的项目。

Latest Stable Version Latest Unstable Version Total Downloads Minimum PHP Version Build Status Scrutinizer Code Quality License

如果您想在项目中检查以下内容,则此工具适合您:

  • 文件或目录(或路径模式)是否存在,或不应存在
  • 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(至少 >=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 文件的链接,该文件解释了如何轻松开发新规则
  • 找到更多规则 ;)