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]]:
|
def _parse_javadoc_params(source_code: str) -> Dict[str, Dict[str, str]]:
|
||||||
"""
|
"""
|
||||||
使用正则从 Java 源代码中提取方法上的 Javadoc @param 描述。
|
使用正则从 Java 源代码中提取方法上的 Javadoc @param 描述。
|
||||||
|
支持方法声明前存在注解(@GetMapping、@ApiOperation 等)的情况。
|
||||||
|
|
||||||
返回结构:
|
返回结构:
|
||||||
{ method_name: { param_name: description } }
|
{ method_name: { param_name: description } }
|
||||||
"""
|
"""
|
||||||
javadoc_map: Dict[str, Dict[str, str]] = {}
|
javadoc_map: Dict[str, Dict[str, str]] = {}
|
||||||
|
|
||||||
# 匹配 Javadoc 块 + 其后的方法声明
|
# 改进正则:允许 Javadoc 后存在零或多个注解,再匹配方法声明
|
||||||
# 简单启发式:Javadoc 后面第一个标识符 + ( 视为方法名
|
|
||||||
pattern = re.compile(
|
pattern = re.compile(
|
||||||
r'/\*\*(?P<javadoc>.*?)\*/\s*(?:public|private|protected|static|\s)*'
|
r'/\*\*(?P<javadoc>.*?)\*/\s*'
|
||||||
r'[\w<>\[\],\.\s]+\s+(?P<method>\w+)\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
|
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')
|
method_name = match.group('method')
|
||||||
|
|
||||||
param_descs: Dict[str, str] = {}
|
param_descs: Dict[str, str] = {}
|
||||||
# 提取 @param 行
|
# 提取 @param,支持多行描述(直到下一个 @ 或结束)
|
||||||
param_pattern = re.compile(r'@param\s+(\w+)\s+([^\n@]+)', re.IGNORECASE)
|
param_pattern = re.compile(
|
||||||
|
r'@param\s+(\w+)\s+((?:(?!\n\s*@).)+)',
|
||||||
|
re.IGNORECASE | re.DOTALL
|
||||||
|
)
|
||||||
for p_match in param_pattern.finditer(javadoc_block):
|
for p_match in param_pattern.finditer(javadoc_block):
|
||||||
p_name = p_match.group(1)
|
p_name = p_match.group(1)
|
||||||
p_desc = p_match.group(2).strip()
|
# 合并多行空白为单行
|
||||||
|
p_desc = ' '.join(p_match.group(2).split())
|
||||||
if p_desc:
|
if p_desc:
|
||||||
param_descs[p_name] = p_desc
|
param_descs[p_name] = p_desc
|
||||||
|
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ public class CultureClockInController {
|
|||||||
* @return jnpf.base.ActionResult<jnpf.model.culture.vo.RecordListVo>
|
* @return jnpf.base.ActionResult<jnpf.model.culture.vo.RecordListVo>
|
||||||
*/
|
*/
|
||||||
@GetMapping(value = "/dynamic1")
|
@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) {
|
@RequestParam(value = "limitNum", required = false, defaultValue = "10") Integer limitNum) {
|
||||||
|
|
||||||
limitNum = Math.max(10, Math.min(limitNum, 30));
|
limitNum = Math.max(10, Math.min(limitNum, 30));
|
||||||
|
|||||||
Reference in New Issue
Block a user