从我的java程序中调用Sonar

时间:2013-05-06 09:47:12

标签: java sonarqube sonar-runner

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

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

}

2 个答案:

答案 0 :(得分:3)

您可以从Java程序中做两件事:

  • 启动声纳分析:查看Sonar Ant Task(方法#launchAnalysis),了解如何轻松完成此操作。

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

答案 1 :(得分:-1)

关于" java.lang.NoClassDefFoundError:org / apache / http / client / methods / HttpRequestBase"你需要这种依赖(Sonar 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无法通过类路径识别