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

Method _get_cmd_args

client/tool/flake8.py:106–147  ·  view source on GitHub ↗
(self, source_dir, toscans, rules)

Source from the content-addressed store, hash-verified

104 return items
105
106 def _get_cmd_args(self, source_dir, toscans, rules):
107 python = PythonTool.check_python("flake8")
108 # 不使用json格式防止项目配置文件里有
109 # flake输出格式为:
110 # {path}[CODEDOG]{line}[CODEDOG]{col}[CODEDOG]{rule}[CODEDOG]{msg}
111 cmd_args = [python, '-m', 'flake8',
112 '--format="%(path)s[CODEDOG]%(row)d[CODEDOG]%(col)d[CODEDOG]%(code)s[CODEDOG]%(text)s"',
113 '--exit-zero',
114 '--show-source',
115 '--jobs=' + str(cpu_count())]
116
117 tool_config_files_dir = os.getenv("TOOL_CONFIG_FILES_HOME")
118 # 初始化配置文件
119 setting_file = None
120
121 # 用户指定配置文件
122 user_config_file = os.getenv("FLAKE8_CONFIG_FILE", None)
123 if user_config_file:
124 user_config_file = os.path.join(source_dir, user_config_file)
125 if os.path.exists(user_config_file):
126 setting_file = user_config_file
127
128 if setting_file:
129 logger.info("using flake8 config file: %s" % setting_file)
130 cmd_args.append("--config=%s" % setting_file)
131 else:
132 # 支持额外的扫描参数,比如:--max-line-length=120
133 FLAKE8_OPTION_PARAMS = os.environ.get("FLAKE8_OPTION_PARAMS", None)
134 if FLAKE8_OPTION_PARAMS:
135 cmd_args.extend(shlex.split(FLAKE8_OPTION_PARAMS))
136 # 指定扫描规则
137 if rules:
138 cmd_args.append('--select=%s' % ','.join(rules))
139
140 # 获取命令行最长限制
141 CMD_ARG_MAX = PathMgr().get_cmd_arg_max()
142 # 设置环境变量,方便项目接入时候修改
143 if os.environ.get("FLAKE8_ARG_MAX", None):
144 CMD_ARG_MAX = int(os.environ.get("FLAKE8_ARG_MAX"))
145 logger.info("命令行长度限制:%d" % CMD_ARG_MAX)
146 cmd_args_list = PathMgr().get_cmd_args_list(cmd_args, toscans, CMD_ARG_MAX)
147 return cmd_args_list
148
149 def __get_stdout_log(self, subPc):
150 """

Callers 1

analyzeMethod · 0.95

Calls 3

check_pythonMethod · 0.80
infoMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected