(self, source_dir, toscans, rules)
| 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 | """ |
no test coverage detected