Skip to content

Commit 2b78c1f

Browse files
eamonnmcmanusError Prone Team
authored and
Error Prone Team
committed
Avoid a possible IndexOutOfBoundsException in MemberName.
Ordinarily we shouldn't see an empty class name but it appears that sometimes we do: [] ``` Sep 26, 2024 10:29:02 AM com.google.devtools.staticanalysis.pipeline.java.errorprone.ErrorProneFindingsJavacAnalyzer$1 handleError WARNING: crash in Error Prone analyzer MemberName [CONTEXT ratelimit_period="5 SECONDS" analyzer="JavaStyle" ] java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:55) at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:52) at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:213) at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:210) at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:98) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106) at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302) at java.base/java.lang.String.checkIndex(String.java:4881) at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:46) at java.base/java.lang.String.charAt(String.java:1582) at com.google.errorprone.bugpatterns.MemberName.isConformantUpperCamelName(MemberName.java:290) at com.google.errorprone.bugpatterns.MemberName.matchClass(MemberName.java:111) at com.google.errorprone.scanner.ErrorProneScanner.processMatchers(ErrorProneScanner.java:460) at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:558) at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:157) ``` PiperOrigin-RevId: 679249176
1 parent 47dd2a8 commit 2b78c1f

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

core/src/main/java/com/google/errorprone/bugpatterns/MemberName.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,8 @@ public final class MemberName extends BugChecker
101101
public Description matchClass(ClassTree tree, VisitorState state) {
102102
ClassSymbol symbol = getSymbol(tree);
103103
String name = tree.getSimpleName().toString();
104-
if (isConformantUpperCamelName(name)) {
104+
if (name.isEmpty() || isConformantUpperCamelName(name)) {
105+
// name.isEmpty() should not happen normally but could if there are errors.
105106
return NO_MATCH;
106107
}
107108
String renamed = suggestedClassRename(name);

0 commit comments

Comments
 (0)