Skip to content

Commit b3a6c84

Browse files
committed
mining: make array equals hint binding-safe
1 parent 38c413f commit b3a6c84

1 file changed

Lines changed: 17 additions & 14 deletions

File tree

  • sandbox_common_core/src/main/resources/org/sandbox/jdt/triggerpattern/internal
Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,38 @@
11
// arrays.sandbox-hint — Array Utility Patterns
2-
// Replaces verbose array patterns with more efficient alternatives
2+
// Replaces verbose array patterns with more efficient alternatives where this is
3+
// safe without type bindings.
34

45
<!id: arrays>
56
<!description: Array utility patterns and modernization>
67
<!severity: info>
78
<!minJavaVersion: 8>
89
<!tags: arrays, modernization>
910

10-
// Arrays.asList($arr).stream() → Arrays.stream($arr)
11+
@id: arrays.aslist-stream.to-arrays-stream
12+
@severity: info
1113
java.util.Arrays.asList($arr).stream() :: sourceVersionGE(8)
1214
=> java.util.Arrays.stream($arr)
1315
;;
1416

15-
// Hint-only: Arrays.asList for contains check
16-
"Consider using Arrays.stream($arr).anyMatch() instead of Arrays.asList().contains()":
17+
@id: arrays.aslist-contains.review
18+
@severity: info
19+
"Consider Arrays.stream($arr).anyMatch(...) instead of Arrays.asList($arr).contains(...) when this is an array membership check.":
1720
java.util.Arrays.asList($arr).contains($x) :: sourceVersionGE(8)
1821
;;
1922

20-
// Hint-only: arr.clone() could use Arrays.copyOf
21-
"Consider using Arrays.copyOf($arr, $arr.length) instead of clone()":
23+
@id: arrays.clone.review
24+
@severity: info
25+
"Consider Arrays.copyOf($arr, $arr.length) instead of clone() when a typed copy is clearer.":
2226
$arr.clone()
2327
;;
2428

25-
// Hint-only: System.arraycopy could use Arrays.copyOf when applicable
26-
"Consider using Arrays.copyOf() instead of System.arraycopy() for full-array copies":
29+
@id: arrays.arraycopy-full-copy.review
30+
@severity: info
31+
"Consider Arrays.copyOf() instead of System.arraycopy() for simple full-array copies.":
2732
System.arraycopy($src, 0, $dst, 0, $src.length)
2833
;;
2934

30-
@id: arrays.compare.object-equals-to-arrays-equals
31-
@severity: warning
32-
java.util.Objects.equals($array1, $array2)
33-
:: instanceof($array1, "java.lang.Object[]") && instanceof($array2, "java.lang.Object[]")
34-
=> java.util.Arrays.equals($array1, $array2)
35-
;;
35+
// Do not add Objects.equals(array1, array2) -> Arrays.equals(array1, array2)
36+
// here without reliable type bindings. With binding-less mining, an array type
37+
// guard currently cannot distinguish Object[] from ordinary objects, producing
38+
// false positives for normal equals implementations.

0 commit comments

Comments
 (0)