【问题标题】:Where is the repository "Standards" of PHP CodeSniffer with the sonar PHP plugin?带有声纳 PHP 插件的 PHP CodeSniffer 的存储库“标准”在哪里?
【发布时间】:2014-02-05 14:15:43
【问题描述】:

我已经安装了SonarQube™PHP Plugin

我想添加一个新的 CodeSniffer 规则,就像在 http://docs.codehaus.org/display/SONAR/PHP+Custom+Coding+Rules 中指出的那样。

但是,我找不到包含现有规则(PEAR、Squiz、Generic...)的“标准”存储库的位置。所以我不知道我必须在哪里添加与我在声纳设置中定义的xml规则相对应的新文件。

也许我错过了一些东西,但我查看了 PHP 插件中的每个文件夹,但没有找到这个“标准”文件夹。我什至从插件的 .jar 文件中提取了内容,甚至查看了磁盘的其余部分,以防代码嗅探器存储库位于其他地方。

你能帮帮我吗?

谢谢。

【问题讨论】:

    标签: php sonarqube extend rules codesniffer


    【解决方案1】:

    标准文件夹属于 PHP_CodeSniffer 而不是 SonorCube。它位于 PHP_Codesniffer 安装中(这取决于您在计算机上安装 PHP_CodeSniffer 的方式)。如果您找到它,Standards 文件夹位于

    PHP_CodeSniffer/CodeSniffer/Standards/
    

    我的猜测是你想在 SonarCube 中执行一个规则。我不知道 SonarCube,但我确定您需要在某处配置 PHP_CodeSniffer 的路径。完成后,就像文档中所说的那样:

    <?xml version="1.0" encoding="UTF-8"?>
    <rules>
    
      <rule key="PEAR.Commenting.FileComment.TagIndent" priority="MAJOR">
        <!-- name, configKey, description are mandatory -->
        <name>Tag comment incorrectly indented</name>
        <configKey>TAG_INDENT</configKey>
        <description>@category tag comment incorrectly indented</description>
      </rule>
    
      <rule key="...>
        ...
      </rule>
    
    </rules>
    

    与:

           PEAR           Commenting         FileComment                   TagIndent
    <standard_folder>.<sniff_subfolder>.<sniff_file_without_sniff_suffix>.<error_name>
    

    要走的路是:

    1. 安装 PHP_Codesniffer(通过 Composer、Pear 或来自 Github 的普通版本)[1]
    2. 在 SonarCube 中设置 PHP_Codesniffer 的路径
    3. 配置规则

    [1]https://github.com/squizlabs/PHP_CodeSniffer

    【讨论】:

    • 感谢您回答我。
    • 但问题是我没有单独安装codesniffer,它包含在sonar php插件包中。而且这个插件不仅仅使用codesniffer,还检查了其他规则来分析php项目。这就是为什么使用这个插件似乎比在其他地方安装其他组件更有用。因此,我不完全了解声纳文档,因为我找不到标准代码嗅探器文件夹。
    • 正如您在此处看到的 [1],PHP_CodeSniffer 和其他工具作为 PHAR 文件包含在内。这是一个包含所有 PHP 文件的压缩文件。但您也可以看到,它建议您通过 PEAR 安装您自己的外部版本的程序。 [1]docs.codehaus.org/display/SONAR/Installing+PHP+Environment
    • 是的,这正是我十分钟前的想法,所以我打算在安装 pear 之后单独安装 PHP 代码嗅探器(我不想在我的服务器上安装所有这些,但它如果我想编辑这些代码嗅探器规则,我别无选择)。谢谢
    • 所以我安装了 PHP_code_sniffer。但是现在,即使像这样设置配置: sonar.phpCodeSniffer.analyzeOnly=true 和 sonar.phpCodeSniffer.reportPath=myfile.xml (我尝试直接在我的声纳项目属性中设置这些参数,如在声纳全局属性中并通过定义它在界面上),声纳不会从 xml 文件中检索这些结果,尽管 xml 文件中有错误,但声纳仪表板上不会出现错误/警告。似乎其他人也遇到了同样的问题:stackoverflow.com/questions/21582218/….
    【解决方案2】:

    我迟到了,但最新的 Sonar 现在使用自己的规则引擎,因此不再依赖 CodeSniffer。对我来说,这意味着我不能再在 Sonar 上运行我的 Symfony2 代码标准检查器,可悲...

    【讨论】:

      【解决方案3】:
      1. 从这里获取规则(PSR1、PSR2 或您自己的): http://docs.codehaus.org/display/SONAR/PHP+Custom+Coding+Rules
      2. 按照此处所述将它们复制并粘贴到 Codesniffer 插件自定义规则中: http://docs.codehaus.org/display/SONAR/PHP+Custom+Coding+Rules
      3. 按照 1 中的说明下载和恢复配置文件

      适用于 SonarQube 4.1.1

      【讨论】:

        猜你喜欢
        • 2015-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多