我想知道我是否可以使用PMD执行一些基本的数据流分析操作。它是一项任务,所以如果它是微不足道的,那就无所谓了。 我无法在线找到任何代码示例。
DFA模块是否有效?我应该采用逆向工程的方式来看看发生了什么?
非常感谢
答案 0 :(得分:0)
PMD的数据流分析模块正常运行。有一些规则使用它与PMD一起发货,例如http://depblog.weblogs.us/2016/06/27/xamarin-forms-multi-line-label-custom-renderer-gotcha/。
然而,PMD团队DataflowAnomalyAnalysis在未来的某个时刻确实如此。
DFA仅可通过Java规则使用(不能使用XPath规则)。编写DFA规则包括:
编写一个访问者,在其中获取要分析的方法/构造函数的DFA节点:
public Object visit(ASTMethodDeclaration methodDeclaration, Object data) {
final DataFlowNode node = methodDeclaration.getDataFlowNode().getFlow().get(0);
final DAAPathFinder pathFinder = new DAAPathFinder(node, executable, getProperty(MAX_PATH_DESCRIPTOR));
pathFinder.run();
return data;
}
撰写适当的Executable
来强制执行您的规则。
public void execute(CurrentPath path) {
// your code here to analyze the current path
}
可以找到一个工作示例plans to revamp that implementation