返回首页
一周热榜
我一直在思考为什么在Python中,死代码检测(以及静态分析一般)相比其他语言感觉如此不可靠。我明白Python本质上是动态的。
理论上,这应该是简单的(再次强调,理论上):解析抽象语法树(AST),构建调用图,找到引用为零的符号。但在实践中,由于许多因素,这一过程很快就会失效,例如:
1. 动态调度(getattr、注册表、插件系统)
2. 框架入口点(Flask/FastAPI路由、Django视图、pytest夹具)
3. 装饰器和隐式命名约定
4. 仅通过测试或运行时配置调用的代码
大多数工具似乎在两种糟糕的权衡中选择其一:
1. 保守处理,错过大量真正的死代码
2. 激进处理,标记假阳性,导致人们失去信任
到目前为止,对我来说最有效的方法是将代码视为一种置信度评分,并结合一些有限的运行时信息(例如,测试期间实际执行的内容),而不是完全依赖静态分析。
我很好奇其他人在实际代码库中是如何处理这个问题的……你们是接受假阳性吗?还是完全忽视死代码检测?有没有人见过实际可扩展的方法?我知道SonarQube的噪音很大。
我构建了一个带有vsce扩展的库,主要是为了探索这些权衡(如果相关,链接在下面),但我更感兴趣的是其他人是如何看待这个问题的。希望我在正确的频道。
上下文的代码库: https://github.com/duriantaco/skylos
是我一个人这样觉得,还是HN似乎正面临大量机器人提交、评论甚至完整对话的泛滥?
嘿,HN,
我已经使用 OpenClaw 作为我的本地 LLM 网关几个月了。这确实很有趣——通过一个单一的端点路由多个模型的便利性是无与伦比的。但在这个过程中,我遇到了一些让我感到不安的意外情况:
- 配置文件散落在意想不到的地方(如 ~/.openclaw、~/.clawdbot 等)
- 被终止后会重新生成的后台进程
- 安静积累而没有轮换的日志
- 在我以为已经删除后仍然存在的缓存数据
这些问题并不一定是恶意的,但当我决定继续前进时,我希望能够彻底清理——而不是让残留的痕迹困扰我的系统。
因此,我开发了 OpenShears:一个命令行工具,可以扫描、检测并删除 OpenClaw 的所有痕迹。它的设计是相当激进的,但在删除任何内容之前总是会要求确认。
这个项目是完全开源的(MIT 许可证)。如果你发现了 OpenShears 漏掉的其他隐藏文件或进程,非常欢迎提交 PR。让我们一起把它打造成一个权威的清理工具。
嗨,HN,
我们开发了Blockrand,这是一个随机性API,适用于那些“信任我们”不够的应用场景(如游戏、彩票、模拟、链上/链下混合应用)。
大多数“可证明公平”的随机数生成器在仔细检查后都存在问题:
- 服务器可以影响结果
- 客户端可以暴力破解种子
- 或者验证只有在你已经信任运营者后才能进行
Blockrand采用双盲模型:
- 客户端提交一个种子哈希(我们无法得知)
- 服务器提交一个熵值(客户端无法得知)
- 最终的随机性只有在两者都被锁定后才能生成
- 任何人都可以在之后独立验证结果
- 即使存在恶意行为,任何一方也无法偏向结果。
我们为什么要开发这个
我们找不到一个随机性服务,满足以下条件:
- 可以在链外工作
- 具有密码学可验证性
- 不需要信任运营者
- 足够简单,能够集成到现有系统中
所以我们自己开发了一个。
目前上线的内容
- 简单的REST API
- 确定性、可重放验证的结果
- SDK(JavaScript,更多即将推出)
- 开放的验证逻辑(没有黑箱)
我们希望得到的反馈
- 威胁模型假设
- 我们可能遗漏的攻击向量
- 这是否解决了你们的实际问题
- API的易用性(尤其是针对游戏开发者)
这只是初步版本,带有个人观点。
欢迎提问...
<a href="https://blockrand.net" rel="nofollow">https://blockrand.net</a>
GitHub: <a href="https://github.com/blockrand-api/blockrand-js" rel="nofollow">https://github.com/blockrand-api/blockrand-js</a>