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 です。パスを作成しようとしても、次の命令で 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();