MCPcopy
hub / github.com/Tencent/CodeAnalysis / run

Method run

client/util/codecount/codestat.py:40–84  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

38 self._work_dir = os.path.abspath(os.getcwd())
39
40 def run(self):
41 try:
42 incr_scan = self._task_params['incr_scan']
43 source_dir = self._task_params['source_dir']
44 scc_handler = SccHandler(self._work_dir)
45 filter_handler = FilterPathUtil(self._task_params)
46 wanted_exts = scc_handler.get_scc_supported_ext()
47 relpos = len(source_dir) + 1
48
49 try:
50 if incr_scan:
51 diffs = SCMMgr(self._task_params).get_scm_diff()
52 toscans = [os.path.join(source_dir, diff.path) for diff in diffs if
53 diff.path.lower().endswith(wanted_exts) and diff.state != 'del']
54 # filter include and exclude path
55 filtered_files = filter_handler.get_include_files(toscans, relpos)
56 else: # 全量扫描
57 if filter_handler.is_filter_empty(): # 过滤条件为空,filtered_files传空
58 filtered_files = None
59 else:
60 toscans = PathMgr().get_dir_files(source_dir, wanted_exts)
61 filtered_files = filter_handler.get_include_files(toscans, relpos)
62 if len(filtered_files) == len(toscans): # 如果过滤后文件数和过滤前相同,filtered_files传空
63 filtered_files = None
64 except:
65 # 获取过滤后的文件时出现异常(比如增量扫描last revision不存在,无法得到diff文件列表),此时不计算过滤,按全量数据处理
66 logger.exception("CodeLineCount get filtered files error, skip. set filtered_files=None.")
67 filtered_files = None
68
69 result = scc_handler.source_dir_stat(source_dir, filtered_files)
70 except:
71 # 出现异常,返回空数据
72 logger.exception("count line encounter error, return empty data!")
73 result = {
74 "code_line_num": 0,
75 "comment_line_num": 0,
76 "blank_line_num": 0,
77 "total_line_num": 0,
78 "filtered_code_line_num": 0,
79 "filtered_comment_line_num": 0,
80 "filtered_blank_line_num": 0,
81 "filtered_total_line_num": 0
82 }
83 # logger.info(">>> result: %s" % result)
84 return result
85
86
87if __name__ == '__main__':

Callers

nothing calls this directly

Calls 2

get_dir_filesMethod · 0.80
exceptionMethod · 0.80

Tested by

no test coverage detected