javascript - 有什么 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()
会记录方法有test
对buzz.test
方法的引用foo.test
。但是我怎样才能将一些静态分析策略应用于这个需求:
当代码中发生函数调用时,我想应用静态分析(代码实际上并未在运行时(浏览器/Node.js)中运行)以了解它是否调用
foo
对象上的方法(在lib.js
)
我尝试使用js AST解析器(例如babel-parser)将js代码转换为ast,并尝试将我对js代码的理解转换为ast分析算法,但结果不是很像样。
有没有什么好的算法来满足这个要求。
谢谢。
解决方案
推荐阅读
- android - 获取请求 iin react native 从服务器中获取 null 参数数据 react native
- php - 检测会员时间到期PHP
- java - Log4j2 不打印出动态 Web 项目中的日志
- python - 再次运行程序后文件不增加 1
- sql - 2 内连接在同一个表中,有 1 个可选列
- firebase - 更新 Firestore 文档中的部分数据
- java - 如何将 int 数组列表转换为 2D 数组?
- javascript - React Native Formik 与 react redux 一起使用(参考错误:找不到变量:标题)
- android - 如何使用 android studio 在 kotlin 的 ListView 中显示对数据库的查询?
- hash - 当用户输入他们的密码和特定的哈希数学开始使用它之间会发生什么?