Java: Get location ordering without toString

This commit is contained in:
Taus
2023-05-26 14:52:08 +00:00
parent efe539eb32
commit 227c5fab40

View File

@@ -8,6 +8,7 @@
* @tags internal extract automodel application-mode negative examples * @tags internal extract automodel application-mode negative examples
*/ */
private import java
private import AutomodelApplicationModeCharacteristics private import AutomodelApplicationModeCharacteristics
private import AutomodelEndpointTypes private import AutomodelEndpointTypes
private import AutomodelSharedUtil private import AutomodelSharedUtil
@@ -19,7 +20,14 @@ bindingset[limit]
Endpoint getSampleForCharacteristic(EndpointCharacteristic c, int limit) { Endpoint getSampleForCharacteristic(EndpointCharacteristic c, int limit) {
exists(int n | exists(int n |
result = result =
rank[n](Endpoint e2 | c.appliesToEndpoint(e2) | e2 order by e2.getLocation().toString()) and rank[n](Endpoint e, Location loc |
loc = e.getLocation() and c.appliesToEndpoint(e)
|
e
order by
loc.getFile().getAbsolutePath(), loc.getStartLine(), loc.getStartColumn(),
loc.getEndLine(), loc.getEndColumn()
) and
// we order the endpoints by location, but (to avoid bias) we select the indices semi-randomly // we order the endpoints by location, but (to avoid bias) we select the indices semi-randomly
n = 1 + (([1 .. limit] * 271) % count(Endpoint e | c.appliesToEndpoint(e))) n = 1 + (([1 .. limit] * 271) % count(Endpoint e | c.appliesToEndpoint(e)))
) )