Files
codeql/cpp/ql/test/library-tests/ir/sign-analysis/SignAnalysis.ql
2022-03-15 05:16:23 -04:00

25 lines
855 B
Plaintext

import cpp
import experimental.semmle.code.cpp.semantic.analysis.SignAnalysisCommon
import experimental.semmle.code.cpp.semantic.Semantic
import semmle.code.cpp.ir.IR as IR
import TestUtilities.InlineExpectationsTest
class SignAnalysisTest extends InlineExpectationsTest {
SignAnalysisTest() { this = "SignAnalysisTest" }
override string getARelevantTag() { result = "sign" }
override predicate hasActualResult(Location location, string element, string tag, string value) {
exists(SemExpr e, IR::CallInstruction call |
call.getArgument(0) = e and
call.getStaticCallTarget().hasName("sign") and
tag = "sign" and
element = e.toString() and
location = e.getLocation() and
value = getASignString(e)
)
}
}
private string getASignString(SemExpr e) { result = strictconcat(semExprSign(e).toString(), "") }