Javadoc { public List<String> undocumentedThrownExceptions() { return undocumentedNamedTags.computeIfAbsent(BlockTag.EXCEPTIONS, key -> computeUndocumentedThrownExceptions()); } Javadoc(Tree tree); boolean noMainDescription(); boolean noReturnDescription(); List<String> undocumentedParameters(); List<String> undocumentedThrownExceptions();  }
@Test void test_undocumented_thrown_exceptions() { assertThat(fooJavadoc.undocumentedThrownExceptions()).containsExactlyInAnyOrder("IOException", "IllegalStateException", "B"); assertThat(barJavadoc.undocumentedThrownExceptions()).isEmpty(); assertThat(emptyDescriptionJavadoc.undocumentedThrownExceptions()).containsExactlyInAnyOrder("NullPointerException"); assertThat(fullParamsDescriptionJavadoc.undocumentedThrownExceptions()).isEmpty(); assertThat(genericExceptionThrownJavadoc.undocumentedThrownExceptions()).containsExactlyInAnyOrder("ObjectStreamException", "InvalidObjectException"); assertThat(genericExceptionThrownUndocumented.undocumentedThrownExceptions()).containsExactlyInAnyOrder("Exception"); assertThat(invalidThrownExceptionUndocumented.undocumentedThrownExceptions()).isEmpty(); assertThat(emptyJavadocs.stream().map(Javadoc::undocumentedThrownExceptions)).hasSize(6).allMatch(List::isEmpty); }