Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"An unhandled exception was thrown by the Error Prone static analysis plugin." on test class with Lombok #859

Closed
rafalwrzeszcz opened this issue Dec 12, 2017 · 2 comments

Comments

@rafalwrzeszcz
Copy link

Subject class that causes ErrorProne to fail:

package test.pl.chilldev.sites.core;

import java.io.IOException;
import java.time.LocalDate;
import java.time.Month;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;
import org.junit.Assert;
import org.junit.Test;
import pl.chilldev.sites.core.ResourcesFactory;

public class ResourcesFactoryTest
{
    private ObjectMapper objectMapper = ResourcesFactory.createObjectMapper();

    @Data // this is the line mentioned in the error message
    private static class Type
    {
        private String prop;
    }

    @Test
    public void createObjectMapperDateApi() throws IOException
    {
        // just for code coverage
        new ResourcesFactoryTest();

        String dateJson = "\"2015-07-02\"";

        LocalDate date = this.objectMapper.readValue(dateJson, LocalDate.class);

        Assert.assertEquals(
            "ResourcesFactory.createObjectMapper() should create ObjectMapper that can handle Java Time API classes.",
            2015,
            date.getYear()
        );
        Assert.assertEquals(
            "ResourcesFactory.createObjectMapper() should create ObjectMapper that can handle Java Time API classes.",
            Month.JULY,
            date.getMonth()
        );
        Assert.assertEquals(
            "ResourcesFactory.createObjectMapper() should create ObjectMapper that can handle Java Time API classes.",
            2,
            date.getDayOfMonth()
        );
    }

    @Test
    public void createObjectMapperTimestampSerialization() throws JsonProcessingException
    {
        LocalDate date = LocalDate.of(2011, 1, 30);

        String dateJson = this.objectMapper.writeValueAsString(date);

        Assert.assertEquals(
            "ResourcesFactory.createObjectMapper() should create ObjectMapper that serializes dates as timestamps.",
            String.format("\"%s\"", date.toString()),
            dateJson
        );
    }

    @Test
    public void createObjectMapperUnknownProperties() throws IOException
    {
        String testJson = "{\"prop\":\"ok\",\"dummy\":\"test\"}";

        ResourcesFactoryTest.Type test = this.objectMapper.readValue(testJson, ResourcesFactoryTest.Type.class);

        Assert.assertEquals(
            "ResourcesFactory.createObjectMapper() should create ObjectMapper that ignores unknown properties.",
            "ok",
            test.getProp()
        );
    }
}

Error stack trace:

[ERROR]      error-prone version: 2.1.2
[ERROR]      Stack Trace:
[ERROR]      java.lang.IndexOutOfBoundsException
[ERROR]         at java.nio.HeapCharBuffer.subSequence(HeapCharBuffer.java:580)
[ERROR]         at java.nio.HeapCharBuffer.subSequence(HeapCharBuffer.java:42)
[ERROR]         at com.google.errorprone.bugpatterns.ParameterName.checkArguments(ParameterName.java:85)
[ERROR]         at com.google.errorprone.bugpatterns.ParameterName.matchMethodInvocation(ParameterName.java:64)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitMethodInvocation(ErrorProneScanner.java:907)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitMethodInvocation(ErrorProneScanner.java:146)
[ERROR]         at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1644)
[ERROR]         at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:82)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:42)
[ERROR]         at com.sun.source.util.TreeScanner.visitUnary(TreeScanner.java:612)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitUnary(ErrorProneScanner.java:1126)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitUnary(ErrorProneScanner.java:146)
[ERROR]         at com.sun.tools.javac.tree.JCTree$JCUnary.accept(JCTree.java:1956)
[ERROR]         at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:82)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:42)
[ERROR]         at com.sun.source.util.TreeScanner.visitIf(TreeScanner.java:418)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitIf(ErrorProneScanner.java:758)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitIf(ErrorProneScanner.java:146)
[ERROR]         at com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1427)
[ERROR]         at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:82)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:42)
[ERROR]         at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
[ERROR]         at com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
[ERROR]         at com.sun.source.util.TreeScanner.visitBlock(TreeScanner.java:248)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:530)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:146)
[ERROR]         at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1026)
[ERROR]         at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:82)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:42)
[ERROR]         at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
[ERROR]         at com.sun.source.util.TreeScanner.visitMethod(TreeScanner.java:206)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitMethod(ErrorProneScanner.java:898)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitMethod(ErrorProneScanner.java:146)
[ERROR]         at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:898)
[ERROR]         at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:82)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:42)
[ERROR]         at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
[ERROR]         at com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
[ERROR]         at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:113)
[ERROR]         at com.sun.source.util.TreeScanner.visitClass(TreeScanner.java:187)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:590)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:146)
[ERROR]         at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:808)
[ERROR]         at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:82)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:42)
[ERROR]         at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
[ERROR]         at com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
[ERROR]         at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:113)
[ERROR]         at com.sun.source.util.TreeScanner.visitClass(TreeScanner.java:187)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:590)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:146)
[ERROR]         at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:808)
[ERROR]         at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:82)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:42)
[ERROR]         at com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
[ERROR]         at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:113)
[ERROR]         at com.sun.source.util.TreeScanner.visitCompilationUnit(TreeScanner.java:144)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:605)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:146)
[ERROR]         at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:591)
[ERROR]         at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:56)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:64)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScannerTransformer.apply(ErrorProneScannerTransformer.java:41)
[ERROR]         at com.google.errorprone.ErrorProneAnalyzer.finished(ErrorProneAnalyzer.java:145)
[ERROR]         at com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:120)
[ERROR]         at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1425)
[ERROR]         at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1374)
[ERROR]         at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:973)
[ERROR]         at com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:100)
[ERROR]         at com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:142)
[ERROR]         at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:96)
[ERROR]         at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:90)
[ERROR]         at com.google.errorprone.BaseErrorProneCompiler.run(BaseErrorProneCompiler.java:137)
[ERROR]         at com.google.errorprone.BaseErrorProneCompiler.run(BaseErrorProneCompiler.java:108)
[ERROR]         at com.google.errorprone.ErrorProneCompiler.run(ErrorProneCompiler.java:118)
[ERROR]         at org.codehaus.plexus.compiler.javac.errorprone.JavacCompilerWithErrorProne$CompilerInvoker.compile(JavacCompilerWithErrorProne.java:222)
[ERROR]         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR]         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]         at java.lang.reflect.Method.invoke(Method.java:498)
[ERROR]         at org.codehaus.plexus.compiler.javac.errorprone.JavacCompilerWithErrorProne.performCompile(JavacCompilerWithErrorProne.java:91)
[ERROR]         at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1075)
[ERROR]         at org.apache.maven.plugin.compiler.TestCompilerMojo.execute(TestCompilerMojo.java:176)
[ERROR]         at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
[ERROR]         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
[ERROR]         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
[ERROR]         at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
[ERROR]         at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
[ERROR]         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
[ERROR]         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
[ERROR]         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
[ERROR]         at org.apache.maven.cli.MavenCli.execute(MavenCli.java:955)
[ERROR]         at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:290)
[ERROR]         at org.apache.maven.cli.MavenCli.main(MavenCli.java:194)
[ERROR]         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR]         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]         at java.lang.reflect.Method.invoke(Method.java:498)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
@rafalwrzeszcz
Copy link
Author

It only occurs in test classes, in main classes works fine.

@cushon
Copy link
Collaborator

cushon commented Dec 13, 2017

This is a duplicate of #780.

@cushon cushon closed this as completed Dec 13, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants