NPE in SonarLint console

56 views
Skip to first unread message

David Karr

unread,
May 9, 2017, 1:24:56 PM5/9/17
to SonarLint
I was just starting up Eclipse (Neon.3) and I noticed that a file I had been working on recently was showing up in a stacktrace in the SonarLint Console:
Error during analysis
org
.sonar.squidbridge.api.AnalysisException: SonarQube is unable to analyze file : '...\src\main\java\com\att\det\usl\base\pendingtrans\dao\PendingTransactionDao.java'
    at org
.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:95)
    at org
.sonar.java.ast.JavaAstScanner.scan(JavaAstScanner.java:63)
    at org
.sonar.java.JavaSquid.scanSources(JavaSquid.java:119)
    at org
.sonar.java.JavaSquid.scan(JavaSquid.java:113)
    at org
.sonar.plugins.java.JavaSquidSensor.execute(JavaSquidSensor.java:84)
    at org
.sonarsource.sonarlint.core.analyzer.sensor.SensorWrapper.analyse(SensorWrapper.java:52)
    at org
.sonarsource.sonarlint.core.analyzer.sensor.SensorsExecutor.executeSensor(SensorsExecutor.java:75)
    at org
.sonarsource.sonarlint.core.analyzer.sensor.SensorsExecutor.execute(SensorsExecutor.java:63)
    at org
.sonarsource.sonarlint.core.analyzer.sensor.PhaseExecutor.execute(PhaseExecutor.java:44)
    at org
.sonarsource.sonarlint.core.container.analysis.AnalysisContainer.doAfterStart(AnalysisContainer.java:139)
    at org
.sonarsource.sonarlint.core.container.ComponentContainer.startComponents(ComponentContainer.java:125)
    at org
.sonarsource.sonarlint.core.container.ComponentContainer.execute(ComponentContainer.java:110)
    at org
.sonarsource.sonarlint.core.container.standalone.StandaloneGlobalContainer.analyze(StandaloneGlobalContainer.java:122)
    at org
.sonarsource.sonarlint.core.StandaloneSonarLintEngineImpl.analyze(StandaloneSonarLintEngineImpl.java:96)
    at org
.sonarsource.sonarlint.core.StandaloneSonarLintEngineImpl.analyze(StandaloneSonarLintEngineImpl.java:84)
    at org
.sonarlint.eclipse.core.internal.jobs.StandaloneSonarLintClientFacade.runAnalysis(StandaloneSonarLintClientFacade.java:74)
    at org
.sonarlint.eclipse.core.internal.jobs.AnalyzeProjectJob.run(AnalyzeProjectJob.java:474)
    at org
.sonarlint.eclipse.core.internal.jobs.AnalyzeProjectJob$AnalysisThread.run(AnalyzeProjectJob.java:124)
Caused by: java.lang.NullPointerException
    at org
.sonar.java.resolve.ParametrizedTypeJavaType.verifySuperTypes(ParametrizedTypeJavaType.java:81)
    at org
.sonar.java.resolve.ParametrizedTypeJavaType.isSubtypeOf(ParametrizedTypeJavaType.java:72)
    at org
.sonar.java.resolve.ClassJavaType.superTypeIsSubTypeOf(ClassJavaType.java:73)
    at org
.sonar.java.resolve.ClassJavaType.isSubtypeOf(ClassJavaType.java:66)
    at org
.sonar.java.checks.SubClassStaticReferenceCheck$StaticAccessVisitor.visitIdentifier(SubClassStaticReferenceCheck.java:102)
    at org
.sonar.java.model.expression.IdentifierTreeImpl.accept(IdentifierTreeImpl.java:81)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:43)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.visitMemberSelectExpression(BaseTreeVisitor.java:228)
    at org
.sonar.java.model.expression.MemberSelectExpressionTreeImpl.accept(MemberSelectExpressionTreeImpl.java:115)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:43)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.visitMethodInvocation(BaseTreeVisitor.java:250)
    at org
.sonar.java.model.expression.MethodInvocationTreeImpl.accept(MethodInvocationTreeImpl.java:96)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:43)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.visitMemberSelectExpression(BaseTreeVisitor.java:228)
    at org
.sonar.java.model.expression.MemberSelectExpressionTreeImpl.accept(MemberSelectExpressionTreeImpl.java:115)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:43)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.visitMethodInvocation(BaseTreeVisitor.java:250)
    at org
.sonar.java.model.expression.MethodInvocationTreeImpl.accept(MethodInvocationTreeImpl.java:96)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:43)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.visitBinaryExpression(BaseTreeVisitor.java:209)
    at org
.sonar.java.model.expression.BinaryExpressionTreeImpl.accept(BinaryExpressionTreeImpl.java:70)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:43)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.visitBinaryExpression(BaseTreeVisitor.java:208)
    at org
.sonar.java.model.expression.BinaryExpressionTreeImpl.accept(BinaryExpressionTreeImpl.java:70)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:43)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.visitBinaryExpression(BaseTreeVisitor.java:208)
    at org
.sonar.java.model.expression.BinaryExpressionTreeImpl.accept(BinaryExpressionTreeImpl.java:70)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:43)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.visitBinaryExpression(BaseTreeVisitor.java:208)
    at org
.sonar.java.model.expression.BinaryExpressionTreeImpl.accept(BinaryExpressionTreeImpl.java:70)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:43)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.visitBinaryExpression(BaseTreeVisitor.java:208)
    at org
.sonar.java.model.expression.BinaryExpressionTreeImpl.accept(BinaryExpressionTreeImpl.java:70)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.scan(BaseTreeVisitor.java:43)
    at org
.sonar.plugins.java.api.tree.BaseTreeVisitor.visitBinaryExpression(BaseTreeVisitor.java:208)
    at org
.sonar.java.model.expression.BinaryExpressionTreeImpl.accept(BinaryExpressionTreeImpl.java:70)
    at org
.sonar.java.checks.SubClassStaticReferenceCheck.lambda$checkStaticVariables$1(SubClassStaticReferenceCheck.java:67)
    at java
.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
    at java
.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java
.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java
.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java
.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java
.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java
.util.Iterator.forEachRemaining(Iterator.java:116)
    at java
.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
    at java
.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java
.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java
.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
    at java
.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
    at java
.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java
.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at org
.sonar.java.checks.SubClassStaticReferenceCheck.checkStaticVariables(SubClassStaticReferenceCheck.java:67)
    at org
.sonar.java.checks.SubClassStaticReferenceCheck.visitNode(SubClassStaticReferenceCheck.java:56)
    at org
.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:95)
    at org
.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:120)
    at org
.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:97)
    at org
.sonar.java.ast.visitors.SubscriptionVisitor.scanTree(SubscriptionVisitor.java:78)
    at org
.sonar.java.ast.visitors.SubscriptionVisitor.scanFile(SubscriptionVisitor.java:64)
    at org
.sonar.java.model.VisitorsBridge.visitFile(VisitorsBridge.java:111)
    at org
.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:86)
   
... 17 more

Besides this stacktrace, I don't see any other issues.  The file in question is actually reporting some valid SonarLint issues. I only accidentally noticed this stacktrace, as it is working fine otherwise. It's hard to tell what construct in my source code might be causing this problem.

Michael Gumowski

unread,
May 10, 2017, 3:40:26 AM5/10/17
to David Karr, SonarLint
Hello David,

Thanks for the feedback. Unfortunately, without a file or a code snippet reproducing the issue, it's going to be hard identifying the issue. It may help you to know that it's apparently related top the type resolution of a Parametrized type.

What version of SonarLint are you using?
Is it in connected mode?
What is the version of the SonarJava analyzer you are running?

Regards,
Michael
--
Michael Gumowski | SonarSource
Software Developer, Language Team
http://sonarsource.com

David Karr

unread,
May 11, 2017, 12:18:31 PM5/11/17
to SonarLint, davidmic...@gmail.com
On Wednesday, May 10, 2017 at 12:40:26 AM UTC-7, michael.gumowski wrote:
Hello David,

Thanks for the feedback. Unfortunately, without a file or a code snippet reproducing the issue, it's going to be hard identifying the issue. It may help you to know that it's apparently related top the type resolution of a Parametrized type.

Acknowledged.  I'll provide the source if we can't resolve it through other means.
 

What version of SonarLint are you using?

3.1.0

Is it in connected mode?

By "connected mode", you mean whether the project the source file is in is bound to a project in a sonarqube server?  When I first saw this, it was not bound to a project. However, I just did try binding it to its corresponding project in our SonarQube server and restarting Eclipse, and now I don't see that stacktrace in the console.
 
What is the version of the SonarJava analyzer you are running?

4.7.1.9272
 

ddjur...@gmail.com

unread,
May 19, 2017, 10:11:34 AM5/19/17
to SonarLint
I responded in another post regarding this, but will add a summary. I found that if I have a parent class open, a class that extends, i.e. subclass, and then another file that extends that subclass open, then I see the problem. So a parent class with 2 levels of subclasses. I'm running sonarLint 3.1.0.201705051000 and currently running in connected mode to a SonarQube server, but also seen this problem before switching to connected mode.

Nicolas Peru

unread,
May 23, 2017, 3:05:40 AM5/23/17
to ddjur...@gmail.com, SonarLint
Hi, thanks to the other thread we managed to reproduce and investigate the issue : see https://jira.sonarsource.com/browse/SONARJAVA-2308 and https://jira.sonarsource.com/browse/SLE-180

Cheers,

--
You received this message because you are subscribed to the Google Groups "SonarLint" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sonarlint+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sonarlint/452483ce-178e-4cab-8922-ec8dcfbb1c78%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
Nicolas Peru | SonarSource
Reply all
Reply to author
Forward
0 new messages