Sonar runner and sonar lint crashes if encounters statement lambda with generics

138 views
Skip to first unread message

mkapus...@kayak.com

unread,
Mar 22, 2016, 5:19:06 AM3/22/16
to SonarQube
Hi,

The following code produces an exception which stops the sonar runner and sonar lint in IDE to analyse the file.

Here is the code snippet.

import java.util.ArrayList;
import java.util.function.Function;

public enum SonarProblemCase {

//crashes
MY_BUCKET( rp -> {
return new ArrayList<Integer>();
}),

//works fine
MY_BUCKET2(rp -> new ArrayList<Integer>() );

SonarProblemCase(Function<Object,Object> bucketer) {
}

}


Exception:

SonarQube is unable to analyze file : 'SonarProblemCase.java'
org.sonar.squidbridge.api.AnalysisException: SonarQube is unable to analyze file : 'SonarProblemCase.java'
	at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:93)
	at org.sonar.java.ast.JavaAstScanner.scan(JavaAstScanner.java:67)
	at org.sonar.java.JavaSquid.scanSources(JavaSquid.java:135)
	at org.sonar.java.JavaSquid.scan(JavaSquid.java:128)
	at org.sonar.plugins.java.JavaSquidSensor.analyse(JavaSquidSensor.java:90)
	at org.sonarsource.sonarlint.core.analyzer.sensor.SensorsExecutor.executeSensor(SensorsExecutor.java:54)
	at org.sonarsource.sonarlint.core.analyzer.sensor.SensorsExecutor.execute(SensorsExecutor.java:47)
	at org.sonarsource.sonarlint.core.analyzer.sensor.PhaseExecutor.execute(PhaseExecutor.java:45)
	at org.sonarsource.sonarlint.core.container.analysis.AnalysisContainer.doAfterStart(AnalysisContainer.java:134)
	at org.sonarsource.sonarlint.core.container.ComponentContainer.startComponents(ComponentContainer.java:128)
	at org.sonarsource.sonarlint.core.container.ComponentContainer.execute(ComponentContainer.java:113)
	at org.sonarsource.sonarlint.core.container.global.GlobalContainer.analyze(GlobalContainer.java:102)
	at org.sonarsource.sonarlint.core.SonarLintClientImpl.analyze(SonarLintClientImpl.java:85)
	at org.sonarlint.intellij.analysis.DefaultSonarLintFacade.startAnalysis(DefaultSonarLintFacade.java:96)
	at org.sonarlint.intellij.analysis.SonarLintAnalysisConfigurator.analyzeModule(SonarLintAnalysisConfigurator.java:89)
	at org.sonarlint.intellij.analysis.SonarLintTask.run(SonarLintTask.java:92)
	at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:563)
	at com.intellij.openapi.progress.impl.CoreProgressManager$2.run(CoreProgressManager.java:142)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:446)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:392)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:127)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl$1.run(ProgressManagerImpl.java:126)
	at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:366)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
	at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:55)
Caused by: java.lang.NullPointerException
	at org.sonar.java.checks.DiamondOperatorCheck$TypeTreeLocator.getParentMethod(DiamondOperatorCheck.java:166)
	at org.sonar.java.checks.DiamondOperatorCheck$TypeTreeLocator.getMethodReturnType(DiamondOperatorCheck.java:160)
	at org.sonar.java.checks.DiamondOperatorCheck$TypeTreeLocator.visitReturnStatement(DiamondOperatorCheck.java:133)
	at org.sonar.java.model.statement.ReturnStatementTreeImpl.accept(ReturnStatementTreeImpl.java:69)
	at org.sonar.java.checks.DiamondOperatorCheck.getTypeFromExpression(DiamondOperatorCheck.java:107)
	at org.sonar.java.checks.DiamondOperatorCheck.visitNode(DiamondOperatorCheck.java:93)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:88)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:90)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:90)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:90)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:90)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:90)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:90)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:90)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:113)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:90)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.scanTree(SubscriptionVisitor.java:71)
	at org.sonar.java.ast.visitors.SubscriptionVisitor.scanFile(SubscriptionVisitor.java:64)
	at org.sonar.java.checks.SubscriptionBaseVisitor.scanFile(SubscriptionBaseVisitor.java:33)
	at org.sonar.java.model.VisitorsBridge.visitFile(VisitorsBridge.java:127)
	at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:84)
	... 29 more

Michael Gumowski

unread,
Mar 22, 2016, 6:23:19 AM3/22/16
to mkapus...@kayak.com, SonarQube
Hello,

Thanks a lot for the feedback and the reproducer! 
It's indeed a bug of the implementation of rule S2293, from the java plugin used by SonarLint.
I created the following ticket to handle the issue: https://jira.sonarsource.com/browse/SONARJAVA-1607

Cheers,

Michael GUMOWSKI | SonarSource
Software Developer @ Language Team
http://sonarsource.com

--
You received this message because you are subscribed to the Google Groups "SonarQube" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sonarqube+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sonarqube/fc38bed0-ae3d-4a0c-95c3-44267f04a66c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages