3

我已经在我的本地主机上安装了声纳服务器。而且我能够运行和分析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);
    }
  }

}
4

2 回答 2

3

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

  • 启动 Sonar 分析:查看Sonar Ant 任务(在方法#launchAnalysis 中)以了解如何非常轻松地做到这一点。

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

于 2013-05-06T09:59:41.450 回答
-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

于 2014-10-07T14:20:24.457 回答