首页 > 解决方案 > 有什么 JavaScript 代码静态分析算法可以用吗?

问题描述

我想对 js 代码应用静态分析,以找到特定的 js 函数调用链。

例如,我有一个lib.js文件:

// lib.js

const foo = {
    test() {
        console.log('test')
    }
};

module.exports = foo;

在另一个文件main.js中,我编写了一些包装代码,就像:

// main.js

const bar = require('./lib.js');

function process (target) {
    for (m in bar) {
        target[m] = bar[m]
    }
}

const buzz = {};

process(buzz);

buzz.test();

运行时main.js,绝对buzz.test()会记录方法有testbuzz.test方法的引用foo.test。但是我怎样才能将一些静态分析策略应用于这个需求:

当代码中发生函数调用时,我想应用静态分析(代码实际上并未在运行时(浏览器/Node.js)中运行)以了解它是否调用foo对象上的方法(在lib.js

我尝试使用js AST解析器(例如babel-parser)将js代码转换为ast,并尝试将我对js代码的理解转换为ast分析算法,但结果不是很像样。

有没有什么好的算法来满足这个要求。

谢谢。

标签: javascriptalgorithmstatic-analysis

解决方案


推荐阅读