2016-07-05 14 views
3

我試圖使用sonar-ws-5.6.jar獲取特定項目中未解決的錯誤和漏洞的總數。Sonar WS:如何使用Sonar Webservice獲取未解決的總計錯誤數

我試圖將類型作爲BUG傳遞給搜索查詢。但我仍然得到所有未解決的問題。它沒有采用參數類型。

如何使用Webservice獲取確切數量的錯誤和漏洞?

這裏是我的代碼連接到聲納和獲取數據。

import java.util.ArrayList; 
import java.util.List; 

import org.sonarqube.ws.Issues.SearchWsResponse; 
import org.sonarqube.ws.client.HttpConnector; 
import org.sonarqube.ws.client.WsClient; 
import org.sonarqube.ws.client.WsClientFactories; 
import org.sonarqube.ws.client.issue.SearchWsRequest; 

public class SonarTest { 
    static String resourceKey = "com.company.projectname:parent"; 
    public static void main(String[] args) {     
     try {  
      // Get Issue 
      HttpConnector httpConnector = HttpConnector.newBuilder().url("http://localhost:9000").credentials("admin", "admin").build(); 
      SearchWsRequest issueSearchRequest = new SearchWsRequest(); 
      issueSearchRequest.setPageSize(1000); 
      issueSearchRequest.setResolved(false); 
      List<String> bugTypesList = new ArrayList<String>(); 
      bugTypesList.add("BUG"); 
      issueSearchRequest.setTypes(bugTypesList); 
      WsClient wsClient = WsClientFactories.getDefault().newClient(httpConnector); 
      SearchWsResponse issuesResponse = wsClient.issues().search(issueSearchRequest); 
      System.out.println(issuesResponse.getIssuesList()); 

      System.out.println("DONE"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

注:我使用sonarqube 5.6和Java 1.8

截至目前我循環響應並獲得

List<Issue> issueList = issuesResponse.getIssuesList(); 
int bugCount = 0; 
for(Issue issue : issueList){ 
    if(issue.getType() == RuleType.BUG){ 
      bugCount ++; 
    } 
} 

回答

1

我使用ComponentWsRequest得到的總數計錯誤

我們可以通過度量密鑰來獲得所需的值。

這裏是代碼給我的錯誤總數。

List<String> VALUE_METRIC_KEYS = Arrays.asList("bugs"); 
ComponentWsRequest componentWsRequest = new ComponentWsRequest(); 
componentWsRequest.setComponentKey(resourceKey); 
componentWsRequest.setMetricKeys(VALUE_METRIC_KEYS); 
ComponentWsResponse componentWsResponse = wsClient.measures().component(componentWsRequest); 
List<Measure>measureList = componentWsResponse.getComponent().getMeasuresList(); 
for(Measure measure : measureList){ 
     System.out.println(measure); 
} 

我們可以用任何度量鍵來獲取各自的值:

「quality_gate_details」, 「reliability_rating」, 「reliability_remediation_effort」, 「漏洞」, 「security_rating」, 「security_remediation_effort」 「code_smells」, 「sqale_rating」, 「sqale_debt_ratio」, 「effort_to_reach_maintainability_rating_a」, 「sqale_index」, 「ncloc」, 「線」, 「聲明」, 「功能」, 「類」, 「文件」, 「目錄」,」 duplicated_lines_density 「 」duplicated_blocks「, 」duplicated_lines「, 」duplicated_files「, 」複雜性「, 」function_complexity「, 」file_complexity「, 」class_complexity「, 」comment_lines_density「, 」comment_lines「, 」public_api「,」 public_docum ented_api_density」, 「public_undocumented_api」, 「違規行爲」, 「open_issues」, 「reopened_issues」, 「confirmed_issues」, 「false_positive_issues」, 「wont_fix_issues」

1

好吧,你抓住了一個錯誤!我使用您的代碼,發現types參數未正確從WSClient傳遞到實際的HTTP查詢。

因此,感謝您分享您的問題,SONAR-7871已打開,以解決它。

+0

感謝您的回覆。我無法在搜索方法中找到setParam(「types」,inlineMultipleParamValue(request.getTypes()))。可能是這個問題。 – Unknown

相關問題