【问题标题】:SonarQube FileSystem.inputFile returns null on indexed file accessSonarQube FileSystem.inputFile 在索引文件访问时返回 null
【发布时间】:2016-10-16 14:58:40
【问题描述】:

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

【问题讨论】:

  • 能否提供sensorContext.filesystem().baseDir()的值?这可能是区分大小写的问题。内部文件由相对路径索引。因此,当您通过绝对路径查询时,我们正在使用 baseDir 重建完整路径。
  • baseDir() 的值是:C:\Program Files (x86)\Jenkins\workspace\soapui 对我来说,这确实是正确的目录。那么你是否建议我在创建 File 对象时给出的路径应该是相对于这个 baseDir 而不是绝对路径(就像我现在发送的那样)?
  • 经过一番挖掘(以及两天的工作使我的头撞到键盘上),我意识到这个问题可能与 SonarQube (jira.sonarsource.com/browse/SONAR-6724) 的这个问题有关,因为我试图分析的项目包含一组子模块(而不是之前被正确分析的子模块)。这有意义吗?

标签: java sonarqube sonarqube-web


【解决方案1】:

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

所以在我将根项目拆分为单独的项目后,一切都像以前一样顺利。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 2020-11-15
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多