Crash in UnnecessaryStringBuilder (original) (raw)

When updating errorprone in the AOSP source tree from 2.15.0 -> 2.23.0, we see this crash on this line:

frameworks/base/apct-tests/perftests/core/src/android/libcore/regression/IntegralToStringPerfTest.java:186: error: An unhandled exception was thrown by the Error Prone static analysis plugin.
            new StringBuilder().append(SMALL);
            ^
     Please report this at https://github.com/google/error-prone/issues/new and include the following:
  
     error-prone version: 2.23.0
     BugPattern: UnnecessaryStringBuilder
     Stack Trace:
     java.lang.NullPointerException: Cannot invoke "com.google.errorprone.util.ASTHelpers$TargetType.path()" because "target" is null
      at com.google.errorprone.bugpatterns.UnnecessaryStringBuilder.isUsedAsStringBuilder(UnnecessaryStringBuilder.java:166)
      at com.google.errorprone.bugpatterns.UnnecessaryStringBuilder.matchNewClass(UnnecessaryStringBuilder.java:120)
      at com.google.errorprone.scanner.ErrorProneScanner.processMatchers(ErrorProneScanner.java:449)
      at com.google.errorprone.scanner.ErrorProneScanner.visitNewClass(ErrorProneScanner.java:773)
      at com.google.errorprone.scanner.ErrorProneScanner.visitNewClass(ErrorProneScanner.java:150)
      at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1874)
      at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
      at jdk.compiler/com.sun.source.util.TreeScanner.visitMemberSelect(TreeScanner.java:820)
      at com.google.errorprone.scanner.ErrorProneScanner.visitMemberSelect(ErrorProneScanner.java:728)
      at com.google.errorprone.scanner.ErrorProneScanner.visitMemberSelect(ErrorProneScanner.java:150)
      at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:2458)
      at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
      at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:96)
      at jdk.compiler/com.sun.source.util.TreeScanner.visitMethodInvocation(TreeScanner.java:589)
      at com.google.errorprone.scanner.ErrorProneScanner.visitMethodInvocation(ErrorProneScanner.java:751)
      at com.google.errorprone.scanner.ErrorProneScanner.visitMethodInvocation(ErrorProneScanner.java:150)
      at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1813)
      at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
      at jdk.compiler/com.sun.source.util.TreeScanner.visitExpressionStatement(TreeScanner.java:502)
      at com.google.errorprone.scanner.ErrorProneScanner.visitExpressionStatement(ErrorProneScanner.java:633)
      at com.google.errorprone.scanner.ErrorProneScanner.visitExpressionStatement(ErrorProneScanner.java:150)
      at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1592)
      at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
      at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:111)
      at jdk.compiler/com.sun.source.util.TreeScanner.visitBlock(TreeScanner.java:272)
      at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:520)
      at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:150)
      at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1103)
      at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
      at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:96)
      at jdk.compiler/com.sun.source.util.TreeScanner.visitWhileLoop(TreeScanner.java:303)
      at com.google.errorprone.scanner.ErrorProneScanner.visitWhileLoop(ErrorProneScanner.java:893)
      at com.google.errorprone.scanner.ErrorProneScanner.visitWhileLoop(ErrorProneScanner.java:150)
      at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCWhileLoop.accept(JCTree.java:1163)
      at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
      at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:96)
      at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:111)
      at jdk.compiler/com.sun.source.util.TreeScanner.visitBlock(TreeScanner.java:272)
      at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:520)
      at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:150)
      at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1103)
      at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
      at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:96)
      at jdk.compiler/com.sun.source.util.TreeScanner.visitMethod(TreeScanner.java:224)
      at com.google.errorprone.scanner.ErrorProneScanner.visitMethod(ErrorProneScanner.java:740)
      at com.google.errorprone.scanner.ErrorProneScanner.visitMethod(ErrorProneScanner.java:150)
      at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:953)
      at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
      at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:96)
      at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:111)
      at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:119)
      at jdk.compiler/com.sun.source.util.TreeScanner.visitClass(TreeScanner.java:203)
      at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:548)
      at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:150)
      at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:860)
      at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
      at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:111)
      at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:119)
      at jdk.compiler/com.sun.source.util.TreeScanner.visitCompilationUnit(TreeScanner.java:152)
      at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:560)
      at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:150)
      at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:614)
      at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:60)
      at com.google.errorprone.scanner.Scanner.scan(Scanner.java:58)
      at com.google.errorprone.scanner.ErrorProneScannerTransformer.apply(ErrorProneScannerTransformer.java:43)
      at com.google.errorprone.ErrorProneAnalyzer.finished(ErrorProneAnalyzer.java:156)
      at jdk.compiler/com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:132)
      at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1394)
      at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1341)
      at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:933)
      at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:317)
      at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:176)
      at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:64)
      at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:50)