C++: Exclude macros that don't generate anything.

This commit is contained in:
Geoffrey White
2021-05-12 14:51:47 +01:00
parent b6d5f7c315
commit 9404d0676d
3 changed files with 11 additions and 4 deletions

View File

@@ -23,7 +23,10 @@ Function getAnInsecureFunction() {
}
class InsecureFunctionCall extends InsecureCryptoSpec, FunctionCall {
InsecureFunctionCall() { this.getTarget() = getAnInsecureFunction() }
InsecureFunctionCall() {
// the function name suggests it relates to an insecure crypto algorithm.
this.getTarget() = getAnInsecureFunction()
}
override string description() { result = "function call" }
@@ -38,7 +41,12 @@ Macro getAnInsecureMacro() {
}
class InsecureMacroSpec extends InsecureCryptoSpec, MacroInvocation {
InsecureMacroSpec() { this.getMacro() = getAnInsecureMacro() }
InsecureMacroSpec() {
// the macro name suggests it relates to an insecure crypto algorithm.
this.getMacro() = getAnInsecureMacro() and
// the macro invocation generates something.
exists(this.getAGeneratedElement())
}
override string description() { result = "macro invocation" }