Skip to content

Commit 96eccaf

Browse files
authoredDec 9, 2024··
Support alternate internal javadoc comment for "experimental" classes (#12866)
1 parent d26c1f6 commit 96eccaf

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed
 

‎custom-checks/src/main/java/io/opentelemetry/javaagent/customchecks/OtelInternalJavadoc.java

+13-4
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
@AutoService(BugChecker.class)
2424
@BugPattern(
2525
summary =
26-
"This public internal class doesn't end with the javadoc disclaimer: \""
27-
+ OtelInternalJavadoc.EXPECTED_INTERNAL_COMMENT
26+
"This public internal class doesn't end with any of the applicable javadoc disclaimers: \""
27+
+ OtelInternalJavadoc.EXPECTED_INTERNAL_COMMENT_V1
28+
+ "\", or \""
29+
+ OtelInternalJavadoc.EXPECTED_INTERNAL_COMMENT_V2
2830
+ "\"",
2931
severity = WARNING)
3032
public class OtelInternalJavadoc extends BugChecker implements BugChecker.ClassTreeMatcher {
@@ -36,17 +38,24 @@ public class OtelInternalJavadoc extends BugChecker implements BugChecker.ClassT
3638
private static final Pattern EXCLUDE_PACKAGE_PATTERN =
3739
Pattern.compile("^io\\.opentelemetry\\.javaagent\\.instrumentation\\.internal\\.");
3840

39-
static final String EXPECTED_INTERNAL_COMMENT =
41+
static final String EXPECTED_INTERNAL_COMMENT_V1 =
4042
"This class is internal and is hence not for public use."
4143
+ " Its APIs are unstable and can change at any time.";
4244

45+
static final String EXPECTED_INTERNAL_COMMENT_V2 =
46+
"This class is internal and experimental. Its APIs are unstable and can change at any time."
47+
+ " Its APIs (or a version of them) may be promoted to the public stable API in the"
48+
+ " future, but no guarantees are made.";
49+
4350
@Override
4451
public Description matchClass(ClassTree tree, VisitorState state) {
4552
if (!isPublic(tree) || !isInternal(state) || tree.getSimpleName().toString().endsWith("Test")) {
4653
return Description.NO_MATCH;
4754
}
4855
String javadoc = getJavadoc(state);
49-
if (javadoc != null && javadoc.endsWith(EXPECTED_INTERNAL_COMMENT)) {
56+
if (javadoc != null
57+
&& (javadoc.contains(EXPECTED_INTERNAL_COMMENT_V1)
58+
|| javadoc.contains(EXPECTED_INTERNAL_COMMENT_V2))) {
5059
return Description.NO_MATCH;
5160
}
5261
return describeMatch(tree);

‎custom-checks/src/test/resources/io/opentelemetry/javaagent/customchecks/internal/InternalJavadocPositiveCases.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55

66
package io.opentelemetry.javaagent.customchecks.internal;
77

8-
// BUG: Diagnostic contains: doesn't end with the javadoc disclaimer
8+
// BUG: Diagnostic contains: doesn't end with any of the applicable javadoc disclaimers
99
public class InternalJavadocPositiveCases {
1010

11-
// BUG: Diagnostic contains: doesn't end with the javadoc disclaimer
11+
// BUG: Diagnostic contains: doesn't end with any of the applicable javadoc disclaimers
1212
public static class One {}
1313

1414
/** Doesn't have the disclaimer. */
15-
// BUG: Diagnostic contains: doesn't end with the javadoc disclaimer
15+
// BUG: Diagnostic contains: doesn't end with any of the applicable javadoc disclaimers
1616
public static class Two {}
1717
}

0 commit comments

Comments
 (0)
Please sign in to comment.