使用 Java 6 API分析源码 - 编程入门网
tcher(strToSearch);
matcher.find();
startIndex = matcher.start() + startIndex;
endIndex = startIndex + clazzName.length();
}
clazzNameLoc.setStartOffset(startIndex);
clazzNameLoc.setEndOffset(endIndex);
clazzNameLoc.setLineNumber(compileTree.getLineMap().
getLineNumber(startIndex));
Complier Tree API 的 LineMap 类提 供 CompilationUnitTree 中字符位置和行号的映射。我们可以通过将开始偏移位置传递给 CompilationUnitTree 的 getLineMap() 方法来获取所关注令牌的行号。 使用 Java 6 API分析源码(6)时间:2011-07-28 Deepa Sobhana按照规则验证源码 既然已经从 AST 中成功检索了所需的信息,下一个任务就是验证所考虑的源码是否满足预定义的编码 标准。编码规则在 XML 文件中配置,并由名为 RuleEngine 的自定义类管理。此类从 XML 文件中提取规 则,并一个一个地将其启动。如果此类不满足某个规则,则此规则将返回 ErrorDescription 对象的列表 。 ErrorDescription 对象封装错误消息和错误在源码中的位置。
每个规则实现为 Java 类;要验证的类的模型信息传递给此类。规则类封装逻辑以使 用此模型信息验证规则逻辑。示例规则 (OverrideEqualsHashCode) 的实现如下所示。此规则规定覆盖 equal() 方法的类还应该覆盖 hashcode() 方法。在此,我们遍历类的方法并检查它是否遵循 equals() 和 hashcode() 合同。在 TestClass 中,hashcode() 方法不存在,而 equals() 方法存在,从而导致规 则返回 ErrorDescription 模型,其中包含适当的错误消息和错误的位置详细信息。
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |