2013-05-06 62 views
3

我已經在本地主機上安裝了sonar服務器。我可以運行和分析java項目。即使我在eclipse上安裝了sonar插件。從我的java程序調用Sonar

但我想從我的java項目(如簡單的java類)運行聲納,並應檢索聲納結果並能夠將其保存在數據庫中。我搜索了該教程,但無法找到答案。請任何人都可以提供示例代碼或資源,以便我可以獲取知識來克服此任務。

import javax.annotation.Resource; 


import org.sonar.wsclient.Host; 
import org.sonar.wsclient.Sonar; 
import org.sonar.wsclient.connectors.HttpClient4Connector; 
import org.sonar.wsclient.services.*; 

public class SonarTask1{ 

public static void main(String[] args) { 
    //public void Hi(){ 
    String url = "http://localhost:9000"; 
    String login = "admin"; 
    String password = "admin"; 
    Sonar sonar = new Sonar(new HttpClient4Connector(new Host(url, login, password))); 

    String projectKey = "java-sonar-runner-simple"; 
    String manualMetricKey = "burned_budget"; 

    sonar.create(ManualMeasureCreateQuery.create(projectKey, manualMetricKey).setValue(50.0)); 

    for (ManualMeasure manualMeasure : sonar.findAll(ManualMeasureQuery.create(projectKey))) { 
     System.out.println("Manual measure on project: " + manualMeasure); 
    } 
    } 

} 

回答

3

有兩件事情,你可以從一個Java程序做的:

  • 推出聲納分析:窺視Sonar Ant Task(在方法#launchAnalysis)來看看如何做到這一點很容易。

  • 檢索來自聲納服務器的結果:檢查Web API爲目的

+0

我可以知道哪些是我需要的依賴關係。上面提到的「」web服務客戶端API「中的依賴關係沒有下載到我的maven倉庫中 – user2215139 2013-05-06 11:34:51

+0

您可能忘記了將版本添加到依賴關係中(版本更改時未在文檔中指定),可以使用版本3.5.1 – 2013-05-06 12:56:00

+0

ya我已經添加了sonar-ws-client 3.5.1和commons-httpclient 3.1作爲外部的jar文件,並且編寫了一個上面更新的程序,但是得到了類似於「java.lang.NoClassDefFoundError:org/apache/http/client/methods/HttpRequestBase \t at com.vxl.appanalytix.controllers.controllerClasses.SonarTask1.main(SonarTask1.java:17) 導致:java.lang.ClassNotFoundException:org.apache.http.client.methods.HttpRequestBase。 – user2215139 2013-05-07 04:28:05

-1

關於 「java.lang.NoClassDefFoundError:組織/阿帕奇/ HTTP /客戶/方法/ HttpRequestBase」 你需要這個依賴(聲納WS使用它們)

<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpclient</artifactId> 
    <version>4.3.1</version> 
</dependency> 

<dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging</artifactId> 
    <version>1.1.1</version> 
</dependency> 


<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>jcl-over-slf4j</artifactId> 
    <version>1.7.7</version> 
</dependency> 

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-simple</artifactId> 
    <version>1.6.2</version> 
</dependency> 

而且,我使用Eclipse IDE,更新Maven項目時,檢查快照/版本的強制更新推薦的,因爲不知何故org.apache.httpclient不能夠被由classpath識別