我有一個Java項目,我在Eclipse中開發並使用Maven構建。幾乎所有的源代碼包(in/src)都有相應的測試包(在/ tests中)。我希望我的SonarQube Maven構建只分析源包並忽略測試包。從我在同一水平/ src和/測試文件系統捆綁pom.xml
,我有類似下面的內容:爲什麼SonarQube不尊重我的排除?
...
<profile>
<id>sonar</id>
...
<properties>
<sonar.skippedModules>**/tests/**</sonar.skippedModules>
</properties>
</profile>
...
<modules>
<module>../src/com.company.bundleA</module>
<module>../tests/com.company.bundleA.test</module>
...
</modules>
當我運行構建,測試包的源代碼包括在SonarQube分析中。或者,我嘗試使用sonar.test.exclusions
和sonar.exclusions
屬性代替sonar.skippedModules
。通過排除屬性,控制檯輸出顯示排除是被讀取的,但從不匹配任何文件到我嘗試使用的表達式。我也嘗試在SonarQube Web服務器UI的Settings部分中設置這些屬性,併產生了包含測試文件的相同結果。我能夠成功從分析中排除測試包的唯一方法是將它們從模塊列表中刪除,或將它們包括在我的運行配置的目標字段中的-Dsonar.skippedModules
標誌之後。但是,對於包含80多個捆綁包和140,000行代碼的項目,這不是一個可維護的解決方案。 pom.xml
文件的組織有什麼問題嗎?這是我最好的猜測。
我用'sonar.skip'替換了'sonar.skippedModules'並取消了對通配符的使用。在'sonar.skip'中,我試過'com.company.bundleA.test,com.company.bundleB.test'和'../tests/com.company.bundleA.test,../tests/ com.company.bundleB.test'沒有成功。還有什麼我應該考慮的嗎? –
IIRC,sonar.skip必須設置在您要跳過的每個模塊的POM中。 –