MockitoArgumentMatchersUsedOnAllParametersCheck crash

  • Versions used: SonarCloud, sonar-maven-plugin
  • Error observed
[ERROR] Unable to run check class org.sonar.java.checks.tests.MockitoArgumentMatchersUsedOnAllParametersCheck - S6073 on file '<...>', To help improve the SonarSource Java Analyzer, please report this problem to SonarSource: see https://community.sonarsource.com/
java.lang.NullPointerException: null
	at org.sonar.java.checks.tests.MockitoArgumentMatchersUsedOnAllParametersCheck$MethodVisitor.visitMethod(MockitoArgumentMatchersUsedOnAllParametersCheck.java:163)
	at org.sonar.java.model.declaration.MethodTreeImpl.accept(MethodTreeImpl.java:231)
	at org.sonar.java.checks.tests.MockitoArgumentMatchersUsedOnAllParametersCheck.returnsAnArgumentMatcher(MockitoArgumentMatchersUsedOnAllParametersCheck.java:134)
	at org.sonar.java.checks.tests.MockitoArgumentMatchersUsedOnAllParametersCheck.isArgumentMatcherLike(MockitoArgumentMatchersUsedOnAllParametersCheck.java:106)
	at org.sonar.java.checks.tests.MockitoArgumentMatchersUsedOnAllParametersCheck.visitArguments(MockitoArgumentMatchersUsedOnAllParametersCheck.java:77)
	at org.sonar.java.checks.tests.AbstractMockitoArgumentChecker.visitNode(AbstractMockitoArgumentChecker.java:64)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.lambda$visit$5(VisitorsBridge.java:288)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.lambda$forEach$8(VisitorsBridge.java:304)
	at org.sonar.java.model.VisitorsBridge.runScanner(VisitorsBridge.java:156)
	at org.sonar.java.model.VisitorsBridge.access$200(VisitorsBridge.java:60)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.forEach(VisitorsBridge.java:304)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.visit(VisitorsBridge.java:290)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.visitChildren(VisitorsBridge.java:274)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.visit(VisitorsBridge.java:294)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.visitChildren(VisitorsBridge.java:274)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.visit(VisitorsBridge.java:294)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.visitChildren(VisitorsBridge.java:274)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.visit(VisitorsBridge.java:294)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.visitChildren(VisitorsBridge.java:274)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.visit(VisitorsBridge.java:294)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.visitChildren(VisitorsBridge.java:274)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.visit(VisitorsBridge.java:294)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.visitChildren(VisitorsBridge.java:274)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.visit(VisitorsBridge.java:294)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.visitChildren(VisitorsBridge.java:274)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.visit(VisitorsBridge.java:294)
	at org.sonar.java.model.VisitorsBridge$IssuableSubscriptionVisitorsRunner.scanFile(VisitorsBridge.java:252)
	at org.sonar.java.model.VisitorsBridge.lambda$runScanner$0(VisitorsBridge.java:151)
	at org.sonar.java.model.VisitorsBridge.runScanner(VisitorsBridge.java:156)
	at org.sonar.java.model.VisitorsBridge.runScanner(VisitorsBridge.java:151)
	at org.sonar.java.model.VisitorsBridge.visitFile(VisitorsBridge.java:134)
	at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:104)
	at org.sonar.java.ast.JavaAstScanner.lambda$scan$1(JavaAstScanner.java:79)
	at org.sonar.java.model.JParserConfig$FileByFile.parse(JParserConfig.java:225)
	at org.sonar.java.ast.JavaAstScanner.scan(JavaAstScanner.java:77)
	at org.sonar.java.JavaFrontend.scanAndMeasureTask(JavaFrontend.java:175)
	at org.sonar.java.JavaFrontend.scan(JavaFrontend.java:128)
	at org.sonar.plugins.java.JavaSensor.execute(JavaSensor.java:109)
	at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:45)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:75)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:48)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:66)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:48)
	at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:68)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
	at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:445)
	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:441)
	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:438)
	at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:399)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
	at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:128)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:58)
	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:52)
	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
	at com.sun.proxy.$Proxy25.execute(Unknown Source)
	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
	at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute(ScannerBootstrapper.java:65)
	at org.sonarsource.scanner.maven.SonarQubeMojo.execute(SonarQubeMojo.java:108)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)

  • Scanner command used when applicable (private details masked)
    mvn org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -pl ../<project name> -pl ../<projectName> --also-make -Psonar -Dsonar <org masked for privacy> -Dsonar.pullrequest.branch=testing/OP-600-pr -Dsonar.pullrequest.key=60 -Dsonar.pullrequest.base=release/OP-600-testing -Dmaven.repo.local=/home/jenkins/workspace/workspace/CI-<...>/.repository -f /home/jenkins/workspace/workspace/CI-<...>/Parent/pom.xml

  • In case of SonarCloud:

    • ALM used: GitHub
    • CI system used: Jenkins

Hello @lrozenblyum,
Thank you reporting the problem and including this many details in your post.
To reproduce the issue, it would help if we had an example that causes the crash.

Do you mind sharing a bit of code produces a crash?

Cheers,

Dorian

Hi @Dorian_Burihabwa. I’ll try to prepare a minimal test case.

@Dorian_Burihabwa
here is the minimal example that causes the exception!

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;

@RunWith(MockitoJUnitRunner.class)
public abstract class AbstractDateTimeServiceTest {
	interface SthToMock {
		String command( String exec );
	}

    @Mock
    private SthToMock sthToMock;

    public abstract String getCommand();

    @Test
    public void shouldReturnSystemDateTime() {
        when(sthToMock.command(getCommand())).thenReturn("test");
    }
}

Additional environment details:
build system: Maven
JUnit: 4.13
Mockito: 3.3.3

Thank you @lrozenblyum for coming back with a reproducer.
A ticket has been created to handle the issue.

Cheers,

Dorian

1 Like

Thanks @Dorian_Burihabwa for fast fixing!

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.