【问题标题】:Sonarqube gives me issues of deleted codes and can't filter issuesSonarqube 给了我删除代码的问题并且无法过滤问题
【发布时间】:2018-07-16 19:35:08
【问题描述】:

我正在尝试使用此代码从 sonarqube 上的文件名中获取问题

public class SonarqubeServiceImpl implements SonarqubeService {

private final String SONAR_URL = "http://localhost:9000/";
private final String PROJECT_KEY = "refactor2";
private final String SRC_FOLDER = "src/main/java/com/uca/refactor2/activities";
private String EXECUTE_SONAR;
private String GET_ISSUES_URL = SONAR_URL + "api/issues/search?q=";
private static String POM_PATH = "pom.xml";
private RestTemplate restTemplate = new RestTemplate();

private InvocationRequest request;
private Invoker invoker;

@PostConstruct
private void init() {
    System.out.println("PostConstruct");
    buildSonarCommand();
    configureMavenWithSonar();
}

@Override
public void runAnalysis() throws MavenInvocationException {
    // Assuming everything is set up (done in init)

    invoker.execute(request);
}

@Override
public IssuesResponse getIssuesFromFileName(String fileName) {
    String URL = GET_ISSUES_URL + fileName;
    return restTemplate.getForObject(URL, IssuesResponse.class);
}

private void configureMavenWithSonar() {
    request = new DefaultInvocationRequest();
    request.setPomFile(new File(POM_PATH));
    request.setGoals(Collections.singletonList(EXECUTE_SONAR));

    invoker = new DefaultInvoker();
    // Set maven home in case env variables are not set
    // (and using own installation)
    invoker.setMavenHome(new File("apache-maven-3.5.2"));
}

private void buildSonarCommand() {
    StringBuilder builder = new StringBuilder();
    builder.append("sonar:sonar ");
    builder.append(String.format("-Dsonar.host.url=%s ", SONAR_URL));
    builder.append(String.format("-Dsonar.projectKey=%s ", PROJECT_KEY));
    builder.append(String.format("-Dsonar.sources=%s ", SRC_FOLDER));
    EXECUTE_SONAR = builder.toString();
        }
   }

这段代码有两个问题。第一个是这是从很久以前删除的源文件夹的文件名中检索问题,我不明白为什么,因为如果我在 localhost/9000 上输入 sonarqube 本地 web api,则该代码不存在

第二个也是最重要的,我正在尝试从文件名中获取问题,但是 sonarqube 给了我来自所有项目的问题(即使是我有多个项目的项目),包括我上面提到的第一个问题中删除的代码.

我正在获取此 URL 的问题

http://localhost:9000/api/issues/search?q=" + fileName;

我正在使用 SonarQube 版本:6.7.1

这是我第一次使用 sonarqube,所以也许我错过了什么

【问题讨论】:

标签: java sonarqube


【解决方案1】:

您在哪里看到q 是有效参数?我在看的不是the list,这可能就是你得到随机结果的原因。

您需要改用componentKeys,尽管右侧不仅仅是文件名;取而代之的是 projectKey:path/to/file 这样的东西,所以你需要弄清楚它的细节。

关于您在已删除文件上恢复的问题,已关闭的问题会在 30 天(默认值)后从数据库中清除。由于您的查询目前正在提取一组随机的问题,不受状态的限制,这解释了看到这些“幽灵”问题。

【讨论】:

    猜你喜欢
    • 2011-01-17
    • 2021-01-10
    • 1970-01-01
    • 2023-03-31
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多