8000 Merge pull request #135 from codellm-devkit/code-startline-and-lexica… · codellm-devkit/codeanalyzer-java@bcd58a6 · GitHub
[go: up one dir, main page]

Skip to content

Commit bcd58a6

Browse files
authored
Merge pull request #135 from codellm-devkit/code-startline-and-lexical-preserve
Lexical preserving code attribute and new code list start attribute in callables
2 parents ec9f646 + 980d587 commit bcd58a6

File tree

2 files changed

+14
-36
lines changed

2 files changed

+14
-36
lines changed

src/main/java/com/ibm/cldk/SymbolTable.java

Lines changed: 11 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -16,38 +16,23 @@
1616
import java.util.stream.Collectors;
1717
import java.util.stream.IntStream;
1818

19+
import com.github.javaparser.*;
20+
import com.github.javaparser.ast.*;
1921
import com.github.javaparser.ast.body.*;
2022
import com.github.javaparser.ast.comments.Comment;
2123
import com.github.javaparser.ast.comments.JavadocComment;
24+
import com.github.javaparser.ast.expr.*;
2225
import com.github.javaparser.ast.nodeTypes.NodeWithJavadoc;
2326
import com.github.javaparser.ast.stmt.*;
27+
import com.github.javaparser.printer.lexicalpreservation.LexicalPreservingPrinter;
28+
import com.ibm.cldk.entities.*;
2429
import com.ibm.cldk.javaee.EntrypointsFinderFactory;
2530
import org.apache.commons.lang3.tuple.Pair;
2631

27-
import com.github.javaparser.JavaParser;
28-
import com.github.javaparser.ParseResult;
29-
import com.github.javaparser.ParserConfiguration;
30-
import com.github.javaparser.Problem;
31-
import com.github.javaparser.ast.AccessSpecifier;
32-
import com.github.javaparser.ast.CompilationUnit;
33-
import com.github.javaparser.ast.Node;
34-
import com.github.javaparser.ast.NodeList;
35-
import com.github.javaparser.ast.expr.AnnotationExpr;
36-
import com.github.javaparser.ast.expr.AssignExpr;
37-
import com.github.javaparser.ast.expr.CastExpr;
38-
import com.github.javaparser.ast.expr.ConditionalExpr;
39-
import com.github.javaparser.ast.expr.Expression;
40-
import com.github.javaparser.ast.expr.FieldAccessExpr;
41-
import com.github.javaparser.ast.expr.MethodCallExpr;
42-
import com.github.javaparser.ast.expr.NameExpr;
43-
import com.github.javaparser.ast.expr.ObjectCreationExpr;
4432
import com.github.javaparser.ast.nodeTypes.NodeWithName;
45-
import com.github.javaparser.ast.type.ClassOrInterfaceType;
4633
import com.github.javaparser.ast.type.ReferenceType;
4734
import com.github.javaparser.ast.type.Type;
48-
import com.github.javaparser.resolution.UnsolvedSymbolException;
4935
import com.github.javaparser.resolution.declarations.ResolvedMethodDeclaration;
50-
import com.github.javaparser.resolution.declarations.ResolvedReferenceTypeDeclaration;
5136
import com.github.javaparser.resolution.types.ResolvedType;
5237
import com.github.javaparser.symbolsolver.JavaSymbolSolver;
5338
import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver;
@@ -57,17 +42,6 @@
5742
import com.github.javaparser.utils.SourceRoot;
5843
import com.google.common.collect.Table;
5944
import com.google.common.collect.Tables;
60-
import com.ibm.cldk.entities.CRUDOperation;
61-
import com.ibm.cldk.entities.CRUDQuery;
62-
import com.ibm.cldk.entities.CallSite;
63-
import com.ibm.cldk.entities.Callable;
64-
import com.ibm.cldk.entities.EnumConstant;
65-
import com.ibm.cldk.entities.Field;
66-
import com.ibm.cldk.entities.InitializationBlock;
67-
import com.ibm.cldk.entities.JavaCompilationUnit;
68-
import com.ibm.cldk.entities.ParameterInCallable;
69-
import com.ibm.cldk.entities.RecordComponent;
70-
import com.ibm.cldk.entities.VariableDeclaration;
7145
import com.ibm.cldk.javaee.CRUDFinderFactory;
7246
import com.ibm.cldk.javaee.utils.enums.CRUDOperationType;
7347
import com.ibm.cldk.javaee.utils.enums.CRUDQueryType;
@@ -365,7 +339,7 @@ private static InitializationBlock createInitializationBlock(InitializerDeclarat
365339
return throwStmt.asThrowStmt().getExpression().toString();
366340
}
367341
}).collect(Collectors.toList()));
368-
initializationBlock.setCode(initializerDeclaration.getBody().toString());
342+
initializationBlock.setCode(LexicalPreservingPrinter.print(initializerDeclaration.getBody()));
369343
initializationBlock.setStartLine(
370344
initializerDeclaration.getRange().isPresent() ? initializerDeclaration.getRange().get().begin.line
371345
: -1);
@@ -589,7 +563,8 @@ private static Pair<String, Callable> processCallableDeclaration(CallableDeclara
589563
callableNode.setStartLine(callableDecl.getRange().isPresent() ? callableDecl.getRange().get().begin.line : -1);
590564
callableNode.setEndLine(callableDecl.getRange().isPresent() ? callableDecl.getRange().get().end.line : -1);
591565
callableNode.setReferencedTypes(getReferencedTypes(body));
592-
callableNode.setCode(body.isPresent() ? body.get().toString() : "");
566+
callableNode.setCode(body.isPresent() ? LexicalPreservingPrinter.print(body.get()) : "");
567+
callableNode.setCodeStartLine(body.isPresent()? body.get().getBegin().get().line : -1);
593568

594569
callableNode.setAccessedFields(getAccessedFields(body, classFields, typeName));
595570
callableNode.setCallSites(getCallSites(body));
@@ -1115,7 +1090,7 @@ public static Pair<Map<String, JavaCompilationUnit>, Map<String, List<Problem>>>
11151090
for (SourceRoot sourceRoot : projectRoot.getSourceRoots()) {
11161091
for (ParseResult<CompilationUnit> parseResult : sourceRoot.tryToParse()) {
11171092
if (parseResult.isSuccessful()) {
1118-
CompilationUnit compilationUnit = parseResult.getResult().get();
1093+
CompilationUnit compilationUnit = LexicalPreservingPrinter.setup(parseResult.getResult().get());
11191094
symbolTable.put(compilationUnit.getStorage().get().getPath().toString(),
11201095
processCompilationUnit(compilationUnit));
11211096
} else {
@@ -1141,7 +1116,7 @@ public static Pair<Map<String, JavaCompilationUnit>, Map<String, List<Problem>>>
11411116
JavaParser javaParser = new JavaParser(parserConfiguration);
11421117
ParseResult<CompilationUnit> parseResult = javaParser.parse(code);
11431118
if (parseResult.isSuccessful()) {
1144-
CompilationUnit compilationUnit = parseResult.getResult().get();
1119+
CompilationUnit compilationUnit = LexicalPreservingPrinter.setup(parseResult.getResult().get());
11451120
Log.debug("Successfully parsed code. Now processing compilation unit");
11461121
symbolTable.put("<pseudo-path>", processCompilationUnit(compilationUnit));
11471122
} else {
@@ -1183,7 +1158,7 @@ public static Pair<Map<String, JavaCompilationUnit>, Map<String, List<Problem>>>
11831158
for (Path javaFilePath : javaFilePaths) {
11841159
ParseResult<CompilationUnit> parseResult = javaParser.parse(javaFilePath);
11851160
if (parseResult.isSuccessful()) {
1186-
CompilationUnit compilationUnit = parseResult.getResult().get();
1161+
CompilationUnit compilationUnit = LexicalPreservingPrinter.setup(parseResult.getResult().get());
11871162
System.out.println("Successfully parsed file: " + javaFilePath.toString());
11881163
symbolTable.put(compilationUnit.getStorage().get().getPath().toString(),
11891164
processCompilationUnit(compilationUnit));

src/main/java/com/ibm/cldk/entities/Callable.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ public class Callable {
7070
/** The ending line number of the callable entity in the source file. */
7171
private int endLine;
7272

73+
/** The starting line number of the callable code in the source file. */
74+
private int codeStartLine;
75+
7376
/** The return type of the callable entity. */
7477
private String returnType = null;
7578

0 commit comments

Comments
 (0)
0