在 Express 应用程序中查找未使用的路线或代码以删除死代码

Find unused routes or codes in an express app to remove dead code

我有一个已有 4 年历史的 Express 项目 运行 正在生产中并使用 Express 4.14。各种开发人员不断添加新功能,但一些旧代码也保留在其中。有没有办法找到未使用的代码 - 未在生产应用程序中使用的代码?

我想首先确定未被调用的路由。我们确实使用日志,并且日志是在 Kibana 中提取的。我们还将 APM 与 Kibana 结合使用。

由于记录数据,您可以创建简单的中间件来记录对应用程序的每个请求。一段时间后(几天或几周,取决于您对这个过程的确定程度),您可以收集和解析日志以获取所有请求的路由。然后将请求的路由与您的应用程序中可用的所有路由进行比较,并删除未使用的路由。

中间件可以这么简单:

// runs for every request
app.use('/', function (req, res, next) {
    console.log(`Received request: ${req.method} ${req.path}`);
    next();
});

要在您的应用程序中注册所有路由,请使用此开发专用代码 (inspired by this answer):

console.log(app._router.stack.forEach(middleware => {
    if (middleware.route) {
        console.log(`${middleware.route.stack[0].method} ${middleware.route.path}`);
    } else if (middleware.name === 'router') {
        middleware.handle.stack.forEach(route => {
            if (route.route) {
                console.log(`${route.route.stack[0].method} ${route.route.path}`);
            }
        });
    }
}));