Hi everyone,
I've been having a few warnings and errors spat out by the Sonar
Scanner. For quick context, I have a Java/Scala project based on the
Play Framework v2.5.3 that I am scanning with bytecode analysis.
I am getting an awful lot
of "Class not found" warnings and the occasional error spat out by
the scanner. Below are the four different warnings I see a lot of:
WARN: Class not found:
scala.Predef$$less
WARN: Class not found:
scala.Predef$$less$colon
WARN: Class not found:
<package>.views.html.<viewname>_Scope0$<viewname>_Scope1
WARN: Class not found:
play.api.mvc.RequestExtractors$
I'm seeing a lot of the
first three kinds of warnings, but I don't think they're creating false
negatives. From looking around on GitHub, Sonar's issue tracker and
here, I gather that these warnings are okay as long as analysis doesn't
break.
Some related discussions and issues:
Unfortunately, it does look like I am getting an error to do with the
RequestExtractors. I'm seeing that after that particular warning comes
up, I get an exception like this:
ERROR: Unable to create symbol
table for : /path/to/project/app/controllers/Assets.java
java.lang.IllegalStateException: Innerclass: RequestExtractors$ and classSymbol: RequestExtractors are not the same.
at com.google.common.base.Preconditions.checkState(Preconditions.java:174) ~[guava-19.0.jar:na]
at org.sonar.java.resolve.BytecodeVisitor.defineInnerClass(BytecodeVisitor.java:166) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.BytecodeVisitor.visitInnerClass(BytecodeVisitor.java:148) ~[java-frontend-4.0.jar:na]
at org.objectweb.asm.ClassReader.accept(ClassReader.java:679) ~[asm-debug-all-5.0.3.jar:5.0.3]
at org.objectweb.asm.ClassReader.accept(ClassReader.java:506) ~[asm-debug-all-5.0.3.jar:5.0.3]
at org.sonar.java.resolve.BytecodeCompleter.complete(BytecodeCompleter.java:100) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.JavaSymbol.complete(JavaSymbol.java:111) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.JavaType.getSymbol(JavaType.java:75) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.Resolve.findMethod(Resolve.java:434) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.Resolve.findMethod(Resolve.java:420) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.Resolve.findMethod(Resolve.java:457) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.Resolve.findMethod(Resolve.java:420) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.Resolve.findMethod(Resolve.java:457) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.Resolve.findMethod(Resolve.java:420) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.Resolve.findMethod(Resolve.java:449) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.Resolve.findMethod(Resolve.java:420) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.Resolve.findMethod(Resolve.java:449) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.Resolve.findMethod(Resolve.java:416) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.TypeAndReferenceSolver.resolveMethodSymbol(TypeAndReferenceSolver.java:295) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.TypeAndReferenceSolver.visitMethodInvocation(TypeAndReferenceSolver.java:225) ~[java-frontend-4.0.jar:na]
at org.sonar.java.model.expression.MethodInvocationTreeImpl.accept(MethodInvocationTreeImpl.java:82) ~[java-frontend-4.0.jar:na]
at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:43) ~[java-frontend-4.0.jar:na]
at org.sonar.plugins.java.api.tree.BaseTreeVisitor.visitReturnStatement(BaseTreeVisitor.java:173) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.TypeAndReferenceSolver.visitReturnStatement(TypeAndReferenceSolver.java:501) ~[java-frontend-4.0.jar:na]
at org.sonar.java.model.statement.ReturnStatementTreeImpl.accept(ReturnStatementTreeImpl.java:69) ~[java-frontend-4.0.jar:na]
at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:43) ~[java-frontend-4.0.jar:na]
at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:37) ~[java-frontend-4.0.jar:na]
at org.sonar.plugins.java.api.tree.BaseTreeVisitor.visitBlock(BaseTreeVisitor.java:85) ~[java-frontend-4.0.jar:na]
at org.sonar.java.model.statement.BlockTreeImpl.accept(BlockTreeImpl.java:77) ~[java-frontend-4.0.jar:na]
at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:43) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.TypeAndReferenceSolver.visitMethod(TypeAndReferenceSolver.java:130) ~[java-frontend-4.0.jar:na]
at org.sonar.java.model.declaration.MethodTreeImpl.accept(MethodTreeImpl.java:218) ~[java-frontend-4.0.jar:na]
at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:43) ~[java-frontend-4.0.jar:na]
at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:37) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.TypeAndReferenceSolver.visitClass(TypeAndReferenceSolver.java:139) ~[java-frontend-4.0.jar:na]
at org.sonar.java.model.declaration.ClassTreeImpl.accept(ClassTreeImpl.java:198) ~[java-frontend-4.0.jar:na]
at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:43) ~[java-frontend-4.0.jar:na]
at org.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:37) ~[java-frontend-4.0.jar:na]
at org.sonar.plugins.java.api.tree.BaseTreeVisitor.visitCompilationUnit(BaseTreeVisitor.java:55) ~[java-frontend-4.0.jar:na]
at org.sonar.java.resolve.SemanticModel.createFor(SemanticModel.java:63) ~[java-frontend-4.0.jar:na]
at org.sonar.java.model.VisitorsBridge.visitFile(VisitorsBridge.java:107) ~[java-frontend-4.0.jar:na]
at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:84) [java-frontend-4.0.jar:na]
at org.sonar.java.ast.JavaAstScanner.scan(JavaAstScanner.java:67) [java-frontend-4.0.jar:na]
at org.sonar.java.JavaSquid.scanSources(JavaSquid.java:133) [java-frontend-4.0.jar:na]
at org.sonar.java.JavaSquid.scan(JavaSquid.java:126) [java-frontend-4.0.jar:na]
at org.sonar.plugins.java.JavaSquidSensor.execute(JavaSquidSensor.java:93) [sonar-java-plugin-4.0.jar:na]
at org.sonar.scanner.sensor.SensorWrapper.analyse(SensorWrapper.java:53) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.scanner.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:57) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:49) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.scanner.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:78) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:184) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:241) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:236) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:226) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.scanner.task.ScanTask.execute(ScanTask.java:47) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:86) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:115) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:118) [sonar-scanner-engine-shaded-6.0.jar:na]
at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:62) [sonar-scanner-api-batch4845319377614354925.jar:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_92]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_92]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_92]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_92]
at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60) [sonar-scanner-cli-2.6.1.jar:na]
at com.sun.proxy.$Proxy0.execute(Unknown Source) [na:na]
at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:240) [sonar-scanner-cli-2.6.1.jar:na]
at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151) [sonar-scanner-cli-2.6.1.jar:na]
at org.sonarsource.scanner.cli.Main.runAnalysis(Main.java:110) [sonar-scanner-cli-2.6.1.jar:na]
at org.sonarsource.scanner.cli.Main.execute(Main.java:72) [sonar-scanner-cli-2.6.1.jar:na]
at org.sonarsource.scanner.cli.Main.main(Main.java:60) [sonar-scanner-cli-2.6.1.jar:na]
The exception doesn't stop
the scanner from processing all files, but it does prevent the scanner
from processing the file the exception occurred in. I tested by putting
in a few lines of code into an affected file that I knew would be marked
as issues and they were not marked as issues by the scanner.
I've managed to make an example SBT project that causes the SonarJava analysis to fail in the same way, here:
To end on a question, what's the next step in getting this fixed?
Thanks!