Skip to content

Commit c97da2e

Browse files
committed
Exclude expressions that are part of a conditional expression
1 parent b7f7092 commit c97da2e

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

javascript/ql/lib/Expressions/ExprHasNoEffect.qll

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,13 @@ predicate hasNoEffect(Expr e) {
178178
e.getParent() = parent and
179179
e.getLastToken().getNextToken().getValue() = ":"
180180
) and
181+
// exclude expressions that are part of a conditional expression
182+
not exists(ConditionalExpr cond | e.getParent() = cond |
183+
e instanceof NullLiteral or
184+
e instanceof GlobalVarAccess or
185+
e.(NumberLiteral).getIntValue() = 0 or
186+
e.(UnaryExpr).getOperator() = "void"
187+
) and
181188
// exclude the first statement of a try block
182189
not e = any(TryStmt stmt).getBody().getStmt(0).(ExprStmt).getExpr() and
183190
// exclude expressions that are alone in a file, and file doesn't contain a function.

javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/ExprHasNoEffect.expected

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,4 @@
1212
| tst.js:50:3:50:36 | new Err ... age(e)) | This expression has no effect. |
1313
| tst.js:61:2:61:20 | o.trivialNonGetter1 | This expression has no effect. |
1414
| tst.js:77:24:77:24 | o | This expression has no effect. |
15-
| tst.js:83:43:83:46 | null | This expression has no effect. |
16-
| tst.js:84:42:84:45 | null | This expression has no effect. |
1715
| uselessfn.js:1:2:1:26 | functio ... d.");\\n} | This expression has no effect. |

javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/tst.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ function g() {
8080
consume(testSomeCondition() ? o :
8181
doSomethingDangerous());
8282

83-
("release" === isRelease() ? warning() : null); // $ Alert
84-
"release" === isRelease() ? warning() : null; // $ Alert
83+
("release" === isRelease() ? warning() : null);
84+
"release" === isRelease() ? warning() : null;
85+
"release" === isRelease() ? warning() : 0;
86+
"release" === isRelease() ? warning() : undefined;
8587
};

0 commit comments

Comments
 (0)