Skip to content

Commit 9049407

Browse files
committed
PS: More AST cleanup.
1 parent 655cb8e commit 9049407

File tree

4 files changed

+20
-4
lines changed

4 files changed

+20
-4
lines changed

powershell/ql/lib/semmle/code/powershell/InvokeMemberExpression.qll

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,15 @@ class InvokeMemberExpr extends @invoke_member_expression, MemberExprBase {
55

66
Expr getQualifier() { invoke_member_expression(this, result, _) }
77

8+
string getName() { result = this.getMember().(StringConstExpr).getValue().getValue() }
9+
810
CmdElement getMember() { invoke_member_expression(this, _, result) }
911

1012
Expr getArgument(int i) { invoke_member_expression_argument(this, i, result) }
1113

1214
Expr getAnArgument() { invoke_member_expression_argument(this, _, result) }
1315

14-
override string toString() { result = "call to " + this.getMember() }
16+
override string toString() { result = "call to " + this.getName() }
17+
18+
override predicate isStatic() { this.getQualifier() instanceof TypeNameExpr }
1519
}

powershell/ql/lib/semmle/code/powershell/MemberExpr.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class MemberExpr extends @member_expression, MemberExprBase {
1212

1313
predicate isNullConditional() { member_expression(this, _, _, true, _) }
1414

15-
predicate isStatic() { member_expression(this, _, _, _, true) }
15+
override predicate isStatic() { member_expression(this, _, _, _, true) }
1616

1717
final override string toString() { result = this.getMember().toString() }
1818
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
import powershell
22

3-
class MemberExprBase extends @member_expression_base, Expr { }
3+
class MemberExprBase extends @member_expression_base, Expr {
4+
predicate isStatic() { none() }
5+
}

powershell/ql/lib/semmle/code/powershell/controlflow/CfgNodes.qll

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ abstract private class NonExprChildMapping extends ChildMapping {
128128
abstract private class AbstractCallCfgNode extends AstCfgNode {
129129
override string getAPrimaryQlClass() { result = "CfgCall" }
130130

131+
abstract string getName();
132+
131133
ExprCfgNode getQualifier() { none() }
132134

133135
abstract ExprCfgNode getArgument(int i);
@@ -137,6 +139,8 @@ abstract private class AbstractCallCfgNode extends AstCfgNode {
137139
abstract ExprCfgNode getNamedArgument(string name);
138140

139141
abstract ExprCfgNode getAnArgument();
142+
143+
abstract ExprCfgNode getCommand();
140144
}
141145

142146
final class CallCfgNode = AbstractCallCfgNode;
@@ -221,6 +225,10 @@ module ExprNodes {
221225
final override ExprCfgNode getNamedArgument(string name) { none() }
222226

223227
final override ExprCfgNode getAnArgument() { e.hasCfgChild(e.getAnArgument(), this, result) }
228+
229+
final override string getName() { none() }
230+
231+
final override ExprCfgNode getCommand() { none() }
224232
}
225233

226234
/** A control-flow node that wraps a qualifier expression. */
@@ -308,7 +316,9 @@ module StmtNodes {
308316

309317
override ExprCfgNode getAnArgument() { s.hasCfgChild(s.getAnArgument(), this, result) }
310318

311-
ExprCfgNode getCommand() { s.hasCfgChild(s.getCommand(), this, result) }
319+
final override ExprCfgNode getCommand() { s.hasCfgChild(s.getCommand(), this, result) }
320+
321+
final override string getName() { result = s.getCmdName().getValue().getValue() }
312322
}
313323

314324
private class AssignStmtChildMapping extends NonExprChildMapping, AssignStmt {

0 commit comments

Comments
 (0)