根据参数对项目进行扫描 :param execute_request_list: list, 当前可以在本地直接执行的任务参数列表 :param proj_conf: dict, 项目配置 :return:
(self, execute_request_list, proj_conf)
| 62 | self._skip_processes = skip_processes |
| 63 | |
| 64 | def scan_project(self, execute_request_list, proj_conf): |
| 65 | """ |
| 66 | 根据参数对项目进行扫描 |
| 67 | :param execute_request_list: list, 当前可以在本地直接执行的任务参数列表 |
| 68 | :param proj_conf: dict, 项目配置 |
| 69 | :return: |
| 70 | """ |
| 71 | codecount_handler = None |
| 72 | proj_scan_result = [] |
| 73 | |
| 74 | # 如果任务列表不为空,且没有任务需要发送到常驻节点执行,才需要统计代码行 |
| 75 | if execute_request_list and not self._remote_task_names: |
| 76 | if self._source_dir: |
| 77 | task_request = copy.deepcopy(execute_request_list[0]) # 深度copy,以免影响原字典数据 |
| 78 | task_request["task_name"] = "linecount" |
| 79 | RequestModify.modify_local_task_request(task_request, self._task_name_id_maps, self._job_id, |
| 80 | self._scm_auth_info.ssh_file, |
| 81 | self._token, self._server_url, self._source_dir, self._scm_info, |
| 82 | self._scm_auth_info, self._create_from) |
| 83 | codecount_handler = LocalCountLine(task_request) |
| 84 | codecount_handler.start_thread() |
| 85 | else: |
| 86 | self._code_line_count = CodeCountTask.run_count_line_task(execute_request_list, self._task_name_id_maps, |
| 87 | self._job_id, |
| 88 | self._scm_auth_info, |
| 89 | self._token, self._server_url, |
| 90 | self._source_dir, self._scm_info, |
| 91 | self._origin_os_env, self._create_from) |
| 92 | |
| 93 | for task_request in execute_request_list: |
| 94 | # 完善task request字段 |
| 95 | RequestModify.modify_local_task_request(task_request, self._task_name_id_maps, self._job_id, |
| 96 | self._scm_auth_info.ssh_file, self._token, |
| 97 | self._server_url, self._source_dir, self._scm_info, |
| 98 | self._scm_auth_info, self._create_from) |
| 99 | |
| 100 | # 通过环境变量获取并发执行开关 |
| 101 | concurrent_task_env = os.getenv("TCA_CONCURRENT_SCAN") |
| 102 | if concurrent_task_env == "False": |
| 103 | proj_scan_succ, proj_scan_result, self._local_task_dirs, error_code, error_msg = InOrderTasksRunner( |
| 104 | execute_request_list, |
| 105 | self._origin_os_env, |
| 106 | self._job_web_url, |
| 107 | self._proj_id).run() |
| 108 | else: |
| 109 | # 默认启用工具并行执行 |
| 110 | proj_scan_succ, finished_task_results, error_code, error_msg = ConcurrentTasksRuner(execute_request_list, |
| 111 | self._origin_os_env, |
| 112 | self._job_web_url, |
| 113 | self._proj_id).run() |
| 114 | proj_scan_result.extend(finished_task_results) |
| 115 | for task_result in finished_task_results: |
| 116 | task_dir = os.path.dirname(task_result.request_file) |
| 117 | self._local_task_dirs.append(task_dir) |
| 118 | |
| 119 | if proj_scan_succ: |
| 120 | # 判断扫描前后scm revision是否匹配,如果扫描过程中代码版本有更新,则任务失败 |
| 121 | scm_revision_mgr = ScmRevisionCheck(self._dog_server, self._source_dir, self._total_scan, self._scm_info, |
no test coverage detected