diff --git a/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/symbol/SymbolExtractor.java b/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/symbol/SymbolExtractor.java index 88abfadde0f..1a4ef52b37d 100644 --- a/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/symbol/SymbolExtractor.java +++ b/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/symbol/SymbolExtractor.java @@ -82,8 +82,13 @@ private static Collection extractInterfaces(ClassNode classNode) { private static List extractFields(ClassNode classNode) { List fields = new ArrayList<>(); for (FieldNode fieldNode : classNode.fields) { - SymbolType symbolType = - ASMHelper.isStaticField(fieldNode) ? SymbolType.STATIC_FIELD : SymbolType.FIELD; + boolean isStatic = ASMHelper.isStaticField(fieldNode); + boolean isFinal = ASMHelper.isFinalField(fieldNode); + if (isFinal && isStatic) { + // skip final static fields, considered as constant and not captured by context probes + continue; + } + SymbolType symbolType = isStatic ? SymbolType.STATIC_FIELD : SymbolType.FIELD; LanguageSpecifics fieldSpecifics = new LanguageSpecifics.Builder() .addModifiers(extractFieldModifiers(fieldNode.access)) diff --git a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/symbol/SymbolExtractionTransformerTest.java b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/symbol/SymbolExtractionTransformerTest.java index 7f576c39aa5..5e61cef1fb0 100644 --- a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/symbol/SymbolExtractionTransformerTest.java +++ b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/symbol/SymbolExtractionTransformerTest.java @@ -837,23 +837,8 @@ public void symbolExtraction14() throws IOException, URISyntaxException { Enum.class.getTypeName(), null, null); - assertEquals(4, myEnumClassScope.getSymbols().size()); - Symbol oneField = myEnumClassScope.getSymbols().get(0); - assertLangSpecifics( - oneField.getLanguageSpecifics(), - asList("public", "static", "final", "enum"), - null, - null, - null, - null); - Symbol valuesField = myEnumClassScope.getSymbols().get(3); - assertLangSpecifics( - valuesField.getLanguageSpecifics(), - asList("private", "static", "final", "synthetic"), - null, - null, - null, - null); + // enum constants are static final fields and therefore not extracted + assertEquals(0, myEnumClassScope.getSymbols().size()); } @Test