Exclude expressions that are part of a conditional expression

This commit is contained in:
Napalys Klicius
2025-06-10 10:42:54 +02:00
parent b7f7092ab3
commit c97da2eda5
3 changed files with 11 additions and 4 deletions

View File

@@ -178,6 +178,13 @@ predicate hasNoEffect(Expr e) {
e.getParent() = parent and
e.getLastToken().getNextToken().getValue() = ":"
) and
// exclude expressions that are part of a conditional expression
not exists(ConditionalExpr cond | e.getParent() = cond |
e instanceof NullLiteral or
e instanceof GlobalVarAccess or
e.(NumberLiteral).getIntValue() = 0 or
e.(UnaryExpr).getOperator() = "void"
) and
// exclude the first statement of a try block
not e = any(TryStmt stmt).getBody().getStmt(0).(ExprStmt).getExpr() and
// exclude expressions that are alone in a file, and file doesn't contain a function.