MCPcopy
hub / github.com/Tencent/CodeAnalysis / create_server_scan

Function create_server_scan

server/projects/main/apps/codeproj/core/base.py:86–141  ·  view source on GitHub ↗

异步启动扫描 1. 创建任务和Scan,然后返回job_id,scan_id 2. 异步获取并更新任务参数 3. 启动任务 :param project: Project, 项目 :param creator: str,创建人 :param scan_data: dict,扫描数据 { "force_create": True/False,表示是否强制启动 "incr_scan": True/False,表示是否增量扫描 } :param async_fl

(project, creator, scan_data, async_flag=True, **kwargs)

Source from the content-addressed store, hash-verified

84
85
86def create_server_scan(project, creator, scan_data, async_flag=True, **kwargs):
87 """异步启动扫描
88
89 1. 创建任务和Scan,然后返回job_id,scan_id
90 2. 异步获取并更新任务参数
91 3. 启动任务
92
93 :param project: Project, 项目
94 :param creator: str,创建人
95 :param scan_data: dict,扫描数据
96 {
97 "force_create": True/False,表示是否强制启动
98 "incr_scan": True/False,表示是否增量扫描
99 }
100 :param async_flag: boolean, 异步启动标识
101 :param kwargs:
102 - client_flag: boolean, 客户端启动标识
103 :return: int,int 任务编号和扫描编号
104 """
105 tag = scan_data.pop("tag", None)
106 labels = scan_data.pop("labels", None)
107 job_context = {
108 "force_create": scan_data.get("force_create", False),
109 "incr_scan": scan_data.get("incr_scan", True) is True,
110 "init_scan": scan_data.get("init_scan", False) or kwargs.get("init_scan", False),
111 "created_from": scan_data.get("created_from", "tca_web"),
112 "tag": str(tag) if tag else None,
113 "scm_revision": scan_data.get("revision", None),
114 "scm_last_revision": scan_data.get("last_revision", None),
115 "labels": [label.name for label in labels] if labels else None,
116 }
117 job_context.update(**scan_data)
118 job_manager = JobManager(project)
119 logger.info("开始初始化任务,任务参数: %s" % json.dumps(job_context, indent=2))
120 scan_type = job_manager.get_scan_type(scan_data, job_context)
121 job = job_manager.initialize_job(
122 force_create=job_context["force_create"],
123 creator=creator, created_from=job_context["created_from"],
124 async_flag=async_flag, client_flag=kwargs.get("client_flag", False)
125 )
126 try:
127 job.context = job_context
128 job.save()
129 job_manager.create_waiting_scan_on_analysis_server(job, scan_type)
130 if async_flag:
131 start_server_job.delay(job.id)
132 return job.id, job.scan_id
133 except Exception as err: # 访问analyse server异常时,取消任务
134 if isinstance(err, CDErrorBase):
135 result_msg = err.msg
136 result_code = err.code
137 else:
138 result_msg = "创建扫描异常: %s" % str(err)
139 result_code = errcode.E_SERVER_JOB_CREATE_ERROR
140 JobCloseHandler.revoke_job(job, result_code=result_code, result_msg=result_msg)
141 raise
142
143

Callers 1

postMethod · 0.90

Calls 9

get_scan_typeMethod · 0.95
initialize_jobMethod · 0.95
JobManagerClass · 0.90
revoke_jobMethod · 0.80
getMethod · 0.45
updateMethod · 0.45
infoMethod · 0.45
saveMethod · 0.45

Tested by

no test coverage detected