【发布时间】:2020-10-21 17:25:55
【问题描述】:
我有一个 4 年的 Express 项目在生产中运行并使用 Express 4.14。各种开发人员一直在添加新功能,但一些旧代码也保留在里面。有没有办法找到未在生产应用程序中使用的未使用代码?。
我想从识别未被调用的路由开始。我们确实使用日志,并且日志在 Kibana 中被摄取。我们还将 APM 与 Kibana 一起使用。
【问题讨论】:
我有一个 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}`);
}
});
}
}));
【讨论】: