字段说明测试
All checks were successful
API接口参数变更检测 / api-param-check (push) Successful in 17s

This commit is contained in:
2026-06-05 15:27:22 +08:00
parent 145f114029
commit f62a33b2c0
2 changed files with 14 additions and 8 deletions

View File

@@ -257,17 +257,19 @@ def _param_description(param: FormalParameter) -> Optional[str]:
def _parse_javadoc_params(source_code: str) -> Dict[str, Dict[str, str]]:
"""
使用正则从 Java 源代码中提取方法上的 Javadoc @param 描述。
支持方法声明前存在注解(@GetMapping、@ApiOperation 等)的情况。
返回结构:
{ method_name: { param_name: description } }
"""
javadoc_map: Dict[str, Dict[str, str]] = {}
# 匹配 Javadoc 块 + 其后的方法声明
# 简单启发式Javadoc 后面第一个标识符 + ( 视为方法名
# 改进正则:允许 Javadoc 后存在零或多个注解,再匹配方法声明
pattern = re.compile(
r'/\*\*(?P<javadoc>.*?)\*/\s*(?:public|private|protected|static|\s)*'
r'[\w<>\[\],\.\s]+\s+(?P<method>\w+)\s*\(',
r'/\*\*(?P<javadoc>.*?)\*/\s*'
r'(?:@\w+(?:\s*\([^)]*\))?\s*)*' # 跳过注解(支持 @GetMapping(...)
r'(?:public|private|protected|static|final|\s)*'
r'[\w<>\[\],\.\s]+?\s+(?P<method>\w+)\s*\(',
re.DOTALL | re.MULTILINE
)
@@ -276,11 +278,15 @@ def _parse_javadoc_params(source_code: str) -> Dict[str, Dict[str, str]]:
method_name = match.group('method')
param_descs: Dict[str, str] = {}
# 提取 @param
param_pattern = re.compile(r'@param\s+(\w+)\s+([^\n@]+)', re.IGNORECASE)
# 提取 @param,支持多行描述(直到下一个 @ 或结束)
param_pattern = re.compile(
r'@param\s+(\w+)\s+((?:(?!\n\s*@).)+)',
re.IGNORECASE | re.DOTALL
)
for p_match in param_pattern.finditer(javadoc_block):
p_name = p_match.group(1)
p_desc = p_match.group(2).strip()
# 合并多行空白为单行
p_desc = ' '.join(p_match.group(2).split())
if p_desc:
param_descs[p_name] = p_desc

View File

@@ -137,7 +137,7 @@ public class CultureClockInController {
* @return jnpf.base.ActionResult<jnpf.model.culture.vo.RecordListVo>
*/
@GetMapping(value = "/dynamic1")
public ActionResult<RecordListVo> getRecordList(@RequestParam(value = "cursorDate", required = false) String cursorDate,
public ActionResult<RecordListVo> getRecordList(@RequestParam(value = "cursorDate1", required = false) String cursorDate,
@RequestParam(value = "limitNum", required = false, defaultValue = "10") Integer limitNum) {
limitNum = Math.max(10, Math.min(limitNum, 30));