我正在尝试扩展PHPCodeSniffer。我想要实现的是使用错误代码过滤报告。
为了解释这一点,我想有一条错误消息,如“错误代码:630,功能不兼容”
当我从命令行运行PHPCS时,我可以传递参数“错误代码”,以便根据它过滤报告。(仅显示错误代码的结果,如630)
e.g。
$ phpcs --standard=mystanderd /path/to/code/myfile.php --errorcode=603
并输出
FILE: /path/to/code/myfile.php
--------------------------------------------------------------------------------
FOUND 4 ERROR(S) AFFECTING 4 LINE(S)
--------------------------------------------------------------------------------
2 | ERROR | 603 | function is not compatible
20 | ERROR | 603 | function is not compatible
51 | ERROR | 603 | function is not compatible
88 | ERROR | 603 | function is not compatible
--------------------------------------------------------------------------------
获得它的最佳方式是什么?就我所理解的情况而言,我们只能基于环境过滤,因为它有内置的支持。
我想避免修改PHPCodeSniffer
的核心。我想要做的是编写一个包装器脚本,该脚本将接受来自CLI的参数并执行PHPCS捕获o / p并在抛出到控制台之前对其进行操作。但是,我认为这不是最佳解决方案
答案 0 :(得分:0)
使用grep和wc的bash脚本会浮现在脑海中。
答案 1 :(得分:0)
您也可以使用这样的PHP脚本(假设这个名为my_wrapper.php):
<?php
$legal_codes = array(
'603' => true
);
$f = fopen('php://stdin', 'r');
while ($line = fgets($f)) {
if (preg_match("/^\s*(\d+)\s*\|\s*([A-Z]+)\s*\|\s*(\d+)\s*\|\s*(.*)/", $line, $match)) {
$code = trim($match[3]);
if (!isset($legal_codes[$code])) {
continue;
}
}
echo $line;
}
?>
当这样调用时:
php my_wrapper.php < cs_out.txt
使用cs_out.txt:
FILE: /path/to/code/myfile.php
--------------------------------------------------------------------------------
FOUND 4 ERROR(S) AFFECTING 4 LINE(S)
--------------------------------------------------------------------------------
2 | ERROR | 601 | function is not compatible
20 | ERROR | 602 | function is not compatible
51 | ERROR | 603 | function is not compatible
88 | ERROR | 604 | function is not compatible
--------------------------------------------------------------------------------
生成如下输出:
FILE: /path/to/code/myfile.php
--------------------------------------------------------------------------------
FOUND 4 ERROR(S) AFFECTING 4 LINE(S)
--------------------------------------------------------------------------------
51 | ERROR | 603 | function is not compatible
--------------------------------------------------------------------------------
将通过命令行参数指定的$ legal_codes数组的键设置为my_wrapper.php留给读者练习。