我一直在思考为什么在Python中,死代码检测(以及静态分析一般)相比其他语言感觉如此不可靠。我明白Python本质上是动态的。
理论上,这应该是简单的(再次强调,理论上):解析抽象语法树(AST),构建调用图,找到引用为零的符号。但在实践中,由于许多因素,这一过程很快就会失效,例如:
1. 动态调度(getattr、注册表、插件系统)
2. 框架入口点(Flask/FastAPI路由、Django视图、pytest夹具)
3. 装饰器和隐式命名约定
4. 仅通过测试或运行时配置调用的代码
大多数工具似乎在两种糟糕的权衡中选择其一:
1. 保守处理,错过大量真正的死代码
2. 激进处理,标记假阳性,导致人们失去信任
到目前为止,对我来说最有效的方法是将代码视为一种置信度评分,并结合一些有限的运行时信息(例如,测试期间实际执行的内容),而不是完全依赖静态分析。
我很好奇其他人在实际代码库中是如何处理这个问题的……你们是接受假阳性吗?还是完全忽视死代码检测?有没有人见过实际可扩展的方法?我知道SonarQube的噪音很大。
我构建了一个带有vsce扩展的库,主要是为了探索这些权衡(如果相关,链接在下面),但我更感兴趣的是其他人是如何看待这个问题的。希望我在正确的频道。
上下文的代码库: https://github.com/duriantaco/skylos
返回首页
一周热榜
你是支持人工智能还是反对人工智能?
我正在尝试对我在工业和资产重型运营中反复看到的模式进行压力测试,非常希望能听到有相关经验的人的看法。
在许多环境中(如制造业、设备租赁、油田服务、航空航天、医疗设备),质量和运营的工作往往是在正式系统之外开始的:
- 手写的检查记录
- 手机上的照片
- 现场的语音记录
- 协调修复的电子邮件和电子表格
虽然ERP/QMS系统存在,但在时间压力下,工作往往先在其他地方进行。当审计、客户升级或安全问题出现时,团队不得不急忙从零散的证据中重建实际发生的情况。
我有几个真心好奇的问题:
- 你见过不出现这种情况的环境吗?是什么让它们与众不同?
- 重建痛点最常出现在什么地方——审计、客户争议、资产再认证,还是其他?
- 当工作被过早总结或规范化时,通常会丢失哪些信息?
- 当事情升级时,通常是谁承担“证明”一切正常的责任?
我并不是在推销任何东西,也不想推广某个工具。我只是想了解现实在实践中如何打破抽象。
非常感谢任何第一手的经验或反例。
嗨,HN,
我是Emilie,我有文学背景(这也解释了文档写得很好!),在过去几个月里,我通过构建minikv来学习Rust和分布式系统。最近,这个项目在《Programmez!》杂志上被报道了:<a href="https://www.programmez.com/actualites/minikv-un-key-value-store-distribue-en-rust-construit-en-public-38861" rel="nofollow">https://www.programmez.com/actualites/minikv-un-key-value-st...</a>
minikv是一个开源的分布式存储引擎,旨在用于学习、实验和自托管设置。它结合了一个强一致性的键值数据库(Raft)、兼容S3的对象存储以及基本的多租户功能。
功能/亮点:
- Raft共识,带有自动故障转移和分片
- 兼容S3的HTTP API(以及REST/gRPC API)
- 可插拔的存储后端:内存、RocksDB、Sled
- 多租户:每个租户的命名空间、基于角色的访问控制、配额和审计
- 指标(Prometheus)、TLS、基于JWT的API密钥
- 易于部署(单个二进制文件,支持Docker/Kubernetes)
快速演示(单节点):
```bash
git clone <a href="https://github.com/whispem/minikv.git" rel="nofollow">https://github.com/whispem/minikv.git</a>
cd minikv
cargo run --release -- --config config.example.toml
curl localhost:8080/health/ready
```
# S3上传 + 读取
```bash
curl -X PUT localhost:8080/s3/mybucket/hello -d "hi HN"
curl localhost:8080/s3/mybucket/hello
```
文档、集群设置和架构细节都在代码库中。期待听到大家的反馈、问题、想法,或者你们在Rust中运行分布式基础设施的故事!
代码库:<a href="https://github.com/whispem/minikv" rel="nofollow">https://github.com/whispem/minikv</a>
库:<a href="https://crates.io/crates/minikv" rel="nofollow">https://crates.io/crates/minikv</a>
GeoCards 是一款干净、互动的地图(基于 MapLibre 和 OpenFreeMap 构建),您可以点击几乎任何文本标签——城市、公园、道路——它会在侧边栏中提取相关的维基百科摘要和照片。这非常适合“沙发旅行”或仅仅是了解您正在浏览地点的历史。