我正在为 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();