Skip to content

Commit 5c140f8

Browse files
committed
Address Feature Request Issue 114: CLDK now supports Comment parsing APIs at file, class, method, and docstring level. We can capture report declarations, and we can parse callable parameters, get a list of methods with non-zero parameters and get their column and line locations
Signed-off-by: Rahul Krishna <[email protected]>
1 parent f3a085d commit 5c140f8

File tree

6 files changed

+24867
-24803
lines changed

6 files changed

+24867
-24803
lines changed

cldk/analysis/java/codeanalyzer/codeanalyzer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,8 +1069,8 @@ def get_all_comments(self) -> Dict[str, List[JComment]]:
10691069
Dict[str, List[str]]: Dictionary of file paths and their corresponding comments.
10701070
"""
10711071
comments = {}
1072-
for file_path, compilation_unit in self.get_symbol_table().items():
1073-
comments[file_path] = compilation_unit.comments
1072+
for file_path, _ in self.get_symbol_table().items():
1073+
comments[file_path] = self.get_comment_in_file(file_path)
10741074
return comments
10751075

10761076
def get_all_docstrings(self) -> List[Tuple[str, JComment]]:

cldk/analysis/python/python_analysis.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,12 @@ def __init__(
3535
source_code: str | None,
3636
analysis_backend_path: str | None,
3737
analysis_json_path: str | Path | None,
38-
use_graalvm_binary: bool = None,
3938
) -> None:
4039
self.project_dir = project_dir
4140
self.source_code = source_code
4241
self.analysis_json_path = analysis_json_path
4342
self.analysis_backend_path = analysis_backend_path
4443
self.eager_analysis = eager_analysis
45-
self.use_graalvm_binary = use_graalvm_binary
4644
self.analysis_backend: TreesitterPython = TreesitterPython()
4745

4846
def get_methods(self) -> List[PyMethod]:

tests/analysis/java/test_java_analysis.py

Lines changed: 2 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ def test_get_imports(test_fixture, analysis_json):
6464
analysis_json_path=None,
6565
analysis_level=AnalysisLevel.symbol_table,
6666
target_files=None,
67-
use_graalvm_binary=False,
6867
eager_analysis=False,
6968
)
7069

@@ -87,7 +86,6 @@ def test_get_variables(test_fixture, analysis_json):
8786
analysis_json_path=None,
8887
analysis_level=AnalysisLevel.symbol_table,
8988
target_files=None,
90-
use_graalvm_binary=False,
9189
eager_analysis=False,
9290
)
9391

@@ -110,7 +108,6 @@ def test_get_service_entry_point_classes(test_fixture, analysis_json):
110108
analysis_json_path=None,
111109
analysis_level=AnalysisLevel.symbol_table,
112110
target_files=None,
113-
use_graalvm_binary=False,
114111
eager_analysis=False,
115112
)
116113

@@ -133,7 +130,6 @@ def test_get_service_entry_point_methods(test_fixture, analysis_json):
133130
analysis_json_path=None,
134131
analysis_level=AnalysisLevel.symbol_table,
135132
target_files=None,
136-
use_graalvm_binary=False,
137133
eager_analysis=False,
138134
)
139135

@@ -156,7 +152,6 @@ def test_get_application_view(test_fixture, analysis_json):
156152
analysis_json_path=None,
157153
analysis_level=AnalysisLevel.symbol_table,
158154
target_files=None,
159-
use_graalvm_binary=False,
160155
eager_analysis=False,
161156
)
162157

@@ -187,7 +182,6 @@ def test_get_symbol_table(test_fixture, analysis_json):
187182
analysis_json_path=None,
188183
analysis_level=AnalysisLevel.symbol_table,
189184
target_files=None,
190-
use_graalvm_binary=False,
191185
eager_analysis=False,
192186
)
193187

@@ -211,7 +205,6 @@ def test_get_compilation_units(test_fixture, analysis_json):
211205
analysis_json_path=None,
212206
analysis_level=AnalysisLevel.symbol_table,
213207
target_files=None,
214-
use_graalvm_binary=False,
215208
eager_analysis=False,
216209
)
217210

@@ -232,7 +225,6 @@ def test_get_class_hierarchy(test_fixture, analysis_json):
232225
analysis_json_path=None,
233226
analysis_level=AnalysisLevel.symbol_table,
234227
target_files=None,
235-
use_graalvm_binary=False,
236228
eager_analysis=False,
237229
)
238230

@@ -255,7 +247,6 @@ def test_is_parsable(test_fixture, analysis_json):
255247
analysis_json_path=None,
256248
analysis_level=AnalysisLevel.symbol_table,
257249
target_files=None,
258-
use_graalvm_binary=False,
259250
eager_analysis=False,
260251
)
261252

@@ -280,7 +271,6 @@ def test_get_raw_ast(test_fixture, analysis_json):
280271
analysis_json_path=None,
281272
analysis_level=AnalysisLevel.symbol_table,
282273
target_files=None,
283-
use_graalvm_binary=False,
284274
eager_analysis=False,
285275
)
286276

@@ -308,7 +298,6 @@ def test_get_call_graph(test_fixture, analysis_json):
308298
analysis_json_path=None,
309299
analysis_level=AnalysisLevel.symbol_table,
310300
target_files=None,
311-
use_graalvm_binary=False,
312301
eager_analysis=False,
313302
)
314303

@@ -333,7 +322,6 @@ def test_get_call_graph_json(test_fixture, analysis_json):
333322
analysis_json_path=None,
334323
analysis_level=AnalysisLevel.call_graph,
335324
target_files=None,
336-
use_graalvm_binary=False,
337325
eager_analysis=False,
338326
)
339327

@@ -360,7 +348,6 @@ def test_get_callers(test_fixture, analysis_json):
360348
analysis_json_path=None,
361349
analysis_level=AnalysisLevel.call_graph,
362350
target_files=None,
363-
use_graalvm_binary=False,
364351
eager_analysis=False,
365352
)
366353

@@ -406,7 +393,6 @@ def test_get_callees(test_fixture, analysis_json):
406393
analysis_json_path=None,
407394
analysis_level=AnalysisLevel.call_graph,
408395
target_files=None,
409-
use_graalvm_binary=False,
410396
eager_analysis=False,
411397
)
412398

@@ -457,7 +443,6 @@ def test_get_methods(test_fixture, analysis_json):
457443
analysis_json_path=None,
458444
analysis_level=AnalysisLevel.symbol_table,
459445
target_files=None,
460-
use_graalvm_binary=False,
461446
eager_analysis=False,
462447
)
463448

@@ -482,7 +467,6 @@ def test_get_classes(test_fixture, analysis_json):
482467
analysis_json_path=None,
483468
analysis_level=AnalysisLevel.symbol_table,
484469
target_files=None,
485-
use_graalvm_binary=False,
486470
eager_analysis=False,
487471
)
488472

@@ -507,7 +491,6 @@ def test_get_classes_by_criteria(test_fixture, analysis_json):
507491
analysis_json_path=None,
508492
analysis_level=AnalysisLevel.symbol_table,
509493
target_files=None,
510-
use_graalvm_binary=False,
511494
eager_analysis=False,
512495
)
513496

@@ -547,7 +530,6 @@ def test_get_class(test_fixture, analysis_json):
547530
analysis_json_path=None,
548531
analysis_level=AnalysisLevel.symbol_table,
549532
target_files=None,
550-
use_graalvm_binary=False,
551533
eager_analysis=False,
552534
)
553535

@@ -569,7 +551,6 @@ def test_get_method(test_fixture, analysis_json):
569551
analysis_json_path=None,
570552
analysis_level=AnalysisLevel.symbol_table,
571553
target_files=None,
572-
use_graalvm_binary=False,
573554
eager_analysis=False,
574555
)
575556

@@ -592,7 +573,6 @@ def test_get_method_parameters(test_fixture, analysis_json):
592573
analysis_json_path=None,
593574
analysis_level=AnalysisLevel.symbol_table,
594575
target_files=None,
595-
use_graalvm_binary=False,
596576
eager_analysis=False,
597577
)
598578

@@ -620,7 +600,6 @@ def test_get_java_file(test_fixture, analysis_json):
620600
analysis_json_path=None,
621601
analysis_level=AnalysisLevel.symbol_table,
622602
target_files=None,
623-
use_graalvm_binary=False,
624603
eager_analysis=False,
625604
)
626605

@@ -650,15 +629,14 @@ def test_get_methods_in_class(test_fixture, analysis_json):
650629
analysis_json_path=None,
651630
analysis_level=AnalysisLevel.symbol_table,
652631
target_files=None,
653-
use_graalvm_binary=False,
654632
eager_analysis=False,
655633
)
656634

657-
# Test that there are 29 methods in the Log class
635+
# Test that there are 30 methods in the Log class
658636
methods = java_analysis.get_methods_in_class("com.ibm.websphere.samples.daytrader.util.Log")
659637
assert methods is not None
660638
assert isinstance(methods, Dict)
661-
assert len(methods) == 29
639+
assert len(methods) == 30
662640
for method in methods:
663641
assert isinstance(methods[method], JCallable)
664642

@@ -676,7 +654,6 @@ def test_get_fields(test_fixture, analysis_json):
676654
analysis_json_path=None,
677655
analysis_level=AnalysisLevel.symbol_table,
678656
target_files=None,
679-
use_graalvm_binary=False,
680657
eager_analysis=False,
681658
)
682659

@@ -702,7 +679,6 @@ def test_get_nested_classes(test_fixture, analysis_json):
702679
analysis_json_path=None,
703680
analysis_level=AnalysisLevel.symbol_table,
704681
target_files=None,
705-
use_graalvm_binary=False,
706682
eager_analysis=False,
707683
)
708684

@@ -727,7 +703,6 @@ def test_get_sub_classes(test_fixture, analysis_json):
727703
analysis_json_path=None,
728704
analysis_level=AnalysisLevel.symbol_table,
729705
target_files=None,
730-
use_graalvm_binary=False,
731706
eager_analysis=False,
732707
)
733708

@@ -759,7 +734,6 @@ def test_get_extended_classes(test_fixture, analysis_json):
759734
analysis_json_path=None,
760735
analysis_level=AnalysisLevel.symbol_table,
761736
target_files=None,
762-
use_graalvm_binary=False,
763737
eager_analysis=False,
764738
)
765739

@@ -791,7 +765,6 @@ def test_get_implemented_interfaces(test_fixture, analysis_json):
791765
analysis_json_path=None,
792766
analysis_level=AnalysisLevel.symbol_table,
793767
target_files=None,
794-
use_graalvm_binary=False,
795768
eager_analysis=False,
796769
)
797770

@@ -823,7 +796,6 @@ def test_get_class_call_graph(test_fixture, analysis_json):
823796
analysis_json_path=None,
824797
analysis_level=AnalysisLevel.call_graph,
825798
target_files=None,
826-
use_graalvm_binary=False,
827799
eager_analysis=False,
828800
)
829801

@@ -857,7 +829,6 @@ def test_get_entry_point_classes(test_fixture, analysis_json):
857829
analysis_json_path=None,
858830
analysis_level=AnalysisLevel.call_graph,
859831
target_files=None,
860-
use_graalvm_binary=False,
861832
eager_analysis=False,
862833
)
863834

@@ -882,7 +853,6 @@ def test_get_entry_point_methods(test_fixture, analysis_json):
882853
analysis_json_path=None,
883854
analysis_level=AnalysisLevel.call_graph,
884855
target_files=None,
885-
use_graalvm_binary=False,
886856
eager_analysis=False,
887857
)
888858

@@ -909,7 +879,6 @@ def test_remove_all_comments(test_fixture, analysis_json):
909879
analysis_json_path=None,
910880
analysis_level=AnalysisLevel.call_graph,
911881
target_files=None,
912-
use_graalvm_binary=False,
913882
eager_analysis=False,
914883
)
915884

@@ -937,7 +906,6 @@ def test_get_methods_with_annotations(test_fixture, analysis_json):
937906
analysis_json_path=None,
938907
analysis_level=AnalysisLevel.call_graph,
939908
target_files=None,
940-
use_graalvm_binary=False,
941909
eager_analysis=False,
942910
)
943911

@@ -976,7 +944,6 @@ def test_get_test_methods(test_fixture, analysis_json):
976944
analysis_json_path=None,
977945
analysis_level=AnalysisLevel.call_graph,
978946
target_files=None,
979-
use_graalvm_binary=False,
980947
eager_analysis=False,
981948
)
982949

@@ -998,7 +965,6 @@ def test_get_calling_lines(test_fixture, analysis_json):
998965
analysis_json_path=None,
999966
analysis_level=AnalysisLevel.call_graph,
1000967
target_files=None,
1001-
use_graalvm_binary=False,
1002968
eager_analysis=False,
1003969
)
1004970

@@ -1029,7 +995,6 @@ def test_get_call_targets(test_fixture, analysis_json):
1029995
analysis_json_path=None,
1030996
analysis_level=AnalysisLevel.call_graph,
1031997
target_files=None,
1032-
use_graalvm_binary=False,
1033998
eager_analysis=False,
1034999
)
10351000

@@ -1059,7 +1024,6 @@ def test_get_all_comments(test_fixture, analysis_json):
10591024
analysis_json_path=None,
10601025
analysis_level=AnalysisLevel.call_graph,
10611026
target_files=None,
1062-
use_graalvm_binary=False,
10631027
eager_analysis=False,
10641028
)
10651029

@@ -1090,7 +1054,6 @@ def test_get_all_docstrings(test_fixture, analysis_json):
10901054
analysis_json_path=None,
10911055
analysis_level=AnalysisLevel.call_graph,
10921056
target_files=None,
1093-
use_graalvm_binary=False,
10941057
eager_analysis=False,
10951058
)
10961059

0 commit comments

Comments
 (0)