簡體   English   中英

如何在自定義SonarQube插件中對未測試的文件強制執行0%的代碼覆蓋率?

[英]How to force 0% code coverage on untested files in custom SonarQube plugin?

我正在嘗試開發SonarQube插件。 我當前的問題是代碼覆蓋率。 與許多其他語言插件一樣,我必須解析一個XML報告,該報告僅包含有關測試觸及的文件的覆蓋率信息,因此覆蓋率很高,因為所有未觸及的文件都丟失了。

現在,我嘗試使用以下代碼為那些未經測試的文件強制設置0%的覆蓋率:

for (String token : line.split(" ")) {
    if (ArrayUtils.contains(CONDITION_KEYWORDS, token)) {
        keywords++;
    }
}
coverageMeasuresBuilder.setHits(lineNumber, 0);
if (keywords > 0) {
    coverageMeasuresBuilder.setConditions(lineNumber, (int) Math.pow(2, keywords), 0);
}

每行都會執行此代碼,並且在所有行之后都會保存度量。 這可以按預期工作(覆蓋率現在更正確),但是在SonarQube Web界面上發生了奇怪的事情:如果我使用上面的代碼並單擊“單元測試覆蓋率”,則僅顯示強制覆蓋率為0%的文件,並且這些文件具有真實覆蓋范圍的信息不再列出。 如果不使用此代碼,則只能看到測試涉及的文件。

有人可以幫我嗎?

由於沒有其他選擇,我們在產品系統中使用了該插件。 昨天,一些開發人員要求排除某些對象,然后突然顯示了所有軟件包。 我猜想SonarQube有一些可以在coverage視圖中顯示的軟件包限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM