0

我正在为 SonarQube 5.6 开发一个插件,并且由于 InputFile 对象而无法创建 Issuable 对象。在传感器执行时,我可以看到所有通过调用索引(通过迭代)的文件

Iterator<InputFile> files = fileSystem.inputFiles(p.and(p.hasLanguage("java"), p.hasType(InputFile.Type.MAIN))).iterator();

但是当我尝试使用

java.io.File file = new java.io.File(path);
// file.exists() returns true
InputFile inputFile = fileSystem.inputFile(fileSystem.predicates().is(file));

“输入文件”为空。即使我尝试编写路径,它也会使用以下指令返回 null:

InputFile inputFile = fileSystem.inputFile(fileSystem.predicates().hasPath(file.getAbsolutePath()));

这是我得到的日志,真的很奇怪:

[INFO] File exists.
[INFO] That file AbsolutePath: C:\Program Files (x86)\Jenkins\workspace\soapui\soapui\src\main\java\com\eviware\soapui\impl\wsdl\support\wsdl\AbstractWsdlDefinitionLoader.java
[ERROR] File "C:\Program Files (x86)\Jenkins\workspace\soapui\soapui\src\main\java\com\eviware\soapui\impl\wsdl\support\wsdl\AbstractWsdlDefinitionLoader.java" is not indexed. Skip it.

烦人的事实是,这曾经有效,但现在不知何故,不更改此方法(仅用于返回 InputFile 对象)。我承认问题可能出在请求的 FilePredicates 上。任何帮助表示赞赏。提前致谢。

编辑:忘了提到一个奇怪的事实,在使用这个完全相同的指令显示所有索引文件之后,如果我再次尝试使用它(为了访问我正在寻找的 InputFile),返回的迭代器不能提前一次:

Iterator<InputFile> files = fileSystem.inputFiles(p.and(p.hasLanguage("java"), p.hasType(InputFile.Type.MAIN))).iterator();
4

1 回答 1

0

因此,插件按预期停止工作而源代码没有变化的原因是,与以前不同,我试图对带有一些子项目(其上的模块)的项目进行分析。显然这是我没有意识到的 SonarQube 本身的一个问题(或限制)。此限制记录在以下Jira 票证中。

因此,在我将根项目拆分为单个项目后,一切都像以前一样顺利。

真正奇怪的事实是 SonarQube 引擎的行为,因为它索引了所有项目的所有文件,但随后无法访问它们。

于 2016-06-20T10:23:58.760 回答