diff --git a/core/src/main/java/com/google/errorprone/bugpatterns/RestrictedApiChecker.java b/core/src/main/java/com/google/errorprone/bugpatterns/RestrictedApiChecker.java index d1662cf861e..bf002a437b2 100644 --- a/core/src/main/java/com/google/errorprone/bugpatterns/RestrictedApiChecker.java +++ b/core/src/main/java/com/google/errorprone/bugpatterns/RestrictedApiChecker.java @@ -255,6 +255,9 @@ private Description checkRestriction( SeverityLevel level = warn ? SeverityLevel.WARNING : SeverityLevel.ERROR; Description.Builder description = buildDescription(where).setMessage(restriction.explanation()).overrideSeverity(level); + if (!restriction.link().isEmpty()) { + description.setLinkUrl(restriction.link()); + } return description.build(); } diff --git a/core/src/test/java/com/google/errorprone/bugpatterns/RestrictedApiCheckerTest.java b/core/src/test/java/com/google/errorprone/bugpatterns/RestrictedApiCheckerTest.java index f98a3f965bb..fc0643a72a1 100644 --- a/core/src/test/java/com/google/errorprone/bugpatterns/RestrictedApiCheckerTest.java +++ b/core/src/test/java/com/google/errorprone/bugpatterns/RestrictedApiCheckerTest.java @@ -159,6 +159,31 @@ void foo(RestrictedApiMethods m) { .doTest(); } + @Test + public void restrictedCallProhibited_withLink() { + helper + .addSourceLines( + "Testcase.java", + """ + package separate.test; + + import com.google.errorprone.annotations.RestrictedApi; + + class Testcase { + void caller() { + // BUG: Diagnostic contains: test + // (see http://example.com) + restrictedMethod(); + } + + @RestrictedApi(explanation = "test", link = "http://example.com") + void restrictedMethod() {} + } + """) + .expectResult(Result.ERROR) + .doTest(); + } + @Test public void restrictedCallProhibited_inherited() { helper