This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user