/** * @name Missing documentation for exception * @description Exceptions thrown by the method should be documented using ' ' tags. * Ensure that the correct type of the exception is given in the 'cref' attribute. * @kind problem * @problem.severity recommendation * @precision low * @id cs/xmldoc/missing-exception * @tags maintainability */ import Documentation from SourceMethodOrConstructor m, ThrowElement throw, RefType throwType where declarationHasXmlComment(m) and m = throw.getEnclosingCallable() and throwType = throw.getExpr().getType() and not exists(ExceptionXmlComment comment, int offset, string exceptionName, RefType throwBaseType | comment = getADeclarationXmlComment(m) and exceptionName = comment.getCref(offset) and throwType.getABaseType*() = throwBaseType and (throwBaseType.hasName(exceptionName) or throwBaseType.hasQualifiedName(exceptionName)) // and comment.hasBody(offset) // Too slow ) and not getADeclarationXmlComment(m) instanceof InheritDocXmlComment select m, "Exception $@ should be documented.", throw, throw.getExpr().getType().getName()