コードスキャン
要約
Devinは、広範なエンジニアリング目標をコードベース全体の具体的な改善に変換する新機能「Code Scans」を発表しました。ユーザーは達成したい目標をDevinに伝えるだけで、Devinが変更すべき箇所を調査し、発見事項を評価し、それらをプルリクエストに変換します。この機能は、Agentic MapReduceアーキテクチャに基づき、大規模な調査を並列エージェントに分散させ、結果を統合してプルリクエストとして提示することで、開発効率を大幅に向上させます。
全文翻訳
Code Scans のご紹介
Cognition
2026年9月16日
5分で読めます
本日、Code Scans をご紹介します。これは、広範なエンジニアリング目標をコードベース全体の具体的な改善に変換する新しい方法です。達成したいことを Devin に伝えれば、何を変更する必要があるかを調査し、発見事項を評価し、それらをプルリクエストに変換するのに役立ちます。
多くのエンジニアリングタスクは、特定の変更から始まります。他のタスクは、結果から始まります。
- SEO の改善
- 保守オーバーヘッドの削減
- アプリケーションのコンパイル速度の向上
これらの目標は、最初のステップだけで大規模なプロジェクトになるため、バックログに残ることがよくあります。それは、どこから始めるかを把握するためにコードベースを調査することです。さらに、機会を特定するのは仕事の半分にすぎません。変更を実装する必要がある人はまだ多くいます。
Code Scans はその両方を支援します。
Agentic MapReduce によって強化された、Devin Security Swarm のために構築したアーキテクチャである Code Scans は、大規模な調査を集中したバッチに分割し、それらを並列エージェントに分散させ、それらの発見事項を 1 つのレポートに統合します。その後、Devin はその発見事項をレビュー準備のできた PR に変換します。
ローンチ前に Code Scans をテストしているチームは、すでに成果を上げています。
Code Scans は、ソフトウェアの品質、バグ修正、安定性、パフォーマンス、セキュリティやプライバシーを含むコンプライアンスなど、私たちが最も気にかけていることに大きな影響を与えました。いくつかのリポジトリ全体で推定 96% の PR マージ率を達成し、短いテスト期間で 700 時間以上のエンジニアリング時間を節約したと推定しています。
PR マージ率
96%
節約されたエンジニアリング時間
700+
開始するには、Devin ウェブアプリで /scan と入力するか、ドキュメントをお読みください。
目標から始める
スキャンを開始する前に、どのファイルを見る必要があるかを知る必要はありません。代わりに、探しているものを定義すると、Devin はあなたと協力して、その目標を具体的なコードベースの調査に変換します。
例えば:
Web アプリで未使用のコードを見つけます。生成されたファイルとテストフィクスチャを除外し、削除を推奨する前に間接参照を確認してください。
独自の基準を持ち込むこともできます。チームのコーディング標準、アクセシビリティチェックリスト、または今後の移行の要件です。Devin は、何を検査するか、何をスキップするか、何を発見と見なすかを確立するのに役立ちます。
スコープと設定を確認すると、Devin は調査を実行し、優先順位付けされた発見事項のリストを返します。そこから、証拠を検査し、Devin と結果について話し合い、対処したい問題に対して PR を開くように依頼できます。
Rust のコンパイル時間の改善
Dioxus リポジトリのコンパイル速度を向上させるために Code Scans に依頼しました。Devin は、依存関係とビルド構成を合理化する機会を特定しました。これには、重量級の CLI 機能がデフォルトでコンパイルされるのではなく、オプトインになるようにすることが含まれます。ローカルで変更を適用した後、クリーンなデバッグビルド時間は 58.6 秒から 21.0 秒に短縮され、テストされた 22 のワークスペースクレート全体で 64% 削減されました。
スキャン結果
dioxus · コンパイル時間スキャン
-
デフォルトの
mounted機能により、すべての非 Web レンダラーに web-sys/js-sys/wasm-bindgen (およびserializeは serde を強制) が強制されます。デフォルトの機能セットは mounted を有効にし、重量級のオプションの web-sys 依存関係 (および推移的に js-sys + wasm-bindgen) をアクティブ化します。しかし、それらのバインディングは…
-
巨大な基盤クレート: volatile ロジックと共にバンドルされた安定した生成済み要素/属性テーブルが、完全な再展開と下流の再コンパイルを引き起こします。
dioxus-html は、すべてのレンダラーが依存する基盤クレートであり、その巨大でほぼ静的な生成済み要素/属性 API (elements.rs, global_attributes.rs) をバンドルしています…
-
builder_constructors!要素テーブルは、html クレートの主要なコンパイルコストです (~112 要素、~112 要素ごとのプロックマクロ呼び出し、ホットリロードの重複トラバーサル)。単一の builder_constructors! 呼び出しは、html クレートの主要なコンパイル時間コストです。これは 112 の HTML/SVG 要素を展開し、それぞれがユニット構造体、TAG_NAME/NAME_SPACE に展開されます…
-
dx createでのみ使用されるにもかかわらず、cargo-generate が dioxus-cli で無条件にコンパイルされます。cargo-generate は、
dx create/dx initスキャフォールディングパスでのみ使用されるオプションではない依存関係ですが、git2/libgit2-sys (ネイティブ C ライブラリビルド)、liquid テンプレートエンジンなどを引き込みます… -
dioxus-ssr は tokio "full" (デフォルトでオン) をプルしますが、fs + io-util のみを使用します。
dioxus-ssr は tokio = { version = "1.28", features = ["full"], optional = true } を宣言していますが、クレートは tokio を 1 つのモジュール (incremental.rs) でのみ使用し、tokio::fs と… のみに触れます。
SEO 最適化
devin.ai および cognition.com 全体で SEO 問題のスキャンを実行しました。2 つのリポジトリで 44 件の発見事項が浮上し、数日後に修正を適用しました。修正前後の Ahrefs クロールを比較すると、次のようになります。
- devin.ai の Ahrefs ヘルススコアが 87 から 92 に増加しました。
- devin.ai の遅いページが 73% 減少しました。
- cognition.com の画像代替テキストの欠落が解消されました。
スキャン結果
devin.ai + cognition.com · SEO スキャン
-
カスタマーケーススタディページは、相対的な og:image / twitter:image / JSON-LD 画像を出力します。
すべてのカスタマーケーススタディページ (/customers/<slug>) は、Open Graph 画像、Twitter 画像、および Article JSON-LD 画像を、ドメインも先頭のスラッシュもないルート相対パスである生の frontmatter.ogimagePath 値に設定します。Open Graph / Twitter Card 仕様および schema.org は絶対 URL を必要とするため、プレビューと Article リッチリザルト画像が壊れます。
devin-website
-
リダイレクトチェーン /resources/university → /university → external は、1 ホップドロップします。
vercel.json は /resources/university → /university を定義し、別途 /university → https://learn.devinenterprise.com を定義します。最初のリダイレクトが別 のリダイレクトソースをターゲットにしているため、/resources/university へのリクエストは、最終宛先に直接移動するのではなく、2 ホップの 301 チェーンを通過します。Ahrefs は /resources/university に 157 件のライブバックリンク (22 の参照ドメイン) があることを確認しています。
devin-website
-
ホームページ og:url が非正規化された /index に解決されます (正規化された https:… と一致しません)。
ルートレイアウトは、すべてのページで openGraph.url: './' を設定します。これはサブルートでは有効ですが、ホームページでは false です。Next はルートルートの ./ をパス名 /index に対して解決するため、提供されるホームページは og:url = https://cognition.com/index を出力しますが、その正規化リンクタグは https://cognition.com です。
cognition-marketing-website
-
Terminal レイアウトは、すべてのベース/デスクトップページが出力する JSON-LD 構造化データを省略します。
_terminalLayout の head は、title/description/canonical/OG/hreflang を組み立てますが、_baseLayout と _desktopLayout が両方ともデフォルトの SoftwareApplication ブロックを提供するのとは異なり、JSON-LD は出力しません。そのコンシューマーである /cli (Devin CLI 製品ページ) および /auto-triage は、両方ともインデックス可能な中心的な製品サーフェスです。
devin-website
-
終了したイベントが、ライブウェビナーを宣伝するメタディスクリプションと共にインデックス可能のままです。
whats-new-in-devin-06-24-26 イベントページは、イベントが終了したことをページ上でアナウンスしています ('This event has ended', 'Event ended', 'Registration closed')。それにもかかわらず、そのメタデータには robots: {index:false} が含まれておらず、メタ/OG ディスクリプションはウェビナーを登録が開いているかのようにライブかつ今後のものとして宣伝し続けています。したがって、期限切れのページはインデックス可能のままですが、その検索スニペットは過去のイベントを登録が開いているかのように宣伝しています。
cognition-marketing-website
Agentic MapReduce
Code Scans は、コードベース全体の調査を実用的にするための、Devin Security Swarm のために構築したアーキテクチャである Agentic MapReduce の上に構築されています。これは 4 つのフェーズで機能します。
- 計画 (Plan)。 Devin はリポジトリを調査し、目標に関連するコードを特定するためのルールを定義します。
- 分割 (Shard)。 そのルールはコードベース全体で実行され、一致するコードは集中したバッチに分割されます。
- マッピング (Map)。 並列 Devin エージェントが各バッチを調査し、必要に応じて周囲のコードを読み取り、発見事項を報告します。
- 削減 (Reduce)。 最終エージェントが発見事項を結合し、重複を削除し、結果を 1 つのレポートに優先順位付けします。
Agentic MapReduce パイプライン
デッドコードスキャン例
1. 計画
エージェントによるもの
Devin はリポジトリを調査し、目標に関連するコードのルールを定義します。ここでは、もはや使用されていない可能性のあるシンボル、モジュール、依存関係です。
リポジトリ
エージェント
セレクター
インポーターのないエクスポート
参照されていないモジュール
未使用の依存関係
古いフィーチャーフラグ
これにより、各エージェントのコンテキストが集中し、繰り返し検索するのではなく、関連コードに推論予算が向けられます。このアーキテクチャは完全性も保証します。選択された各バッチは処理される必要があります。Code Scans は、そのアプローチをセキュリティから定義したエンジニアリング目標にまで拡張します。
何をスキャンしますか?
Code Scans は、コードベースの規約と提供された基準を使用して、さまざまなエンジニアリングの質問を調査できます。以下に例を示します。
| スキャン | 目標 |
|---|---|
| パフォーマンス | アプリケーションをより高速にする可能性のある、遅いパス、冗長な計算、および見逃されたキャッシュ機会を見つけます。 |
| データベースクエリ | N+1 クエリ、不要なラウンドトリップ、無制限の読み取り、およびその他の非効率的または信頼性の低いデータアクセスパターンを探します。 |
| テストカバレッジ | テストでカバーされていない重要なフロー、エッジケース、および障害パスを特定します。 |
| デッドコード | 安全に削除できる証拠とともに、未使用の関数、モジュール、依存関係、および廃止されたフィーチャーフラグを見つけます。 |
| コード品質 | 重複したロジック、不要な複雑さ、より良い抽象化の機会、およびチームのコーディング標準に違反するパターンを探します。 |
| クリーンアップ | 不要な抽象化、過剰なボイラープレート、および動作を変更せずに簡略化できるコードを特定します。 |
| テレメトリ | 障害の診断や重要な動作の測定を困難にする、ログ記録、メトリクス、およびトレースのギャップを見つけます。 |
| アクセシビリティ | 指定した WCAG 基準に対する、ラベルの欠落、キーボード操作の不具合、その他のギャップを探します。 |
| コンプライアンス | 機密データの処理、監査ログ、および保持ロジックを、組織の規制要件とポリシーに対して調査します。 |
| 移行計画 | 既存の依存関係、エンドツーエンドフロー、およびビジネスロジックをトレースして、今後の移行計画を作成します。 |
| SEO 最適化 | メタデータの欠落または重複、不正な正規 URL、インデックス作成ディレクティブ、およびサイトマップや構造化データのギャップを含む、検索の可視性に影響を与えるコードレベルの問題を見つけます。 |
| 独自の定義 | コードベース全体で Devin に探してほしいパターンを定義します。 |
最も役立つスキャンは、すべてを探す必要があったために、チームが延期していた質問から生まれるかもしれません。
Devin セッションで /scan と入力し、調査したいことを指定し、スコープを共同で構築し、今日からコードベースの最適化を開始してください。
devin.ai で Code Scans を試して、Code Scans ドキュメントで詳細をご覧ください。