Skip to content

Commit f810858

Browse files
committed
Java: Manual rewrite of the ExternalLibraryUsage query to limit the number of returned results.
1 parent b9b4aed commit f810858

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

java/ql/src/Telemetry/ExternalLibraryUsage.ql

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,28 @@
99
import java
1010
import ExternalApi
1111

12-
from int usages, string jarname
13-
where
12+
private predicate getRelevantUsages(string jarname, int usages) {
1413
usages =
1514
strictcount(Call c, ExternalApi a |
1615
c.getCallee().getSourceDeclaration() = a and
1716
not c.getFile() instanceof GeneratedFile and
1817
a.jarContainer() = jarname and
1918
not a.isUninteresting()
2019
)
20+
}
21+
22+
private int getOrder(string jarname) {
23+
jarname =
24+
rank[result](string jar, int usages |
25+
exists(ExternalApi api | jar = api.jarContainer()) and getRelevantUsages(jar, usages)
26+
|
27+
jar order by usages desc, jar
28+
)
29+
}
30+
31+
from ExternalApi api, string jarname, int usages
32+
where
33+
jarname = api.jarContainer() and
34+
getRelevantUsages(jarname, usages) and
35+
getOrder(jarname) <= resultLimit()
2136
select jarname, usages order by usages desc

0 commit comments

Comments
 (0)