MCPcopy Create free account
hub / github.com/Tencent/CodeAnalysis / analyze

Method analyze

client/tool/unusedresource.py:157–205  ·  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

155 return issues
156
157 def analyze(self, params):
158 '''执行扫描任务
159
160 :param params: 需包含下面键值:
161 'rules': lint扫描的规则列表
162 'incr_scan' : 是否增量扫描
163
164 :return: return a :py:class:`IssueResponse`
165 '''
166 source_dir = params['source_dir']
167 incr_scan = params['incr_scan']
168 rules = self.__format_rules(params['rule_list'])
169
170 logger.info('获取需要扫描的文件')
171 code_file_suffixs = ()
172 res_file_suffixs = ()
173 for rule_name, rule_param in rules.items():
174 code_file_suffixs += rule_param['code_suffix']
175 res_file_suffixs += rule_param['res_suffix']
176 code_file_suffixs = tuple(set(code_file_suffixs)) # 去重
177 res_file_suffixs = tuple(set(res_file_suffixs)) # 去重
178 code_files, res_files = self.__get_scan_files(source_dir, code_file_suffixs, res_file_suffixs)
179
180 # 增量扫描过滤资源文件
181 if incr_scan:
182 diffs = SCMMgr(params).get_scm_diff()
183 diff_files = [os.path.join(source_dir, diff.path).replace(os.sep, '/')
184 for diff in diffs if diff.state != 'del']
185 res_files = [p for p in res_files if p in diff_files]
186
187 # 根据项目的include和exclude配置,过滤资源文件
188 relpos = len(source_dir) + 1
189 res_files = FilterPathUtil(params).get_include_files(res_files, relpos)
190
191 if not res_files:
192 logger.debug("To-be-scanned files is empty ")
193 return []
194
195 logger.debug("resource files to scan: %d" % len(res_files))
196
197 # 执行扫描工具
198 logger.info('查找未使用的资源文件')
199 issues = self.__scan_unused_resources(source_dir, code_files, res_files, rules)
200
201 if not issues:
202 logger.info("result is empty ")
203
204 logger.debug(issues)
205 return issues
206
207 def set_filter_type_list(self):
208 '''

Callers

nothing calls this directly

Calls 5

__format_rulesMethod · 0.95
__get_scan_filesMethod · 0.95
debugMethod · 0.80
infoMethod · 0.45

Tested by

no test coverage detected