Sonarqube 修复的 Junit 测试

Junit test for Sonarqube repair

我正在使用 INRIA 的 spoon 为一些特定的 sonarqube 错误编写一个自动修复系统。我想为我的修复系统编写 Junit 测试来检查错误是否已经修复。我想做这样的事情:

X = file;
Y = repair(X);
assert(! hasSonarqubeBug(Y));

Sonarqube 分析仅适用于完整项目,不适用于单个文件。 Sonarlint 确实会分析单个文件,但我不知道是否有办法用 sonarlint 编写这样的测试。

通过 Web api 您可以检索 Sonarqube 中任何类型的组件(包括文件)的问题。 来自网络 api 文档 (http(s)://sonarhost:9000//web_api/api/issues) 对于
GET api/issues/search 参数 componentKeys:

Comma-separated list of component keys. Retrieve issues associated to a specific list of components (and all its descendants). A component can be a portfolio, project, module, directory or file.

--评论后编辑--
要在更改源代码后发现可能出现的新问题,您需要使用 Sonarqube 扫描仪进行构建和代码扫描。 除了 Sonarlint IDE 插件,没有本地预览分析(sonar.analysis.mode=扫描仪预览已弃用,很快就会消失)。
也许 f.e 有某种黑客攻击。 headless Eclipse 和 Sonarlint 插件(假设您使用 Eclipse,不知道 headless 与其他 IDEs)!?
您还可以使用不再开发或支持的 Sonarlint CLI, 但它仍然可用 here,尽管它可能不适用于较新的 Sonarqube 版本。

TL;DR
这取决于您的 Sonarqube 版本,使用时:
SQ 5.6.x,你可以使用带有sonar.analysis.mode=preview的扫描仪,这不会 将结果发布到 SQ 服务器。
SQ 6.x 及更高版本,您可以尝试 Sonarlint CLI 是否仍然有效或尝试使用 无头 Eclipse。 否则,您必须 运行 在 Eclipse 中进行单元测试并使用 Sonarlint 插件进行检查。