better things extraction of constants

This commit is contained in:
2026-06-22 07:30:05 +02:00
parent 07d241a060
commit 24a9be3a4e
2 changed files with 109 additions and 4 deletions

View File

@@ -737,15 +737,15 @@ public abstract class AbstractCallGraphEngine implements CallGraphEngine {
extractConstantsFromExpression(aa.getArray(), constants);
} else if (expr instanceof org.eclipse.jdt.core.dom.ArrayCreation ac && ac.getInitializer() != null) {
for (Object expObj : ac.getInitializer().expressions()) {
extractConstantsFromExpression((org.eclipse.jdt.core.dom.Expression) expObj, constants);
extractConstantsFromArgument((org.eclipse.jdt.core.dom.Expression) expObj, constants);
}
} else if (expr instanceof org.eclipse.jdt.core.dom.ArrayInitializer ai) {
for (Object expObj : ai.expressions()) {
extractConstantsFromExpression((org.eclipse.jdt.core.dom.Expression) expObj, constants);
extractConstantsFromArgument((org.eclipse.jdt.core.dom.Expression) expObj, constants);
}
} else if (expr instanceof org.eclipse.jdt.core.dom.ClassInstanceCreation cic) {
for (Object argObj : cic.arguments()) {
extractConstantsFromExpression((org.eclipse.jdt.core.dom.Expression) argObj, constants);
extractConstantsFromArgument((org.eclipse.jdt.core.dom.Expression) argObj, constants);
}
} else if (expr instanceof org.eclipse.jdt.core.dom.MethodInvocation mi) {
String methodName = mi.getName().getIdentifier();
@@ -826,7 +826,7 @@ public abstract class AbstractCallGraphEngine implements CallGraphEngine {
}
} else {
for (Object argObj : cic.arguments()) {
extractConstantsFromExpression((org.eclipse.jdt.core.dom.Expression) argObj, constants);
extractConstantsFromArgument((org.eclipse.jdt.core.dom.Expression) argObj, constants);
}
}
}
@@ -852,6 +852,17 @@ public abstract class AbstractCallGraphEngine implements CallGraphEngine {
}
}
private void extractConstantsFromArgument(org.eclipse.jdt.core.dom.Expression argObj, List<String> constants) {
if (argObj instanceof org.eclipse.jdt.core.dom.ClassInstanceCreation innerCic) {
String typeName = click.kamil.springstatemachineexporter.ast.common.AstUtils.extractSimpleTypeName(innerCic.getType());
if ("String".equals(typeName)) {
extractConstantsFromExpression(argObj, constants);
}
} else {
extractConstantsFromExpression(argObj, constants);
}
}
protected org.eclipse.jdt.core.dom.Block findEnclosingBlock(org.eclipse.jdt.core.dom.ASTNode node) {
org.eclipse.jdt.core.dom.ASTNode parent = node.getParent();
while (parent != null && !(parent instanceof org.eclipse.jdt.core.dom.Block)) {