Sonar和PHPMD:如何排除目录

时间:2013-03-05 13:59:57

标签: php static sonarqube analysis phpmd

我正在尝试Sonar,我在php项目中遇到了一些问题。

我必须做多模块才能获得至少php和js分析。

这是我的sonar-project.properties:

sonar.projectKey = XXXX sonar.projectName = XXXX sonar.projectVersion = 1.0

sonar.sourceEncoding=UTF-8
sonar.sources=
sonar.language=php
sonar.exclusions=htdocs/libraries/externals/**
sonar.phpCodesniffer.skip=true

sonar.modules=php-module,js-module

# PHP module
php-module.sonar.projectName=PHP Module
php-module.sonar.language=php
php-module.sonar.sources=
php-module.sonar.projectBaseDir=htdocs
php-module.sonar.exclusions=libraries/externals/**

# JavaScript module
js-module.sonar.projectName=JavaScript Module
js-module.sonar.language=js
js-module.sonar.sources=js
js-module.sonar.projectBaseDir=htdocs

但是当我运行声纳跑步者时,我得到了这个错误:

Exception in thread "main" org.sonar.runner.RunnerException: org.sonar.api.utils.SonarException: PHPMD execution failed with returned code '1'. Please check the documentation of PHPMD to know more about this failure

并且PHPMD错误是

 The parser has reached an invalid state near line "32" in file "/var/www/vhosts/dev3.xxxx.local/htdocs/libraries/externals/AvaTax4PHP/classes/ATConfig.class.php". Please check the following conditions: The keyword "parent" was used as type hint but the class "ATConfig" does not declare a parent.

但是,如果我在项目和模块中排除了dir库,为什么会发生这种情况呢?

我是否必须向PHPMD指定另一个排除列表?

2 个答案:

答案 0 :(得分:3)

对于PHPMD(例如,与PHP CodeSniffer一样),您必须指定单独的排除模式。您可以使用PHPMD的--exclude参数。

我花了一些时间来弄明白,但您可以使用sonar-project.properties文件中的以下设置设置PHPMD的命令行参数:

sonar.phpPmd.argumentLine=--exclude libraries/externals

答案 1 :(得分:1)

您可以参阅此常见问题解答条目,了解如何实现目标:http://docs.codehaus.org/display/SONAR/PHP+Plugin+FAQ#PHPPluginFAQ-HowdoIpreventexternaltoolsfromanalyzingsomesourcefiles

顺便说一句,你应该声明:

php-module.sonar.sources=.

,而不是:

php-module.sonar.sources=