qafoo / quality-analyzer
代码审查助手
Requires
- php: >=5.6
- ext-zip: *
- kore/data-object: ^1.1
- pdepend/pdepend: @stable
- phploc/phploc: ^2.1|^3.0
- phpmd/phpmd: @stable
- roave/security-advisories: dev-master
- sebastian/finder-facade: ^1.2
- sebastian/phpcpd: @stable
- squizlabs/php_codesniffer: @stable
- symfony/console: ^2.7|^3.0
Requires (Dev)
- phpunit/phpunit: ^5.6
- dev-master
- dev-greenkeeper-babel-core-6.7.5
- dev-greenkeeper-react-dom-15.0.0
- dev-greenkeeper-react-15.0.0
- dev-greenkeeper-phantomjs-2.1.7
- dev-greenkeeper-eslint-plugin-react-4.3.0
- dev-greenkeeper-jquery-2.2.3
- dev-greenkeeper-grunt-1.0.1
- dev-greenkeeper-grunt-1.0.0
- dev-greenkeeper-eslint-2.7.0
- dev-greenkeeper-grunt-cli-1.2.0
- dev-greenkeeper-eslint-2.6.0
- dev-greenkeeper-babel-eslint-6.0.2
- dev-greenkeeper-babel-eslint-6.0.1
- dev-greenkeeper-react-dom-0.14.8
- dev-greenkeeper-react-0.14.8
- dev-greenkeeper-eslint-2.5.3
- dev-greenkeeper-eslint-2.5.2
- dev-greenkeeper-babel-eslint-6.0.0
- dev-greenkeeper-babel-eslint-5.0.1
- dev-greenkeeper-eslint-2.5.1
- dev-greenkeeper-eslint-2.5.0
- dev-greenkeeper-style-loader-0.13.1
- dev-greenkeeper-jszip-2.6.0
- dev-greenkeeper-babel-core-6.7.4
- dev-greenkeeper-grunt-cli-1.1.0
- dev-greenkeeper-grunt-cli-1.0.1
- dev-greenkeeper-grunt-cli-1.0.0
- dev-greenkeeper-karma-junit-reporter-0.4.1
- dev-greenkeeper-grunt-karma-0.12.2
- dev-greenkeeper-jquery-2.2.2
- dev-greenkeeper-karma-jasmine-0.3.8
- dev-greenkeeper-eslint-plugin-react-4.2.3
- dev-greenkeeper-eslint-plugin-react-4.2.2
- dev-greenkeeper-grunt-contrib-watch-1.0.0
- dev-greenkeeper-sass-loader-3.2.0
- dev-greenkeeper-eslint-2.4.0
- dev-greenkeeper-babel-core-6.7.2
- dev-greenkeeper-karma-junit-reporter-0.4.0
- dev-greenkeeper-react-router-2.0.1
- dev-greenkeeper-babel-core-6.7.0
- dev-greenkeeper-eslint-plugin-react-4.2.1
- dev-greenkeeper-karma-0.13.22
- dev-greenkeeper-eslint-plugin-react-4.2.0
- dev-greenkeeper-eslint-2.3.0
- dev-greenkeeper-babel-core-6.6.5
- dev-greenkeeper-history-2.0.1
- dev-greenkeeper-babel-core-6.6.4
- dev-greenkeeper-babel-core-6.6.0
- dev-greenkeeper-babel-loader-6.2.4
- dev-greenkeeper-eslint-plugin-react-4.1.0
- dev-greenkeeper-webpack-1.12.14
- dev-greenkeeper-jquery-2.2.1
- dev-greenkeeper-eslint-plugin-react-4.0.0
- dev-greenkeeper-eslint-2.2.0
- dev-greenkeeper-d3-3.5.16
- dev-greenkeeper-babel-loader-6.2.3
- dev-greenkeeper-babel-eslint-5.0.0
- dev-greenkeeper-eslint-2.1.0
- dev-greenkeeper-grunt-eslint-18.0.0
- dev-greenkeeper-karma-0.13.21
- dev-greenkeeper-eslint-2.0.0
- dev-greenkeeper-babel-core-6.5.2
- dev-greenkeeper-karma-0.13.20
- dev-greenkeeper-d3-3.5.15
- dev-greenkeeper-grunt-eslint-17.3.2
- dev-greenkeeper-react-router-2.0.0
- dev-greenkeeper-babel-core-6.5.1
- dev-greenkeeper-babel-core-6.5.0
- dev-greenkeeper-eslint-plugin-standard-1.3.2
- dev-greenkeeper-eslint-config-standard-5.1.0
- dev-greenkeeper-eslint-config-standard-5.0.0
- dev-greenkeeper-react-router-v1.0.3
- dev-greenkeeper-history-2.0.0
- dev-greenkeeper-webpack-1.12.13
- dev-greenkeeper-babel-loader-6.2.2
- dev-greenkeeper-babel-eslint-4.1.8
- dev-greenkeeper-babel-eslint-4.1.7
- dev-greenkeeper-karma-jasmine-0.3.7
- dev-greenkeeper-node-sass-v3.4.2
- dev-greenkeeper-react-0.14.7
- dev-greenkeeper-react-dom-0.14.7
- dev-greenkeeper-karma-phantomjs-launcher-1.0.0
- dev-greenkeeper-phantomjs-2.1.3
- dev-greenkeeper-d3-3.5.14
- dev-greenkeeper-phantomjs-2.1.2
- dev-greenkeeper-phantomjs-2.1.1
- dev-greenkeeper-eslint-plugin-react-3.16.1
- dev-greenkeeper-eslint-plugin-react-3.16.0
- dev-greenkeeper-webpack-1.12.12
- dev-greenkeeper-d3-3.5.13
- dev-greenkeeper-babel-core-6.4.5
- dev-greenkeeper-xml2js-0.4.16
- dev-greenkeeper-eslint-plugin-react-3.15.0
- dev-greenkeeper-webpack-1.12.11
- dev-greenkeeper-jquery-2.2.0
- dev-greenkeeper-react-dom-0.14.6
- dev-greenkeeper-react-0.14.6
- dev-greenkeeper-babel-core-6.4.0
- dev-greenkeeper-webpack-1.12.10
- dev-greenkeeper-extract-text-webpack-plugin-1.0.1
- dev-greenkeeper-karma-0.13.19
- dev-greenkeeper-karma-0.13.18
- dev-greenkeeper-eslint-plugin-react-3.14.0
- dev-greenkeeper-karma-phantomjs-launcher-0.2.3
- dev-greenkeeper-babel-loader-6.2.1
- dev-greenkeeper-karma-0.13.17
- dev-greenkeeper-extract-text-webpack-plugin-1.0.0
- dev-greenkeeper-react-dom-0.14.5
- dev-greenkeeper-react-0.14.5
- dev-greenkeeper-react-0.14.4
- dev-greenkeeper-react-dom-0.14.4
- dev-greenkeeper-eslint-plugin-react-3.13.1
- dev-greenkeeper-karma-0.13.16
- dev-greenkeeper-karma-phantomjs-launcher-0.2.2
- dev-greenkeeper-eslint-plugin-react-3.13.0
- dev-greenkeeper-bootstrap-sass-loader-1.0.10
- dev-greenkeeper-react-router-1.0.3
- dev-greenkeeper-babel-core-6.3.26
- dev-greenkeeper-css-loader-0.23.1
- dev-greenkeeper-eslint-plugin-react-3.12.0
- dev-greenkeeper-history-1.17.0
- dev-greenkeeper-babel-core-6.3.21
- dev-greenkeeper-d3-3.5.12
- dev-greenkeeper-d3-3.5.11
- dev-greenkeeper-babel-core-6.3.17
- dev-greenkeeper-history-1.16.0
- dev-greenkeeper-react-router-1.0.2
- dev-greenkeeper-history-1.15.0
- dev-greenkeeper-history-1.14.0
- dev-greenkeeper-babel-core-6.3.15
- dev-greenkeeper-eslint-plugin-react-3.11.3
- dev-greenkeeper-react-router-1.0.1
- dev-greenkeeper-babel-core-6.3.13
- dev-greenkeeper-babel-core-6.3.2
- dev-greenkeeper-jasmine-core-2.4.1
- dev-greenkeeper-jasmine-2.4.1
This package is auto-updated.
Last update: 2024-09-04 18:01:30 UTC
README
此软件是一款可视化指标和源代码的工具。我们与客户一起使用此软件进行代码审查。

运行分析器需要相应的PHP工具,这些工具可以通过composer安装,并且可以使用便捷命令运行。您也可以在常规构建过程中运行这些工具。
为了显示指标,使用的是纯JavaScript / CSS堆栈,因此您可以在Jenkins等持续集成工具内构建和提供结果。这听起来可能有些奇怪,但即使对于包含80万行PHP代码的软件也工作得非常好。
如果您想改进、增强软件或只是修复一些烦人的错误,我们非常欢迎您这样做。不过,涉及到的技术堆栈并不简单(PHP、Symfony2、Ant、Babel、D3、Grunt、Jasmine、Karma、SASS、PhantomJs、React、React-Router、Underscore、Webpack)。适用于与此项目任何互动的《行为准则》适用——如果您觉得它被违反了,请与Kore联系。
设置
要使用此软件,涉及的步骤非常少。唯一的要求是当前版本的PHP。
运行以下命令以安装软件
git clone https://github.com/Qafoo/QualityAnalyzer.git cd QualityAnalyzer composer install
在下一步中,您可以使用类似以下内容分析一些软件
bin/analyze analyze src/php/
有关命令的更多信息,请参阅“用法”。此命令的结果可以在data/
文件夹中找到。
最后,您可以启动web服务器以查看结果
bin/analyze serve
四处浏览并享受数据吧!
用法
您开始分析某个项目或为工具提供现有分析文件的路径,例如代码覆盖率报告
bin/analyze analyze /path/to/source
使用默认命令,工具将分析源代码本身。对于PHPMD或PDepend等工具,这非常有意义,因为这些工具已经知道每个工具应使用哪些选项。
有一些报告我们无法自行生成,例如测试中的代码覆盖率。您可以告诉工具在哪里可以找到某些文件,以确保它们可用并可使用
bin/analyze \ --coverage=/path/to/clover.xml \ --tests=/path/to/junit.xml \ analyze /path/to/source
您还可以指定为所有其他工具已生成的文件。但如果某些报告格式错误或某些选项缺失,可视化可能会表现得异常。我们尚未正确验证这一点。
要查看HTML格式的报告,请运行bin/analyze bundle /path/for/generated/html,然后用浏览器打开/path/for/generated/html/index.html。
忽略子目录
您可能还想告诉工具哪些目录要忽略。如果您在源目录中有(大型)库,这一点尤为重要——您不想分析这些库。为此,您可以使用--exclude
选项。
bin/analyze \ --coverage=/path/to/clover.xml \ --tests=/path/to/junit.xml \ --exclude=libraries,vendor \ analyze /path/to/source
分析器完成后,使用bin/analyze serve
或类似方式使用浏览器访问index.html
并享受结果可视化。
排除分析器
您可能还希望故意排除某些分析器对代码的运行,例如,如果您不想分析您的git使用。为此,您可以使用--exclude_analyzers
选项。
bin/analyze \ --exclude_analyzers=git,gitDetailed \ analyze /path/to/source
要获取所有可用分析器的列表,请运行
bin/analyze list:analyzers
自定义工具
如果您想自定义工具执行,您始终可以自己运行所有工具并将现有结果文件传递给analyze
命令。一个执行此操作的自定义ant构建文件示例可以在这里找到:src/examples/customize.xml或src/examples/parallel.xml。
传递您自定义结果的参数,这些参数将不通过分析器命令本身运行工具是
--pdepend=PDEPEND Path to PDepend summary XML file --dependencies=DEPENDENCIES Path to PDepend dependencies XML file --phpmd=PHPMD Path to mess detector (PMD / PHPMD) XML file --checkstyle=CHECKSTYLE Path to checkstyle violations (PHP Code Sniffer) XML file --cpd=CPD Path to C&P violations (PHP Copy Paste Detector) XML file --phploc=PHPLOC Path to PHPLoc result XML file
请随意通过创建pull request提供使用不同构建环境的示例。
构建与开发软件
质量分析器的构建系统基于ant。您必须安装ant >= 1.8。为了使用它,您首先应该初始化包含构建公用的子模块
git submodule update --init
为了开发质量分析器,我们严重依赖于JavaScript构建栈。为此,您必须安装node和npm。所有其他必需的工具将由构建工具安装。要将项目设置为开发模式,请运行
echo env=dev > environment.local
只要您不再从environment.local
文件中删除此行或将它改为prod
,所有开发工具和库都将安装并使用。这也意味着JavaScript和CSS将通过诸如ant serve
之类的命令进行编译。
运行测试
您可以通过执行ant
来运行测试。
它将通过Karma & Jasmine为JavaScript栈的部分运行测试,并通过PHPUnit测试PHP栈(一旦我们有)。
构建CSS & JavaScript
项目使用ECMAScript 6并使用Babel进行转译。因此,我们在客户端工作时需要更新bundle.js。这在进行项目准备时完成,但也可以通过以下命令持续执行
ant watch
这还将编译项目中的SASS和Bootstrap文件到单个CSS文件中。
尝试项目
如果您想尝试项目,您可以使用任何Web服务器托管根目录。Web服务器应将所有未知资源的请求重写到index.html文件,该文件使用JavaScript进行路由。
为了方便起见,我们包含了使用PHP内置Web服务器的有效服务器设置。您可以使用以下命令启动它
ant serve
生成捆绑文件
以下任务确保捆绑文件已生成、压缩和提交
ant deploy
使用此命令更新分发文件。
它将首先运行package
任务(当然是在运行所有测试之后)。如果assets/
文件夹中有更改,则这些更改将被提交,然后将当前的开发状态推送到。