智能依赖健康管家skills---再也不用担心依赖炸了

trae技巧便利店

起因

上上周五,我手贱升级了一下lodash,结果发现测试环境炸了。排查了半天才发现是版本冲突导致的。

当时就在想,能不能有个工具告诉我 这个包能不能升级 升级了会不会炸 项目里哪些包有安全漏洞 哪些包装了但根本没用

找了一圈,npm audit只告诉你有漏洞,但不告诉你怎么办。Dependabot会自动提PR,但经常升级完就出问题。

所以就自己写了这个Skill。

这个Skill做什么

简单说就是给你的项目依赖做个"体检",然后告诉你哪里有问题,怎么解决。

主要功能

1. 健康评分

给每个依赖打个分(0-100),一眼就能看出哪些有问题:

express: 100分 - 没问题

lodash: 65分 - 有个中危漏洞

moment: 35分 - 过时了而且你根本没用

评分规则:

- 有严重漏洞:-30分

- 版本过时:-20分

- 没被使用:-15分

- 升级不安全(主版本号变了):-10分

2. 升级建议

不是所有升级都安全。这个工具会告诉你:

# 这些可以放心升级(小版本更新)

npm install express@4.18.2

npm install lodash@4.17.21

# 这些要小心(大版本更新,可能有breaking changes)

npm install react@18.0.0 # 从17升到18,建议先看changelog

3. 依赖瘦身

检测哪些包装了但没用:

moment - 没用到,可以删

jquery - 没用到,可以删

underscore - 你已经有lodash了,功能重复

4. 跨项目对比

如果你维护多个项目,可以对比一下依赖版本:

项目A用的express是4.18,项目B用的是4.17

建议统一到4.18

支持的语言

- JavaScript/Node.js (package.json) - 完全支持

- Python (requirements.txt) - 完全支持

- Go (go.mod) - 完全支持

- Java (pom.xml) - 还没做

怎么用

基础用法

```python

from main import DependencyHealthManager

manager = DependencyHealthManager(“.”)

report = manager.generate_health_report()

print(report)

```

就这么简单。

生成的报告长这样

# 依赖健康报告

总体评分: 68/100 (一般)

统计:

- 总依赖数: 52

- 过时依赖: 15 (28.8%)

- 存在漏洞: 3

- 未使用依赖: 5

需要关注的依赖:

express (4.16.4 → 4.18.2)

- 健康分数: 45/100

- 问题: 版本过时, 存在2个安全漏洞

安全升级建议:

npm install express@4.18.2

npm install lodash@4.17.21

依赖瘦身建议:

npm uninstall moment jquery

```

项目结构

dependency-health-manager/

├── skill.json # 配置

├── main.py # 核心代码(650行左右)

├── README.md # 文档

├── examples/demo.py # 示例

└── tests/test_manager.py # 测试(26个用例)

测试

写了26个单元测试,全部通过:

```bash

$ python tests/test_manager.py

Ran 26 tests in 0.087s

OK

```

测试覆盖:

- 依赖文件解析

- 健康分数计算

- 报告生成

- 跨项目对比

- 异常处理

目前的限制

说实话,这个Skill还有些不完善的地方:

1. 漏洞数据是模拟的 - 没有真正接入CVE数据库API(需要申请key,有点麻烦)

2. 未使用检测不够准 - 只是简单判断,没有真正扫描代码

3. 只支持3种语言 - Java的pom.xml解析还没做

4. 没有可视化 - 都是文本报告,没有图表

但核心功能都能用,日常检查项目健康度完全够了。

为什么觉得这个有用

和现有工具的区别

npm audit:只告诉你有漏洞,不告诉你怎么办

Dependabot:自动升级,但经常升级完就出问题

这个Skill:给你完整的健康评估和具体建议

实际使用场景

- 每周一跑一次,检查项目健康度

- 升级依赖前先看看安全不安全

- 项目太臃肿了,看看能删哪些包

- 多个项目依赖版本不统一,对比一下

下载

GitHub仓库:https://github.com/Baijidot/dependency-health-manager-skill

## 后续计划

如果有时间的话:

接入真实的CVE数据库

做个Web界面

支持更多语言

加上依赖关系可视化

不过现在这个版本已经够用了。

有问题欢迎留言,或者直接提Issue。

如果觉得有用,点个赞吧。

4 个赞

一开始我做的也是类似的skill,但是做出来效果不好,而且识别率依赖AI准确度才高,遇到新skill评估准确度感觉不高,就放弃了。没想到你做到了,太棒了

4 个赞

我觉得有用,我已经点赞啦 :woman_mechanic: :face_with_monocle: :100:

3 个赞

好癫的头像,好强的输出

3 个赞