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

Method analyze

client/tool/regexscan.py:188–228  ·  view source on GitHub ↗

执行扫描任务 :param params: 需包含下面键值: 'rules': lint扫描的规则列表 'incr_scan' : 是否增量扫描 :return: return a :py:class:`IssueResponse`

(self, params)

Source from the content-addressed store, hash-verified

186 return rules
187
188 def analyze(self, params):
189 """执行扫描任务
190
191 :param params: 需包含下面键值:
192 'rules': lint扫描的规则列表
193 'incr_scan' : 是否增量扫描
194
195 :return: return a :py:class:`IssueResponse`
196 """
197 source_dir = params['source_dir']
198 incr_scan = params['incr_scan']
199 rules = self.__format_rules(params['rule_list'])
200
201 if incr_scan:
202 diffs = SCMMgr(params).get_scm_diff()
203 toscans = [os.path.join(source_dir, diff.path) for diff in diffs if diff.state != 'del']
204 else:
205 toscans = PathMgr().get_dir_files(source_dir)
206
207 # filter include and exclude path
208 relpos = len(source_dir) + 1
209 toscans = FilterPathUtil(params).get_include_files(toscans, relpos)
210
211 if not toscans:
212 logger.debug("To-be-scanned files is empty ")
213 return []
214
215 logger.debug("files to scan: %d" % len(toscans))
216
217 # 执行扫描工具
218 issues = []
219 for file_path in toscans:
220 file_issues = RegexScanner.scan_file(source_dir, file_path, rules)
221 if file_issues:
222 issues.extend(file_issues)
223
224 if not issues:
225 logger.info("result is empty.")
226
227 logger.debug(issues)
228 return issues
229
230 def set_filter_type_list(self):
231 """

Callers

nothing calls this directly

Calls 5

__format_rulesMethod · 0.95
get_dir_filesMethod · 0.80
debugMethod · 0.80
scan_fileMethod · 0.45
infoMethod · 0.45

Tested by

no test coverage detected