SonarQube FileSystem.inputFile在索引文件访问时返回null

时间:2016-06-15 13:07:31

标签: java sonarqube sonarqube-web

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

&#34; INPUTFILE&#34;一片空白。即使我尝试编写路径,它也会使用以下指令返回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上。 任何帮助表示赞赏。提前谢谢。

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

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

1 个答案:

答案 0 :(得分:0)

所以碰巧插件停止工作的原因并没有改变源代码是因为与以前不同,我试图对一个带有一些子项目(模块)的项目进行分析。显然这是SonarQube本身的一个问题(或限制),我没有意识到。此限制记录在followinbg Jira ticket中。

因此,在将根项目拆分为单个项目后,所有内容都像以前一样顺利进行。

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