Skip to content

Commit fe477ff

Browse files
committed
Fix more models based on review comments
1 parent 2000985 commit fe477ff

File tree

2 files changed

+64
-30
lines changed

2 files changed

+64
-30
lines changed

java/ql/src/semmle/code/java/frameworks/apache/Collections.qll

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -290,11 +290,15 @@ private class ApacheCollectionUtilsModel extends SummaryModelCsv {
290290
";CollectionUtils;true;predicatedCollection;;;Element of Argument[0];Element of ReturnValue;value",
291291
";CollectionUtils;true;removeAll;;;Element of Argument[0];Element of ReturnValue;value",
292292
";CollectionUtils;true;retainAll;;;Element of Argument[0];Element of ReturnValue;value",
293-
";CollectionUtils;true;select;;;Element of Argument[0];Element of ReturnValue;value",
294-
";CollectionUtils;true;select;;;Element of Argument[0];Element of Argument[2];value",
295-
";CollectionUtils;true;select;;;Element of Argument[0];Element of Argument[3];value",
296-
";CollectionUtils;true;selectRejected;;;Element of Argument[0];Element of ReturnValue;value",
297-
";CollectionUtils;true;selectRejected;;;Element of Argument[0];Element of Argument[2];value",
293+
";CollectionUtils;true;select;(Iterable,Predicate);;Element of Argument[0];Element of ReturnValue;value",
294+
";CollectionUtils;true;select;(Iterable,Predicate,Collection);;Element of Argument[0];Element of Argument[2];value",
295+
";CollectionUtils;true;select;(Iterable,Predicate,Collection);;Argument[2];ReturnValue;value",
296+
";CollectionUtils;true;select;(Iterable,Predicate,Collection,Collection);;Element of Argument[0];Element of Argument[2];value",
297+
";CollectionUtils;true;select;(Iterable,Predicate,Collection,Collection);;Element of Argument[0];Element of Argument[3];value",
298+
";CollectionUtils;true;select;(Iterable,Predicate,Collection,Collection);;Argument[2];ReturnValue;value",
299+
";CollectionUtils;true;selectRejected;(Iterable,Predicate);;Element of Argument[0];Element of ReturnValue;value",
300+
";CollectionUtils;true;selectRejected;(Iterable,Predicate,Collection);;Element of Argument[0];Element of Argument[2];value",
301+
";CollectionUtils;true;selectRejected;(Iterable,Predicate,Collection);;Argument[2];ReturnValue;value",
298302
";CollectionUtils;true;subtract;;;Element of Argument[0];Element of ReturnValue;value",
299303
";CollectionUtils;true;synchronizedCollection;;;Element of Argument[0];Element of ReturnValue;value",
300304
";CollectionUtils;true;transformingCollection;;;Element of Argument[0];Element of ReturnValue;value",
@@ -372,6 +376,7 @@ private class ApacheIteratorUtilsModel extends SummaryModelCsv {
372376
";IteratorUtils;true;filteredListIterator;;;Element of Argument[0];Element of ReturnValue;value",
373377
";IteratorUtils;true;find;;;Element of Argument[0];ReturnValue;value",
374378
";IteratorUtils;true;first;;;Element of Argument[0];ReturnValue;value",
379+
";IteratorUtils;true;forEachButLast;;;Element of Argument[0];ReturnValue;value",
375380
";IteratorUtils;true;get;;;Element of Argument[0];ReturnValue;value",
376381
";IteratorUtils;true;getIterator;;;Element of Argument[0];Element of ReturnValue;value",
377382
";IteratorUtils;true;getIterator;;;ArrayElement of Argument[0];Element of ReturnValue;value",
@@ -432,6 +437,7 @@ private class ApacheIterableUtilsModel extends SummaryModelCsv {
432437
";IterableUtils;true;filteredIterable;;;Element of Argument[0];Element of ReturnValue;value",
433438
";IterableUtils;true;find;;;Element of Argument[0];ReturnValue;value",
434439
";IterableUtils;true;first;;;Element of Argument[0];ReturnValue;value",
440+
";IterableUtils;true;forEachButLast;;;Element of Argument[0];ReturnValue;value",
435441
";IterableUtils;true;get;;;Element of Argument[0];ReturnValue;value",
436442
";IterableUtils;true;loopingIterable;;;Element of Argument[0];Element of ReturnValue;value",
437443
";IterableUtils;true;partition;;;Element of Argument[0];Element of Element of ReturnValue;value",
@@ -475,9 +481,9 @@ private class ApacheMultiMapUtilsModel extends SummaryModelCsv {
475481
[
476482
";MultiMapUtils;true;emptyIfNull;;;Argument[0];ReturnValue;value",
477483
";MultiMapUtils;true;getCollection;;;MapValue of Argument[0];ReturnValue;value",
478-
";MultiMapUtils;true;getValuesAsBag;;;MapValue of Argument[0];ReturnValue;value",
479-
";MultiMapUtils;true;getValuesAsList;;;MapValue of Argument[0];ReturnValue;value",
480-
";MultiMapUtils;true;getValuesAsSet;;;MapValue of Argument[0];ReturnValue;value",
484+
";MultiMapUtils;true;getValuesAsBag;;;Element of MapValue of Argument[0];Element of ReturnValue;value",
485+
";MultiMapUtils;true;getValuesAsList;;;Element of MapValue of Argument[0];Element of ReturnValue;value",
486+
";MultiMapUtils;true;getValuesAsSet;;;Element of MapValue of Argument[0];Element of ReturnValue;value",
481487
";MultiMapUtils;true;transformedMultiValuedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
482488
";MultiMapUtils;true;transformedMultiValuedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
483489
";MultiMapUtils;true;unmodifiableMultiValuedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",

java/ql/test/library-tests/frameworks/apache-collections/Test.java

Lines changed: 50 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1446,66 +1446,80 @@ public void test() {
14461446
sink(getElement(out)); // $ hasValueFlow
14471447
}
14481448
{
1449-
// "org.apache.commons.collections4;CollectionUtils;true;select;;;Element of Argument[0];Element of Argument[2];value"
1449+
// "org.apache.commons.collections4;CollectionUtils;true;select;(Iterable,Predicate);;Element of Argument[0];Element of ReturnValue;value"
14501450
Collection out = null;
14511451
Iterable in = newVectorWithElement((String)source());
1452-
CollectionUtils.select(in, null, out, null);
1452+
out = CollectionUtils.select(in, null);
14531453
sink(getElement(out)); // $ hasValueFlow
14541454
}
14551455
{
1456-
// "org.apache.commons.collections4;CollectionUtils;true;select;;;Element of Argument[0];Element of Argument[2];value"
1456+
// "org.apache.commons.collections4;CollectionUtils;true;select;(Iterable,Predicate,Collection);;Argument[2];ReturnValue;value"
1457+
Collection out = null;
1458+
Collection in = (Collection)source();
1459+
out = CollectionUtils.select(null, null, in);
1460+
sink(out); // $ hasValueFlow
1461+
}
1462+
{
1463+
// "org.apache.commons.collections4;CollectionUtils;true;select;(Iterable,Predicate,Collection);;Element of Argument[0];Element of Argument[2];value"
14571464
Collection out = null;
14581465
Iterable in = newVectorWithElement((String)source());
14591466
CollectionUtils.select(in, null, out);
14601467
sink(getElement(out)); // $ hasValueFlow
14611468
}
14621469
{
1463-
// "org.apache.commons.collections4;CollectionUtils;true;select;;;Element of Argument[0];Element of Argument[3];value"
1470+
Collection mid = null;
14641471
Collection out = null;
14651472
Iterable in = newVectorWithElement((String)source());
1466-
CollectionUtils.select(in, null, null, out);
1473+
out = CollectionUtils.select(in, null, mid);
14671474
sink(getElement(out)); // $ hasValueFlow
14681475
}
14691476
{
1470-
// "org.apache.commons.collections4;CollectionUtils;true;select;;;Element of Argument[0];Element of ReturnValue;value"
1477+
// "org.apache.commons.collections4;CollectionUtils;true;select;(Iterable,Predicate,Collection,Collection);;Argument[2];ReturnValue;value"
14711478
Collection out = null;
1472-
Iterable in = newVectorWithElement((String)source());
1473-
out = CollectionUtils.select(in, null, null, null);
1474-
sink(getElement(out)); // $ hasValueFlow
1479+
Collection in = (Collection)source();
1480+
out = CollectionUtils.select(null, null, in, null);
1481+
sink(out); // $ hasValueFlow
14751482
}
14761483
{
1477-
// "org.apache.commons.collections4;CollectionUtils;true;select;;;Element of Argument[0];Element of ReturnValue;value"
1484+
// "org.apache.commons.collections4;CollectionUtils;true;select;(Iterable,Predicate,Collection,Collection);;Element of Argument[0];Element of Argument[2];value"
14781485
Collection out = null;
14791486
Iterable in = newVectorWithElement((String)source());
1480-
out = CollectionUtils.select(in, null, null);
1487+
CollectionUtils.select(in, null, out, null);
14811488
sink(getElement(out)); // $ hasValueFlow
14821489
}
14831490
{
1484-
// "org.apache.commons.collections4;CollectionUtils;true;select;;;Element of Argument[0];Element of ReturnValue;value"
1491+
Collection mid = null;
14851492
Collection out = null;
14861493
Iterable in = newVectorWithElement((String)source());
1487-
out = CollectionUtils.select(in, null);
1494+
out = CollectionUtils.select(in, null, mid, null);
14881495
sink(getElement(out)); // $ hasValueFlow
14891496
}
14901497
{
1491-
// "org.apache.commons.collections4;CollectionUtils;true;selectRejected;;;Element of Argument[0];Element of Argument[2];value"
1498+
// "org.apache.commons.collections4;CollectionUtils;true;select;(Iterable,Predicate,Collection,Collection);;Element of Argument[0];Element of Argument[3];value"
14921499
Collection out = null;
14931500
Iterable in = newVectorWithElement((String)source());
1494-
CollectionUtils.selectRejected(in, null, out);
1501+
CollectionUtils.select(in, null, null, out);
14951502
sink(getElement(out)); // $ hasValueFlow
14961503
}
14971504
{
1498-
// "org.apache.commons.collections4;CollectionUtils;true;selectRejected;;;Element of Argument[0];Element of ReturnValue;value"
1505+
// "org.apache.commons.collections4;CollectionUtils;true;selectRejected;(Iterable,Predicate);;Element of Argument[0];Element of ReturnValue;value"
14991506
Collection out = null;
15001507
Iterable in = newVectorWithElement((String)source());
1501-
out = CollectionUtils.selectRejected(in, null, null);
1508+
out = CollectionUtils.selectRejected(in, null);
15021509
sink(getElement(out)); // $ hasValueFlow
15031510
}
15041511
{
1505-
// "org.apache.commons.collections4;CollectionUtils;true;selectRejected;;;Element of Argument[0];Element of ReturnValue;value"
1512+
// "org.apache.commons.collections4;CollectionUtils;true;selectRejected;(Iterable,Predicate,Collection);;Argument[2];ReturnValue;value"
1513+
Collection out = null;
1514+
Collection in = (Collection)source();
1515+
out = CollectionUtils.selectRejected(null, null, in);
1516+
sink(out); // $ hasValueFlow
1517+
}
1518+
{
1519+
// "org.apache.commons.collections4;CollectionUtils;true;selectRejected;(Iterable,Predicate,Collection);;Element of Argument[0];Element of Argument[2];value"
15061520
Collection out = null;
15071521
Iterable in = newVectorWithElement((String)source());
1508-
out = CollectionUtils.selectRejected(in, null);
1522+
CollectionUtils.selectRejected(in, null, out);
15091523
sink(getElement(out)); // $ hasValueFlow
15101524
}
15111525
{
@@ -2088,6 +2102,13 @@ public void test() {
20882102
out = IterableUtils.first(in);
20892103
sink(out); // $ hasValueFlow
20902104
}
2105+
{
2106+
// "org.apache.commons.collections4;IterableUtils;true;forEachButLast;;;Element of Argument[0];ReturnValue;value"
2107+
Object out = null;
2108+
Iterable in = newVectorWithElement((String)source());
2109+
out = IterableUtils.forEachButLast(in, null);
2110+
sink(out); // $ hasValueFlow
2111+
}
20912112
{
20922113
// "org.apache.commons.collections4;IterableUtils;true;get;;;Element of Argument[0];ReturnValue;value"
20932114
Object out = null;
@@ -2424,6 +2445,13 @@ public void test() {
24242445
out = IteratorUtils.first(in);
24252446
sink(out); // $ hasValueFlow
24262447
}
2448+
{
2449+
// "org.apache.commons.collections4;IteratorUtils;true;forEachButLast;;;Element of Argument[0];ReturnValue;value"
2450+
Object out = null;
2451+
Iterator in = newListIteratorWithElement((String)source());
2452+
out = IteratorUtils.forEachButLast(in, null);
2453+
sink(out); // $ hasValueFlow
2454+
}
24272455
{
24282456
// "org.apache.commons.collections4;IteratorUtils;true;get;;;Element of Argument[0];ReturnValue;value"
24292457
Object out = null;
@@ -2936,21 +2964,21 @@ public void test() {
29362964
sink(getElement(out)); // $ hasValueFlow
29372965
}
29382966
{
2939-
// "org.apache.commons.collections4;MultiMapUtils;true;getValuesAsBag;;;MapValue of Argument[0];ReturnValue;value"
2967+
// "org.apache.commons.collections4;MultiMapUtils;true;getValuesAsBag;;;Element of MapValue of Argument[0];Element of ReturnValue;value"
29402968
Bag out = null;
29412969
MultiValuedMap in = newALVHMWithMapValue((String)source());
29422970
out = MultiMapUtils.getValuesAsBag(in, null);
29432971
sink(getElement(out)); // $ hasValueFlow
29442972
}
29452973
{
2946-
// "org.apache.commons.collections4;MultiMapUtils;true;getValuesAsList;;;MapValue of Argument[0];ReturnValue;value"
2974+
// "org.apache.commons.collections4;MultiMapUtils;true;getValuesAsList;;;Element of MapValue of Argument[0];Element of ReturnValue;value"
29472975
List out = null;
29482976
MultiValuedMap in = newALVHMWithMapValue((String)source());
29492977
out = MultiMapUtils.getValuesAsList(in, null);
29502978
sink(getElement(out)); // $ hasValueFlow
29512979
}
29522980
{
2953-
// "org.apache.commons.collections4;MultiMapUtils;true;getValuesAsSet;;;MapValue of Argument[0];ReturnValue;value"
2981+
// "org.apache.commons.collections4;MultiMapUtils;true;getValuesAsSet;;;Element of MapValue of Argument[0];Element of ReturnValue;value"
29542982
Set out = null;
29552983
MultiValuedMap in = newALVHMWithMapValue((String)source());
29562984
out = MultiMapUtils.getValuesAsSet(in, null);

0 commit comments

Comments
 (0)