我正在为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();
答案 0 :(得分:0)
所以碰巧插件停止工作的原因并没有改变源代码是因为与以前不同,我试图对一个带有一些子项目(模块)的项目进行分析。显然这是SonarQube本身的一个问题(或限制),我没有意识到。此限制记录在followinbg Jira ticket中。
因此,在将根项目拆分为单个项目后,所有内容都像以前一样顺利进行。
真正奇怪的事实是SonarQube引擎的行为,因为它索引了所有项目的所有文件,但却无法访问它们。