【问题标题】:extending phpcodesniffer to filter report based on error codes扩展 phpcodesniffer 以根据错误代码过滤报告
【发布时间】:2012-12-16 03:48:15
【问题描述】:

我正在尝试扩展 PHPCodeSniffer。我想要实现的是使用错误代码过滤报告。

为了解释这一点,假设我有一条错误消息,例如“错误代码:630,功能不兼容”

当我从命令行运行 PHPCS 时,我应该能够传递一个参数“错误代码”,以便根据它过滤报告。(仅显示错误代码的结果,例如 630)

例如

 $ 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 并在扔到控制台之前对其进行操作。但是,我认为这不是最好的解决方案.

【问题讨论】:

  • 如果您回答了迄今为止给出的答案,您可能会得到更多关于这个(和其他?)问题的答案......

标签: php pear codesniffer


【解决方案1】:

想到一个利用 grep 和 wc 的 bash 脚本。

【讨论】:

    【解决方案2】:

    您也可以使用这样的 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 留给读者练习。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      相关资源
      最近更新 更多