Skip to content

Commit 995c47d

Browse files
Set PARAMETER_INDEX for all MethodParameterIn nodes (#365)
For: ShiftLeftSecurity/codescience#8203
1 parent 44946f0 commit 995c47d

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

src/main/scala/io/shiftleft/js2cpg/astcreation/AstNodeBuilder.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ class AstNodeBuilder(
6060
.lineNumber(line)
6161
.columnNumber(column)
6262
.order(orderTracker.order)
63+
.index(orderTracker.order)
6364
.typeFullName(Defines.Any)
6465

6566
diffGraph.addNode(param)

src/test/scala/io/shiftleft/js2cpg/passes/MixedAstCreationPassTest.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -751,9 +751,11 @@ class MixedAstCreationPassTest extends AbstractPassTest {
751751
val List(a) = fooMethod.parameter.nameExact("param1_0").l
752752
a.code shouldBe "{a}"
753753
a.order shouldBe 1
754+
a.index shouldBe 1
754755
val List(b) = fooMethod.parameter.nameExact("b").l
755756
b.code shouldBe "b"
756757
b.order shouldBe 2
758+
b.index shouldBe 2
757759
}
758760

759761
"have correct structure for object destruction assignment in call argument" in AstFixture("foo({a, b} = x);") {
@@ -1071,6 +1073,7 @@ class MixedAstCreationPassTest extends AbstractPassTest {
10711073

10721074
val List(paramA) = foo.parameter.nameExact("a").l
10731075
paramA.order shouldBe 1
1076+
paramA.index shouldBe 1
10741077

10751078
val List(block) = foo.astChildren.isBlock.l
10761079
val List(assignment) = block.astChildren.isCall.l
@@ -1090,9 +1093,11 @@ class MixedAstCreationPassTest extends AbstractPassTest {
10901093
val List(foo) = cpg.method.nameExact("foo").l
10911094
val List(paramA) = foo.parameter.nameExact("a").l
10921095
paramA.order shouldBe 1
1096+
paramA.index shouldBe 1
10931097

10941098
val List(paramB) = foo.parameter.nameExact("b").l
10951099
paramB.order shouldBe 2
1100+
paramB.index shouldBe 2
10961101

10971102
val List(block) = foo.astChildren.isBlock.l
10981103

@@ -1123,8 +1128,10 @@ class MixedAstCreationPassTest extends AbstractPassTest {
11231128
val List(foo) = cpg.method.nameExact("foo").l
11241129
val List(paramA) = foo.parameter.nameExact("a").l
11251130
paramA.order shouldBe 1
1131+
paramA.index shouldBe 1
11261132
val List(paramB) = foo.parameter.nameExact("b").l
11271133
paramB.order shouldBe 2
1134+
paramB.index shouldBe 2
11281135

11291136
val List(block) = foo.astChildren.isBlock.l
11301137
val List(assignmentB) = block.astChildren.isCall.codeExact("b = b === void 0 ? 1 : b").l
@@ -1144,10 +1151,13 @@ class MixedAstCreationPassTest extends AbstractPassTest {
11441151
val List(foo) = cpg.method.nameExact("foo").l
11451152
val List(paramA) = foo.parameter.nameExact("a").l
11461153
paramA.order shouldBe 1
1154+
paramA.index shouldBe 1
11471155
val List(paramB) = foo.parameter.nameExact("b").l
11481156
paramB.order shouldBe 2
1157+
paramB.index shouldBe 2
11491158
val List(paramC) = foo.parameter.nameExact("c").l
11501159
paramC.order shouldBe 3
1160+
paramC.index shouldBe 3
11511161

11521162
val List(block) = foo.astChildren.isBlock.l
11531163
val List(assignmentB) = block.astChildren.isCall.codeExact("b = b === void 0 ? 1 : b").l

src/test/scala/io/shiftleft/js2cpg/passes/SimpleAstCreationPassTest.scala

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,10 +283,12 @@ class SimpleAstCreationPassTest extends AbstractPassTest {
283283

284284
val List(param1, param2) = lambda.parameter.l
285285
param1.order shouldBe 0
286+
param1.index shouldBe 0
286287
param1.name shouldBe "this"
287288
param1.code shouldBe "this"
288289

289290
param2.order shouldBe 1
291+
param2.index shouldBe 1
290292
param2.name shouldBe "param1_0"
291293
param2.code shouldBe "{param}"
292294

@@ -452,8 +454,16 @@ class SimpleAstCreationPassTest extends AbstractPassTest {
452454
"have correct structure for empty method" in AstFixture("function method(x) {}") { cpg =>
453455
val List(method) = cpg.method.nameExact("method").l
454456
method.astChildren.isBlock.size shouldBe 1
455-
method.parameter.order(0).nameExact("this").typeFullName(Defines.Any).size shouldBe 1
456-
method.parameter.order(1).nameExact("x").typeFullName(Defines.Any).size shouldBe 1
457+
458+
val List(thisParam, xParam) = method.parameter.l
459+
thisParam.order shouldBe 0
460+
thisParam.index shouldBe 0
461+
thisParam.name shouldBe "this"
462+
thisParam.typeFullName shouldBe Defines.Any
463+
xParam.order shouldBe 1
464+
xParam.index shouldBe 1
465+
xParam.name shouldBe "x"
466+
xParam.typeFullName shouldBe Defines.Any
457467
}
458468

459469
"have correct structure for decl assignment" in AstFixture("function foo(x) { var local = 1; }") { cpg =>
@@ -462,9 +472,11 @@ class SimpleAstCreationPassTest extends AbstractPassTest {
462472

463473
val List(t, x) = method.parameter.l
464474
t.order shouldBe 0
475+
t.index shouldBe 0
465476
t.name shouldBe "this"
466477
t.typeFullName shouldBe Defines.Any
467478
x.order shouldBe 1
479+
x.index shouldBe 1
468480
x.name shouldBe "x"
469481
x.typeFullName shouldBe Defines.Any
470482

@@ -484,9 +496,11 @@ class SimpleAstCreationPassTest extends AbstractPassTest {
484496

485497
val List(t, x) = method.parameter.l
486498
t.order shouldBe 0
499+
t.index shouldBe 0
487500
t.name shouldBe "this"
488501
t.typeFullName shouldBe Defines.Any
489502
x.order shouldBe 1
503+
x.index shouldBe 1
490504
x.name shouldBe "x"
491505
x.typeFullName shouldBe Defines.Any
492506

@@ -507,12 +521,15 @@ class SimpleAstCreationPassTest extends AbstractPassTest {
507521

508522
val List(t, x, y) = method.parameter.l
509523
t.order shouldBe 0
524+
t.index shouldBe 0
510525
t.name shouldBe "this"
511526
t.typeFullName shouldBe Defines.Any
512527
x.order shouldBe 1
528+
x.index shouldBe 1
513529
x.name shouldBe "x"
514530
x.typeFullName shouldBe Defines.Any
515531
y.order shouldBe 2
532+
y.index shouldBe 2
516533
y.name shouldBe "y"
517534
y.typeFullName shouldBe Defines.Any
518535

@@ -681,9 +698,11 @@ class SimpleAstCreationPassTest extends AbstractPassTest {
681698
val List(method) = cpg.method.nameExact("method").l
682699

683700
val List(parameterInX) = method.parameter.order(1).l
701+
parameterInX.index shouldBe 1
684702
parameterInX.name shouldBe "x"
685703

686704
val List(parameterInY) = method.parameter.order(2).l
705+
parameterInY.index shouldBe 2
687706
parameterInY.name shouldBe "y"
688707

689708
val List(methodBlock) = method.astChildren.isBlock.l

0 commit comments

Comments
 (0)