PMD可以用于Java上的数据流分析吗?

时间:2017-02-19 23:58:37

标签: pmd

我想知道我是否可以使用PMD执行一些基本的数据流分析操作。它是一项任务,所以如果它是微不足道的,那就无所谓了。 我无法在线找到任何代码示例。

DFA模块是否有效?我应该采用逆向工程的方式来看看发生了什么?

非常感谢

1 个答案:

答案 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规则包括:

  1. 编写一个访问者,在其中获取要分析的方法/构造函数的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;
    }
    
  2. 撰写适当的Executable来强制执行您的规则。

    public void execute(CurrentPath path) {
        // your code here to analyze the current path
    }
    
  3. 可以找到一个工作示例plans to revamp that implementation