Skip to content

Commit 940ac13

Browse files
authored
Exclude some internal, low-level classes from transitive searches in the public callers tool. (elastic#137193)
Relates to ES-13117
1 parent 6ee83d1 commit 940ac13

File tree

1 file changed

+14
-0
lines changed
  • libs/entitlement/tools/public-callers-finder/src/main/java/org/elasticsearch/entitlement/tools/publiccallersfinder

1 file changed

+14
-0
lines changed

libs/entitlement/tools/public-callers-finder/src/main/java/org/elasticsearch/entitlement/tools/publiccallersfinder/FindUsagesClassVisitor.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,25 @@
1818
import java.lang.constant.ClassDesc;
1919
import java.lang.reflect.AccessFlag;
2020
import java.util.EnumSet;
21+
import java.util.Map;
2122
import java.util.Set;
2223

24+
import static java.util.Collections.emptySet;
2325
import static org.objectweb.asm.Opcodes.ACC_PROTECTED;
2426
import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
2527
import static org.objectweb.asm.Opcodes.ASM9;
2628

2729
class FindUsagesClassVisitor extends ClassVisitor {
2830

31+
/**
32+
* Internal classes that should be skipped for further transitive analysis.
33+
*/
34+
private static Map<MethodDescriptor, Set<String>> SKIPS = Map.of(
35+
// heavily used internal low-level APIs used to write bytecode by MethodHandles and similar
36+
new MethodDescriptor("java/nio/file/Files", "write", "(Ljava/nio/file/Path;[B[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;"),
37+
Set.of("jdk/internal/foreign/abi/BindingSpecializer", "jdk/internal/util/ClassFileDumper")
38+
);
39+
2940
private int classAccess;
3041
private boolean accessibleViaInterfaces;
3142

@@ -84,6 +95,9 @@ public void visitSource(String source, String debug) {
8495

8596
@Override
8697
public MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions) {
98+
if (SKIPS.getOrDefault(methodToFind, emptySet()).contains(className)) {
99+
return null;
100+
}
87101
return new FindUsagesMethodVisitor(super.visitMethod(access, name, descriptor, signature, exceptions), name, descriptor, access);
88102
}
89103

0 commit comments

Comments
 (0)