Source:
<code>public void visitFile(@Nullable Tree parsedTree) { semanticModel = null; CompilationUnitTree tree = new JavaTree.CompilationUnitTreeImpl(null, new ArrayList<>(), new ArrayList<>(), null, null); boolean fileParsed = parsedTree != null; if (fileParsed && parsedTree.is(Tree.Kind.COMPILATION_UNIT)) { tree = (CompilationUnitTree) parsedTree; if (isNotJavaLangOrSerializable(PackageUtils.packageName(tree.packageDeclaration(), "/"))) { try { semanticModel = SemanticModel.createFor(tree, classLoader); } catch (Exception e) { LOG.error("Unable to create symbol table for : " + currentFile.getAbsolutePath(), e); addAnalysisError(e, currentFile.getPath(), AnalysisError.Kind.SEMANTIC_ERROR); sonarComponents.reportAnalysisError(currentFile, e.getMessage()); return; } createSonarSymbolTable(tree); } else { SemanticModel.handleMissingTypes(tree); } } JavaFileScannerContext javaFileScannerContext = createScannerContext(tree, semanticModel, sonarComponents, fileParsed); if (symbolicExecutionEnabled && isNotJavaLangOrSerializable(PackageUtils.packageName(tree.packageDeclaration(), "/"))) { runScanner(javaFileScannerContext, new SymbolicExecutionVisitor(executableScanners, behaviorCache), AnalysisError.Kind.SE_ERROR); behaviorCache.cleanup(); } <START> scannerRunner.run(javaFileScannerContext); <END> executableScanners.stream().filter(s -> s instanceof SymbolicExecutionVisitor || !(s instanceof IssuableSubscriptionVisitor)) .forEach(scanner -> runScanner(javaFileScannerContext, scanner, AnalysisError.Kind.CHECK_ERROR)); if (semanticModel != null) { classesNotFound.addAll(semanticModel.classesNotFound()); } }</code><technical_language>pretty hidden in code issueableSubscriptionVisitors executed ScannerRunner. I this improved. handling cases ScannerRunner</technical_language>

Target:
public void visitFile(@Nullable Tree parsedTree) { semanticModel = null; CompilationUnitTree tree = new JavaTree.CompilationUnitTreeImpl(null, new ArrayList<>(), new ArrayList<>(), null, null); boolean fileParsed = parsedTree != null; if (fileParsed && parsedTree.is(Tree.Kind.COMPILATION_UNIT)) { tree = (CompilationUnitTree) parsedTree; if (isNotJavaLangOrSerializable(PackageUtils.packageName(tree.packageDeclaration(), "/"))) { try { semanticModel = SemanticModel.createFor(tree, classLoader); } catch (Exception e) { LOG.error("Unable to create symbol table for : " + currentFile.getAbsolutePath(), e); addAnalysisError(e, currentFile.getPath(), AnalysisError.Kind.SEMANTIC_ERROR); sonarComponents.reportAnalysisError(currentFile, e.getMessage()); return; } createSonarSymbolTable(tree); } else { SemanticModel.handleMissingTypes(tree); } } JavaFileScannerContext javaFileScannerContext = createScannerContext(tree, semanticModel, sonarComponents, fileParsed); if (symbolicExecutionEnabled && isNotJavaLangOrSerializable(PackageUtils.packageName(tree.packageDeclaration(), "/"))) { runScanner(javaFileScannerContext, new SymbolicExecutionVisitor(executableScanners, behaviorCache), AnalysisError.Kind.SE_ERROR); behaviorCache.cleanup(); } executableScanners.forEach(scanner -> runScanner(javaFileScannerContext, scanner, AnalysisError.Kind.CHECK_ERROR)); scannerRunner.run(javaFileScannerContext); if (semanticModel != null) { classesNotFound.addAll(semanticModel.classesNotFound()); } }