in runner/src/main/kotlin/org/jetbrains/idea/inspections/runners/FileInfoRunner.kt [23:66]
override fun analyze(project: Project, parameters: FileInfoRunnerParameters<T>): Boolean {
logger.info("Before psi manager creation")
val psiManager = PsiManager.getInstance(project)
logger.info("Before virtual file manager creation")
val virtualFileManager = VirtualFileManager.getInstance()
val virtualFileSystem = virtualFileManager.getFileSystem("file")
val fileIndex = ProjectFileIndex.getInstance(project)
val documentManager = FileDocumentManager.getInstance()
val files = ArrayList<FileInfo>()
runReadAction {
val task = Runnable {
for (file in parameters.files) {
val virtualFile = virtualFileSystem.findFileByPath(file.absolutePath)
if (virtualFile == null) {
logger.warn("Cannot find virtual file for $file")
continue
}
if (!fileIndex.isInSource(virtualFile)) {
logger.info("File $file is not in sources")
}
val psiFile = psiManager.findFile(virtualFile)
if (psiFile == null) {
logger.warn("Cannot find PSI file for $file")
continue
}
val document = documentManager.getDocument(virtualFile)
if (document == null) {
val message = when {
!virtualFile.isValid -> "is invalid"
virtualFile.isDirectory -> "is directory"
virtualFile.fileType.isBinary -> "is binary without decompiler"
FileUtilRt.isTooLarge(virtualFile.length) -> "is too large"
else -> ""
}
logger.warn("Cannot get document for file $file $message")
continue
}
files.add(FileInfo(psiFile, document, virtualFile))
}
}
ProgressManager.getInstance().runProcess(task, EmptyProgressIndicator())
}
return analyze(files, project, parameters.childParameters)
}