This commit is contained in:
@@ -250,6 +250,7 @@ def compare_endpoints(
|
||||
matched_added: Set[str] = set()
|
||||
|
||||
# 1. HTTP 方法变更检测(uri + controller + method_name 相同,但 method 不同)
|
||||
# 如果同时有参数变更,生成两条独立报告(方法变更 + 参数变更),互不干扰
|
||||
for r_key, r_ep in unmatched_removed:
|
||||
for a_key, a_ep in unmatched_added:
|
||||
if a_key in matched_added:
|
||||
@@ -260,6 +261,7 @@ def compare_endpoints(
|
||||
and r_ep.method_name == a_ep.method_name
|
||||
and r_ep.http_method != a_ep.http_method
|
||||
):
|
||||
# 先生成纯方法变更报告
|
||||
reports.append(
|
||||
EndpointChangeReport(
|
||||
uri=a_ep.uri,
|
||||
@@ -271,12 +273,25 @@ def compare_endpoints(
|
||||
old_http_method=r_ep.http_method,
|
||||
)
|
||||
)
|
||||
# 再检测参数变更,如果有则额外生成一条独立的参数变更报告
|
||||
param_changes = compare_parameters(r_ep.parameters, a_ep.parameters)
|
||||
if param_changes:
|
||||
reports.append(
|
||||
EndpointChangeReport(
|
||||
uri=a_ep.uri,
|
||||
http_method=a_ep.http_method,
|
||||
controller_class=a_ep.controller_class,
|
||||
method_name=a_ep.method_name,
|
||||
source_file=a_ep.source_file,
|
||||
parameter_changes=param_changes,
|
||||
)
|
||||
)
|
||||
matched_removed.add(r_key)
|
||||
matched_added.add(a_key)
|
||||
break
|
||||
|
||||
# 2. URI 路径变更检测(method + controller + method_name 相同,但 uri 不同)
|
||||
# 同时检测参数变更,即使 URI 改变也记录参数差异
|
||||
# 如果同时有参数变更,生成两条独立报告(路径变更 + 参数变更),互不干扰
|
||||
for r_key, r_ep in unmatched_removed:
|
||||
if r_key in matched_removed:
|
||||
continue
|
||||
@@ -289,7 +304,7 @@ def compare_endpoints(
|
||||
and r_ep.method_name == a_ep.method_name
|
||||
and r_ep.uri != a_ep.uri
|
||||
):
|
||||
param_changes = compare_parameters(r_ep.parameters, a_ep.parameters)
|
||||
# 先生成纯路径变更报告
|
||||
reports.append(
|
||||
EndpointChangeReport(
|
||||
uri=a_ep.uri,
|
||||
@@ -299,9 +314,21 @@ def compare_endpoints(
|
||||
source_file=a_ep.source_file,
|
||||
is_renamed_endpoint=True,
|
||||
old_uri=r_ep.uri,
|
||||
parameter_changes=param_changes,
|
||||
)
|
||||
)
|
||||
# 再检测参数变更,如果有则额外生成一条独立的参数变更报告
|
||||
param_changes = compare_parameters(r_ep.parameters, a_ep.parameters)
|
||||
if param_changes:
|
||||
reports.append(
|
||||
EndpointChangeReport(
|
||||
uri=a_ep.uri,
|
||||
http_method=a_ep.http_method,
|
||||
controller_class=a_ep.controller_class,
|
||||
method_name=a_ep.method_name,
|
||||
source_file=a_ep.source_file,
|
||||
parameter_changes=param_changes,
|
||||
)
|
||||
)
|
||||
matched_removed.add(r_key)
|
||||
matched_added.add(a_key)
|
||||
break
|
||||
|
||||
Reference in New Issue
Block a user