比如 这样一段 代码
/**
* $function=user.alipayplus.user.json
* $paramCheck args(required="M",length="32",sample="['ui','ui']")
* $paramCheck number(required="C",length="(10,2)",sample="36",remarks="y:code==123")
*/
public JSONObject test(String[] args, int number, String code) {
JSONObject object = new JSONObject();
object.put("request", "http-request");
return object;
}
有什么现成的库能把方法和上面的注释配套解析出来么?
1
lovedebug 2016-07-27 15:40:18 +08:00
不是自带 JavaDoc 么- - 命令行工具
|
2
jones 2016-07-27 15:52:48 +08:00
编译后的 class 是不包含注释信息的
|
3
hqtc OP @lovedebug 试过了 用 javadoc api 自定义 doclet 来搞,但是只能在命令行搞,而且 包依赖也不知道怎么搞,这个例子总是“找不到符号 JSONObject ”, 我要解析的 Java 代码我都不知道依赖了哪些包的。。
|
5
incompatible 2016-07-27 16:47:25 +08:00 via iPhone
这种场景应该用 Annotation 才对啊
|
6
fwrq41251 2016-07-27 17:11:01 +08:00
java8 有新的 doctree API ,不过网上没找到 tutorial 。
https://docs.oracle.com/javase/8/docs/jdk/api/javac/tree/com/sun/source/doctree/package-summary.html http://openjdk.java.net/jeps/105 |
8
lovedebug 2016-07-27 17:28:17 +08:00
如果要反编译 class 文件 推荐你用 intellij idea 自己装 ideajad 插件
|
9
Guaidaodl 2016-07-27 17:41:24 +08:00
我觉得楼主想要实现的功能, 不应该用注释, 用 Annotation 才是正解.
|
10
murmur 2016-07-27 19:36:59 +08:00
这很明显表单验证么 表单验证应该用 annotation 或者把规则做到 bean 里
|
11
Lonely 2016-07-27 19:44:34 +08:00 via iPhone
牛逼,头一次见到这么玩的
|
12
zts1993 2016-07-27 19:58:59 +08:00
楼上都在胡说啥,,这个我搞过用的是 javaparser
<dependency> <groupId>com.github.javaparser</groupId> <artifactId>javaparser-core</artifactId> <version>2.3.0</version> </dependency> 可以解析,可以拼装代码。之前用这个写的代码自动生成。。。。 |
13
zts1993 2016-07-27 19:59:49 +08:00
当然了,。验证规则解析不了,看不懂这是个啥。。
|
14
hrong 2016-07-27 20:05:05 +08:00 via Android
|
15
incompatible 2016-07-27 20:30:54 +08:00
@hrong 楼主表面的需求的确是解析源码。但是你仔细看帖子,注释中出现的 paramCheck 这种东西显然是运行时才有意义的东西。所以我觉得楼主跑偏了。
|
16
hrong 2016-07-27 20:40:44 +08:00 via Android
|
17
pynix 2016-07-27 21:14:14 +08:00 via Android
annotation
|
18
hqtc OP @hrong 你是对的,就是分析源码 source~。。感谢各位,由于我只是个小实习生,是为线上业务的接口代码做分析工具,不能让人家的业务代码里使用我自定义 的 annotation 。。。 然后讨论半天,最后决定:把需要的信息写在额外的文件里面 (⊙﹏⊙)b ……
|
19
hqtc OP @zts1993 太感谢了, 我也研究了 javaparser ,还有个库叫 Roaster ( https://github.com/forge/roaster ),然后给开发们提出了方案。 不过最后我们决定,不搞代码里面注释了,改成分析额外的配置文件 ~
|
20
haniklz 2016-07-30 18:24:11 +08:00 via Android
把注释部分 换成自定义注解不就解决问题了吗 唉。
|