Merge pull request #10640 from atorralba/atorralba/fix-cartesian-product

Java: Fix cartesian product
This commit is contained in:
Tony Torralba
2022-10-03 08:56:47 +02:00
committed by GitHub

View File

@@ -16,19 +16,14 @@ ClassOrInterface getTaggedType(ThrowsTag tag) {
result = tag.getFile().(CompilationUnit).getATypeInScope()
}
predicate canThrow(Callable callable, Class exception) {
exception instanceof UncheckedThrowableType
or
callable.getAnException().getType().getADescendant() = exception
}
// Uses ClassOrInterface as type for thrownType to also cover case where erroneously an interface
// type is declared as thrown exception
from ThrowsTag throwsTag, ClassOrInterface thrownType, Callable docMethod
where
getTaggedType(throwsTag) = thrownType and
docMethod.getDoc().getJavadoc().getAChild*() = throwsTag and
not canThrow(docMethod, thrownType)
not thrownType instanceof UncheckedThrowableType and
not docMethod.getAnException().getType().getADescendant() = thrownType
select throwsTag,
"Javadoc for " + docMethod + " claims to throw " + thrownType.getName() +
" but this is impossible."