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

Method run

client/node/localtask/localrunner.py:344–453  ·  view source on GitHub ↗

执行本地项目扫描

(self)

Source from the content-addressed store, hash-verified

342 raise NodeError(code=errcode.E_NODE_TASK_CONFIG, msg=err_msg)
343
344 def run(self):
345 """执行本地项目扫描
346 """
347 LogPrinter.info(f"start from {self._create_from}.")
348 self._job_start_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
349
350 try:
351 # 获取参数,并判断参数合法性
352 self._read_and_check_args(self._args)
353
354 # 如果历史结果文件json存在,先清理掉,以免影响本次扫描
355 report_filepath = os.path.abspath(self._report_file)
356 if os.path.exists(report_filepath):
357 PathMgr().rmpath(report_filepath)
358
359 # 创建一个与serve通信的API类实例
360 self._dog_server = RetryDogServer(self._server_url, self._token).get_api_server(retry_times=2)
361
362 os.environ["TaskScene"] = TaskScene.LOCAL
363
364 # 保存当前环境变量,执行子进程时使用该环境变量,避免被污染
365 self._origin_os_env = dict(os.environ)
366
367 # 校验输入的配置信息是否正确,如果有问题,提示重新输入
368 self.__check_config_info()
369
370 # 没有指定项目ID,根据本地代码url判断是否已有项目,没有则新建项目
371 project_mgr = ProjectMgr(self._scan_plan, self._scheme_template_ids,
372 self._scheme_templates, self._languages,
373 self._dog_server, self._org_sid, self._team_name, self._source_dir,
374 self._include_paths, self._exclude_paths,
375 self._proj_id, self._scm_info, self._report_file, self._admins,
376 self._scm_auth_info, self._front_end_url,
377 self._labels, self._machine_tag, self._ref_scheme_id, self._proj_env,
378 self._create_from, self._enable_module)
379 self._repo_id, self._proj_id = project_mgr.check_and_create_proj(self._scan_path)
380
381 # 获取任务执行参数
382 proj_conf = self._get_proj_config(self._repo_id, self._proj_id, self._org_sid, self._team_name)
383 # with open("proj_conf.json", "w") as wf:
384 # json.dump(proj_conf, wf, indent=2)
385
386 # 获取实际使用的扫描方案名称
387 self._scan_plan = proj_conf["job_context"]["scheme_name"]
388 self._repo_id = proj_conf["job_context"]["repo_id"]
389
390 url_mgr_client = UrlMgr(self._front_end_url, self._repo_id, self._proj_id, org_sid=self._org_sid,
391 team_name=self._team_name)
392 proj_overview_url = url_mgr_client.get_proj_overview_url()
393 LogPrinter.info("Project url: %s" % proj_overview_url)
394 self._scan_history_url = url_mgr_client.get_scan_history_url()
395
396 # 解析项目配置,获取当前可以直接执行的task request list
397 request_generator = TaskRequestGenerator(
398 self._dog_server, self._source_dir, self._total_scan,
399 self._scm_info, self._scm_auth_info, self._scm_client,
400 self._report_file, self._server_url, self._scan_history_url,
401 self._job_web_url, self._exclude_paths, self._include_paths,

Callers 3

scan_projectMethod · 0.45
run_count_line_taskMethod · 0.45

Calls 15

_read_and_check_argsMethod · 0.95
__check_config_infoMethod · 0.95
check_and_create_projMethod · 0.95
_get_proj_configMethod · 0.95
get_proj_overview_urlMethod · 0.95
get_scan_history_urlMethod · 0.95
generate_requestMethod · 0.95
get_job_urlMethod · 0.95
scan_projectMethod · 0.95
RetryDogServerClass · 0.90
ProjectMgrClass · 0.90
UrlMgrClass · 0.90

Tested by

no test coverage detected