MCPcopy Index your code
hub / github.com/Tencent/CodeAnalysis / analyze

Method analyze

client/tool/jafc.py:47–91  ·  view source on GitHub ↗
(self, params)

Source from the content-addressed store, hash-verified

45 return True
46
47 def analyze(self, params):
48 source_dir = params["source_dir"]
49 work_dir = params.work_dir
50 self.out_dir = params["work_dir"]
51
52 rules = RuleParamer.java_param_formart(params["rule_list"])
53 with open("rules.json", "w") as f1:
54 f1.write(json.dumps(rules))
55 f1.close()
56 self.js = JavaScaner(source_dir, self.out_dir)
57 need_ast = False
58 need_field = False
59 for rule_info in rules:
60 if "up_exist_method" in rule_info or "up_no_exist_method" in rule_info or "need_method_chain" in rule_info:
61 LogPrinter.info("条件符合,执行ast解析.")
62 need_ast = True
63 if "field" in rule_info:
64 LogPrinter.info("条件符合,执行字节码遍历解析.")
65 need_field = True
66
67 self.js.parser(need_bc=True, need_ast=need_ast, need_field=need_field)
68
69 if params.get("incr_scan", False):
70 diffs = SCMMgr(params).get_scm_diff()
71 self.diff_files = {os.path.join(source_dir, diff.path).replace(os.sep, "/") for diff in diffs}
72 self.js.set_diff_files(self.diff_files)
73 LogPrinter.info("diff_files : %s" % self.diff_files)
74
75 filelist = ""
76 if self.diff_files:
77 filelist = os.path.join(work_dir, "filelist.txt")
78 f = open(filelist, "w")
79 f.write("\n".join(self.diff_files))
80 f.close()
81
82 loong = Loong(
83 config=os.path.join(work_dir, "rules.json"),
84 dbdir=work_dir,
85 project_root=source_dir,
86 jar_mode=False,
87 filelist=filelist,
88 )
89 result = loong.scan()
90
91 return result
92
93
94tool = JavaAPIFinderForCode

Callers

nothing calls this directly

Calls 9

scanMethod · 0.95
JavaScanerClass · 0.90
LoongClass · 0.90
java_param_formartMethod · 0.80
set_diff_filesMethod · 0.80
writeMethod · 0.45
infoMethod · 0.45
parserMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected