Code Scans(代码扫描)

Hacker News Top 工具

摘要

Devin 推出 Code Scans,这是一款基于 AI 的工具,可根据用户定义的目标对代码库进行调查,识别改进点,并自动生成拉取请求以实施变更,旨在减少工程开销。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/09/18 06:18

# 介绍代码扫描 来源:[https://devin.ai/blog/introducing-code-scans](https://devin.ai/blog/introducing-code-scans) [https://devin.ai/blogCognition](https://devin.ai/blogCognition) 2026年9月16日 · 阅读5分钟 今天,我们正式推出**代码扫描**:这是一种将宏观工程目标转化为代码库具体改进的新方法。告诉Devin你想要实现什么,它会帮助你调查需要修改的内容、评估发现,并将其转化为拉取请求(Pull Requests)。 许多工程任务始于具体的改动。但也有一些任务始于期望达成的成果: - **提升SEO表现** - **降低维护开销** - **加快应用编译速度** 这些目标常常被搁置在待办事项中,因为仅第一步——调查代码库以确定从何处着手——就是一个相当大的工程。此外,识别出改进机会只是一半的工作——还需要有人去实施这些改动,而且往往是大量的改动。 代码扫描能同时解决这两个问题。 代码扫描基于**代理式MapReduce**(Agentic MapReduce)([https://devin.ai/blog/agentic-map-reduce](https://devin.ai/blog/agentic-map-reduce))——这是我们在Devin安全集群(Devin Security Swarm)中构建的架构。它将大规模调查分解成专注的批次,分发给并行的代理执行,并将它们的发现汇总成一份报告。然后,Devin会将其发现转化为可供评审的PR。 在上线前参与测试代码扫描的团队已经看到了成效: > 代码扫描对我们最关心的方面产生了显著影响:软件质量、错误修复、稳定性、性能和合规性(包括安全与隐私)。 > 在几个代码库中,拉取请求的**合并率估计达到96%**,在我们短暂的测试期内,**节省了超过700个工程小时**。 拉取请求合并率:96% 节省的工程小时数:700+ 要开始使用,请在Devin网页应用中输入`/scan`,或阅读[文档](https://docs.devin.ai/work-with-devin/code-scans)。 ## 从目标开始 你无需在开始扫描前就知道要查看哪些文件。相反,你只需定义你要查找的内容,Devin会与你合作,将该目标转化为具体的代码库调查。 例如: > 查找我们Web应用中的未使用代码。排除生成的文件和测试夹具,并在推荐移除前检查是否存在间接引用。 你也可以提供自己的标准:团队的编码规范、无障碍访问检查清单,或是即将进行的迁移所需的要求。Devin有助于确定检查什么、跳过什么,以及什么应算作一项发现。 在你确认范围和设置后,Devin会执行调查,并返回一份按优先级排序的发现列表。之后,你可以查看证据、与Devin讨论结果,并让它为你想要解决的问题创建PR。 ### 提升Rust编译时间 我们让代码扫描来加速Dioxus仓库的编译。Devin发现了优化依赖项和构建配置的机会,包括将重量级的CLI功能设为可选而非默认编译。在本地应用这些改动后,**干净的调试构建时间从58.6秒降至21.0秒——在测试的22个工作区crate中减少了64%**。 #### 扫描发现 dioxus · 编译时间扫描 1. 默认`mounted`特性为每个非Web渲染器强制引入了`web-sys`/`js-sys`/`wasm-bindgen`(而`serialize`特性强制引入`serde`)。默认特性集启用了mounted,这激活了重量级的可选`web-sys`依赖(并传递性地引入了`js-sys` + `wasm-bindgen`)——然而这些绑定…… 2. 过大的基础crate:稳定的生成元素/属性表与易变逻辑捆绑,导致完全重新展开和下游重新编译。`dioxus-html`是每个渲染器都依赖的基础crate,它捆绑了其庞大的、近乎静态的生成元素/属性API(`elements.rs`、`global_attributes.rs`)…… 3. `builder_constructors!`元素表是html crate的主要编译成本(约112个元素,每个元素约112次过程宏调用,重复的热重载遍历)。单一的`builder_constructors!`调用是html crate的主要编译时间成本。它将112个HTML/SVG元素中的每一个都展开为一个单元结构体、TAG_NAME/NAME_SPACE…… 4. `cargo-generate`在`dioxus-cli`中被无条件编译,但仅由`dx create`使用。`cargo-generate`是一个非可选依赖项,仅用于dx create/dx init脚手架路径,但它引入了git2/libgit2-sys(一个本地C库构建)、liquid模板…… 5. `dioxus-ssr`拉取了tokio的"full"(默认开启)特性,但仅使用了`fs` + `io-util`。`dioxus-ssr`声明了`tokio = { version = "1.28", features = ["full"], optional = true }`,但该crate仅在一个模块(`incremental.rs`)中使用tokio,并且只使用了`tokio::fs`和…… ### SEO优化 我们对 [devin.ai](https://devin.ai/?utm_source=x&utm_medium=organic_social&utm_campaign=code-scans&utm_content=seo-example) 和 [cognition.com](https://cognition.com/?utm_source=x&utm_medium=organic_social&utm_campaign=code-scans&utm_content=seo-example) 进行了SEO问题扫描。它在两个仓库中发现了44个问题,并在接下来的几天内修复了这些问题。 对比Ahrefs爬取前后的数据: - 在devin.ai上,**Ahrefs健康评分从87提升到92**。 - 在devin.ai上,**加载缓慢的页面减少了73%**。 - 在cognition.com上,**消除了缺失的图片替代文本**。 #### 扫描发现 devin.ai + cognition.com · SEO扫描 1. 客户案例页面发送了相对路径的`og:image` / `twitter:image` / JSON-LD图像……每个客户案例页面(`/customers/`)将其Open Graph图片、Twitter图片和Article JSON-LD图像设置为原始的`frontmatter.ogimagePath`值,这是一个没有域名、不以斜杠开头的根相对路径。Open Graph / Twitter Card规范和schema.org要求绝对URL,因此预览和Article富文本结果图像会中断。 devin-website 2. 重定向链 `/resources/university` → `/university` → 外部 在某处丢失了一跳。`vercel.json`定义了 `/resources/university` -> `/university` 以及单独的 `/university` -> `https://learn.devinenterprise.com`。因为第一个重定向目标是另一个重定向源,对 `/resources/university` 的请求会遍历一个两跳的301链,而不是直接前往最终目的地。Ahrefs确认 `/resources/university` 有157个活跃的反向链接(22个引用域名)。 devin-website 3. 首页`og:url`解析为非规范路径 `/index`(与规范URL `https:...` 不匹配)。根布局在每个页面上设置了`openGraph.url: './'`。这对子路由是成立的,但对首页则不然:Next.js将 `./` 作为根路由解析为路径名 `/index`,因此提供的首页输出`og:url = https://cognition.com/index`,而其规范链接标签是`https://cognition.com`。 cognition-marketing-website 4. 终端布局省略了每个基础/桌面页面都输出的JSON-LD结构化数据。`_terminalLayout`的`head`组件组装了title/description/canonical/OG/hreflang,但没有输出JSON-LD,而不像`_baseLayout`和`_desktopLayout`,它们都包含一个默认的SoftwareApplication块。其消费者`/cli`(Devin CLI产品页面)和`/auto-triage`都是可索引的核心产品界面。 devin-website 5. 已结束的活动页面仍然可索引,且其元描述仍在宣传一个直播研讨会。`whats-new-in-devin-06-24-26`活动页面在页面上宣布活动已结束("此活动已结束"、"活动已结束"、"注册已关闭"),但其元数据中不包含`robots: {index:false}`,其元/OG描述仍在将该研讨会宣传为直播和即将举行。因此,一个过期的页面仍然可索引,而其搜索片段将一个过去的活动宣传得仿佛注册仍在开放。 cognition-marketing-website ## 代理式MapReduce 代码扫描构建在**代理式MapReduce**([https://devin.ai/blog/agentic-map-reduce](https://devin.ai/blog/agentic-map-reduce))之上,这是我们在Devin安全集群中构建的架构,旨在使代码库范围的调查变得可行。它分4个阶段工作: 1. **规划。** Devin研究你的代码库,并定义识别与你目标相关代码的规则。 2. **分片。** 这些规则在代码库上运行,匹配的代码被分成专注的批次。 3. **映射。** 并行的Devin代理调查每个批次,根据需要阅读周围代码并报告其发现。 4. **归约。** 一个最终的代理合并发现,去除重复项,并将结果按优先级整合成一份报告。 #### 代理式MapReduce流水线 示例:死代码扫描 ##### 1. 规划 代理式Devin研究仓库,并为与你目标相关的代码定义规则——在这里,是可能不再使用的符号、模块和依赖项。 - 没有导入者的导出 - 未被引用的模块 - 未使用的依赖项 - 过时的功能标志 这使每个代理的上下文保持专注,并将推理预算导向相关代码,而非重复搜索。 这种架构也确保了完整性:每个选定的批次都必须被处理。 代码扫描将这种方法从安全领域扩展到你定义的工程目标。 ## 你会扫描什么? 代码扫描可以调查广泛的工程问题,使用你代码库的约定和你提供的标准。以下是一些示例: | 扫描 | 目标 | 性能 | 找出可能使你的应用变慢的瓶颈路径、冗余计算和错失的缓存机会。 | | :--- | :--- | :--- | :--- | | **数据库查询** | 寻找N+1查询、不必要的往返传输、无界读取以及其他低效或不可靠的数据访问模式。 | | **测试覆盖** | 识别未被测试覆盖的重要流程、边缘情况和故障路径。 | | **死代码** | 查找未使用的函数、模块、依赖项和过时的功能标志,并提供哪些内容可以安全移除的证据。 | | **代码质量** | 查找重复的逻辑、不必要的复杂性、更好的抽象机会以及违反团队编码规范的模式。 | | **清理** | 识别冗余的抽象、过多的样板文件以及可以在不改变行为的情况下简化的代码。 | | **遥测** | 查找日志、指标和跟踪中的空白,这些空白使得故障难以诊断或重要行为难以衡量。 | | **无障碍访问** | 查找缺失的标签、损坏的键盘交互以及不符合你指定的WCAG标准的其他问题。 | | **合规性** | 根据你组织的监管要求和政策,调查敏感数据处理、审计跟踪和数据保留逻辑。 | | **迁移规划** | 追踪现有的依赖关系、端到端流程和业务逻辑,为即将到来的迁移制定计划。 | | **SEO优化** | 查找影响搜索可见性的代码级问题,包括缺失或重复的元数据、不正确的规范URL、索引指令以及站点地图或结构化数据中的空白。 | | **你自己的标准** | 定义一个你希望Devin在整个代码库中查找的模式。 | 最有用的扫描可能来自你的团队一直搁置的一个问题,因为回答它意味着要查看所有地方。 在你的Devin会话中输入`/scan`,指定你想调查的内容,一起确定范围,然后开始优化你的代码库。 现在就在 [devin.ai](https://devin.ai/?utm_source=x&utm_medium=organic_social&utm_campaign=code-scans&utm_content=try-cta) 尝试代码扫描,并在[代码扫描文档](https://docs.devin.ai/work-with-devin/code-scans)中了解更多。

相似文章

Open Code Review – 一款由 AI 驱动的代码审查 CLI 工具

Hacker News Top

阿里巴巴已将 Open Code Review 开源,这是一款由 AI 驱动的代码审查 CLI 工具,将确定性工程方法与 LLM 智能体能力相结合。该工具最初作为内部工具使用,服务于数万名开发者,已识别出数百万处缺陷。它通过读取 Git diff 输出,利用可配置的模型端点生成结构化的行级审查意见。