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/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 local web api,代码就不存在了
第二,也是最重要的一点,我试图从文件名中获取问题,但sonarqube给了我所有项目的问题(即使是我有多个项目的项目),包括我上面提到的第一个问题中删除的代码
我正在获取此URL的问题
http://localhost:9000/api/issues/search?q=" + fileName;
我使用的是SonarQube版本:6.7.1
这是我第一次和sonarqube在一起,所以我可能错过了什么
# 1 楼答案
你在哪里看到
q
是一个有效的参数?我看的不是the list,这可能就是为什么你会得到随机结果你需要使用
componentKeys
,尽管右边不仅仅是文件名;取而代之的是类似于projectKey:path/to/file
的东西,所以你需要了解它的细节关于您从已删除文件中获得的问题,已关闭的问题将在30天后(默认值)从数据库中清除。由于您的查询目前正在随机抽取一组问题,不受状态的限制,这就解释了为什么会看到这些“幽灵”问题