Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Sonarqube向我提供已删除代码的问题,无法筛选问题_Java_Sonarqube - Fatal编程技术网

Java Sonarqube向我提供已删除代码的问题,无法筛选问题

Java Sonarqube向我提供已删除代码的问题,无法筛选问题,java,sonarqube,Java,Sonarqube,我正试图从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/jav

我正试图从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,所以可能我遗漏了一些东西

你在哪里看到q是一个有效的参数?这不是我要看的,这可能就是为什么你会得到随机结果

您需要改用componentKeys,尽管右侧不仅仅是文件名;相反,它将类似于projectKey:path/to/file,因此您需要了解它的详细信息


关于您从已删除文件中获得的问题,已关闭的问题将在30天后从数据库的默认值中清除。由于您的查询当前正在随机抽取一组问题,不受状态限制,这就解释了为什么会看到这些重影问题。

为了避免任何重复调查,这里也讨论了: