从我的java程序中调用Sonar

我在我的localhost上安装了声纳服务器。 我能够运行和分析java项目。 甚至我已经在eclipse上安装了声纳插件。

但我想从我的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); } } } 

您可以通过Java程序执行以下两项操作:

  • 启动声纳分析:查看Sonar Ant任务 (在#launchAnalysis方法中),看看如何轻松完成。

  • 从Sonar服务器检索结果:检查Web API以实现此目的

关于“java.lang.NoClassDefFoundError:org / apache / http / client / methods / HttpRequestBase”你需要这个依赖项(Sonar WS使用它们)

  org.apache.httpcomponents httpclient 4.3.1   commons-logging commons-logging 1.1.1   org.slf4j jcl-over-slf4j 1.7.7   org.slf4j slf4j-simple 1.6.2  

另外,我建议在使用Eclipse IDE时,更新maven项目并检查快照/版本的强制更新,因为org.apache.httpclient无法通过类路径识别