@@ -105,29 +105,40 @@ deprecated class ExternalAPI = ExternalApi;
105105int resultLimit ( ) { result = 1000 }
106106
107107/**
108- * Holds if the relevant usage count of `api` is `usages `.
108+ * Holds if it is relevant to count usages of `api`.
109109 */
110- signature predicate relevantUsagesSig ( ExternalApi api , int usages ) ;
110+ signature predicate relevantApi ( ExternalApi api ) ;
111111
112112/**
113113 * Given a predicate to count relevant API usages, this module provides a predicate
114114 * for restricting the number or returned results based on a certain limit.
115115 */
116- module Results< relevantUsagesSig / 2 getRelevantUsages> {
117- private int getOrder ( ExternalApi api ) {
118- api =
119- rank [ result ] ( ExternalApi a , int usages |
120- getRelevantUsages ( a , usages )
116+ module Results< relevantApi / 1 getRelevantUsages> {
117+ private int getUsages ( string apiName ) {
118+ result =
119+ strictcount ( Call c , ExternalApi api |
120+ c .getCallee ( ) .getSourceDeclaration ( ) = api and
121+ not c .getFile ( ) instanceof GeneratedFile and
122+ apiName = api .getApiName ( ) and
123+ getRelevantUsages ( api )
124+ )
125+ }
126+
127+ private int getOrder ( string apiInfo ) {
128+ apiInfo =
129+ rank [ result ] ( string info , int usages |
130+ usages = getUsages ( info )
121131 |
122- a order by usages desc , a . getApiName ( )
132+ info order by usages desc , info
123133 )
124134 }
125135
126136 /**
127- * Holds if `api` is being used `usages` times and if it is
128- * in the top results (guarded by resultLimit).
137+ * Holds if there exists an API with `apiName` that is being used `usages` times
138+ * and if it is in the top results (guarded by resultLimit).
129139 */
130- predicate restrict ( ExternalApi api , int usages ) {
131- getRelevantUsages ( api , usages ) and getOrder ( api ) <= resultLimit ( )
140+ predicate restrict ( string apiName , int usages ) {
141+ usages = getUsages ( apiName ) and
142+ getOrder ( apiName ) <= resultLimit ( )
132143 }
133144}
0 commit comments