leovie/clover-crap-check

v1.0.3 2023-04-27 07:54 UTC

This package is auto-updated.

Last update: 2024-09-27 10:46:45 UTC


README

此工具读取phpunit生成的clover.xml报告,并检查所有文件是否有一个CRAP索引低于指定的阈值。

安装

PHAR(推荐)

您可以从https://github.com/LeoVie/clover-crap-check/releases/latest下载最新的PHAR。

Composer

作为开发依赖项通过composer安装

composer require --dev leovie/clover-crap-check

使用

此工具有两个必需的参数

  1. clover.xml文件的路由,由phpunit生成。路径可以是绝对路径或相对于当前工作目录的相对路径。
  2. 可接受的CRAP索引阈值(最小1

使用phpunit生成clover.xml文件,然后运行clover-crap-check

vendor/bin/phpunit --coverage-clover clover.xml
vendor/bin/clover-crap-check clover.xml 50

这将生成如下所示的输出

 [ERROR] The following methods are crappier than allowed

 ------------ -------- ------
  Class        method   CRAP
 ------------ -------- ------
  ClassA       m1       100    
  Foo\ClassB   m2       60     
 ------------ -------- ------ 

基线功能

当与遗留代码一起使用clover-crap-check时,可能您不想将所有文件重构成低CRAP索引。同时,您希望新代码尽可能少地包含CRAP。

要使用clover-crap检查实现这一点,有一个基线功能。

1. 生成基线

除了必需的参数外,请通过选项--generate-baseline传递一个路径,指定基线文件应该存储的位置。路径可以是绝对路径或相对于当前工作目录的相对路径。

vendor/bin/clover-crap-check clover.xml 50 \
  --generate-baseline=baseline.json

这将运行clover-crap-check并生成一个基线文件,其中包含所有CRAP索引超过定义阈值(本例中为50)的文件。

基线文件如下所示

[
  {
    "classFQN": "ClassA",
    "name": "m1",
    "crap": 100
  },
  {
    "classFQN": "Foo\\ClassB",
    "name": "m2",
    "crap": 60
  }
]

2. 使用基线

生成基线后,您可以在下一次运行中使用它。为此,只需通过选项--baseline将基线文件的路径传递给工具。路径可以是绝对路径或相对于当前工作目录的相对路径。

vendor/bin/clover-crap-check clover.xml 50 \
  --baseline=baseline.json

在这种情况下,clover-crap-check不应报告任何内容。

现在,当您添加CRAP索引超过定义阈值(本例中为50)的新文件时,您将收到通知。同样,当基线文件中的文件比生成基线时的CRAP索引更高时,也会发生这种情况。

这将生成如下所示的输出

 [ERROR] The baseline is not up to date

 [ERROR] The following methods are newly occurring

 -------- -------- ------ 
  Class    method   CRAP  
 -------- -------- ------ 
  ClassC   m3       70     
 -------- -------- ------ 

 [ERROR] The following methods got crappier

 -------- -------- ------ 
  Class    method   CRAP  
 -------- -------- ------ 
  ClassA   m1       65    
 -------- -------- ------ 

3. 保持基线更新

您可以选择一次性生成基线,然后不再修改它。这非常有用,当基线中有非常多的文件,并且您不想在一段时间内担心改进遗留代码时。

但是,您也可以选择在文件变得更少CRAP时得到通知。为此,您可以向clover-crap-check传递选项--report-less-crappy-methods

vendor/bin/clover-crap-check clover.xml 50 \
  --baseline=baseline.json \
  --report-less-crappy-methods

这将为您提供提示,例如,当基线生成时CRAP索引为100的文件现在CRAP索引为60时。

 [ERROR] The baseline is not up to date

 [INFO] The following methods got less crappy

 -------- -------- ------ 
  Class    method   CRAP  
 -------- -------- ------ 
  ClassA   m1       60     
 -------- -------- ------ 

然后您可以手动更新基线文件中的CRAP值(本例中为60)。

还有一个选项--report-vanished-methods。当启用时,clover-crap-check将通知您基线中不再出现的方法或CRAP索引现在低于您的阈值的方法。

 [ERROR] The baseline is not up to date

 [INFO] The following methods vanished

 -------- -------- ------ 
  Class    method   CRAP  
 -------- -------- ------ 
  ClassA   m1       100    
 -------- -------- ------