配置Sonar以从Maven pom.xml中排除文件
我有一个在maven中配置的项目,代码分析由SonarQube完成。
我正在尝试在pom.xml文件中配置SonarQube以从代码分析中排除一些文件。 这些文件可以通过它们的类名来标识,它们在扩展名之前包含下划线字符(它们是元模型类)。 下面我给出了我尝试排除它们的pom.xml文件的一部分:
org.codehaus.mojo sonar-maven-plugin 2.2 src/main/java file:**/src/main/java/**/*_.*
但是,上面的代码不起作用。 有没有办法从我的pom.xml文件配置SonarQube以在分析源代码时忽略这些文件?
先谢谢你。
必须将声纳排除(如其他声纳属性) 添加到 POM文件的
部分 。 像这样(例如从当前项目中排除jOOQ自动生成的代码):
UTF-8 http://www.example.com/ jdbc:postgresql://www.example.com/sonar org.postgresql.Driver sonar sonar org/binarytherapy/generated/**/*, **/GuiceBindComposer.java reuseReports
提到的类/包从Sonar的所有静态分析中排除给定的类,但
排除给定的类/包,仍然可以分析其他参数。
**/domain/**/*, **/pojos/*
参考:
资源:
- https://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus#NarrowingtheFocus-IgnoreCodeCoverage
- https://docs.sonarqube.org/display/SONAR/Analysis+Parameters#AnalysisParameters-Exclusions/Inclusions
- https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven#AnalyzingwithSonarQubeScannerforMaven-ExcludingamodulefromSonarQubeanalysis
在接受答案中显示的Sonar排除项时,请确保从SonarQube文档中遵循此模式方法:
相对路径基于组件的完全限定名称(如下所示):
src/main/java/org/sonar/batch/phases/AbstractPhaseEvent.java
示例 :
# Exclude all classes ending with "Bean" # Matches org/sonar.api/MyBean.java, org/sonar/util/MyOtherBean.java, etc. **/*Bean.java # Exclude all classes in the "src/main/java/org/sonar" directory # Matches src/main/java/org/sonar/MyClass.java, src/main/java/org/sonar/MyOtherClass.java # But does not match src/main/java/org/sonar/util/MyClassUtil.java src/main/java/org/sonar/* # Exclude all files in the "bank" directory and its sub-directories # Matches bank/ZTR00021.cbl, bank/data/CBR00354.cbl, bank/data/REM012345.cob bank/**/* # Exclude all COBOL programs in the "bank" directory and its sub-directories whose extension is .cbl # Matches bank/ZTR00021.cbl, bank/data/CBR00354.cbl bank/**/*.cbl
因此,如果要排除以“Bean”结尾的所有类以及“src / main / java / org / sonar”目录中的所有类(但不在其子目录中),请将以下sonar.exclusions
属性添加到pom的properties
:
... **/*Bean.java,src/main/java/org/sonar/*
我使用声纳来分析PHP代码库。
和
没有做到这一点。 我的解决方案是 – 我没有指定排除项,而是最终指定了包含目录,如下所示:
......... ./app/models,./app/controllers .........