(self)
| 280 | return task_list |
| 281 | |
| 282 | def run(self): |
| 283 | task_success = True |
| 284 | self._filter_build_tasks() |
| 285 | no_build_tasks = self.prepare_tasks(self._no_build_task_requests) |
| 286 | build_tasks = self.prepare_tasks(self._build_task_requests) |
| 287 | # 收集需要编译的工具 |
| 288 | self._build_task_names = [task.task_name for task in build_tasks] |
| 289 | while self._running_task or no_build_tasks or build_tasks: |
| 290 | task_success = self._handle_exist_task() |
| 291 | # 有一个任务失败,退出整个循环 |
| 292 | if not task_success: |
| 293 | break |
| 294 | |
| 295 | # 判断任务队列还没有满, 添加任务 |
| 296 | if len(self._running_task) < self._task_limit: |
| 297 | # 非编译任务可以并行执行 |
| 298 | # 先执行完非编译任务,再执行编译任务 |
| 299 | if no_build_tasks: |
| 300 | # 启动一个非编译型任务 |
| 301 | task = no_build_tasks.pop(0) |
| 302 | task.start() |
| 303 | self._running_task.append(task) |
| 304 | # 等非编译任务都执行完,再执行编译任务,避免编译生成的中间文件被非编译工具扫描到 |
| 305 | # 编译任务不能并行执行 |
| 306 | if not no_build_tasks and not self._running_task and build_tasks and not self._running_build_task: |
| 307 | # 启动一个编译型任务 |
| 308 | task = build_tasks.pop(0) |
| 309 | task.start() |
| 310 | self._running_build_task.append(task) |
| 311 | self._running_task.append(task) |
| 312 | |
| 313 | return task_success, self._finished_task_results, self._err_code, self._err_msg |
nothing calls this directly
no test coverage detected