필사 모드: コード品質 & 静的解析 2026 完全ガイド — SonarQube · CodeClimate · Codacy · DeepSource · Qodo Cover · Snyk Code · Semgrep · ESLint 徹底解剖
日本語> 「コードを書く時間より読む時間のほうが10倍長い。だから書きやすさよりも読みやすさのほうがはるかに重要だ」 — Robert C. Martin, Clean Code
静的解析(Static Analysis)は 1970 年代の Lint(`lint.c`, Stephen C. Johnson, ベル研究所, 1978)に始まり、約 50 年にわたって進化を続けてきましたが、2020 年代に入って再び大規模な再編が起きています。Rust で書き直された高速ツール(Biome, Oxlint, Ruff)、AI ベースのコードレビュー(GitHub Copilot for Code Review, Greptile, CodeRabbit, Cursor Bugbot)、そしてパターンベースの軽量 SAST(Semgrep)が、重くて遅い旧来のツールを急速に置き換えています。
2026 年 5 月現在、コード品質ツールの生態系は **プラットフォーム(Platform), SAST エンジン, 言語別リンター, AI レビュー, 補助ツール(カバレッジ・ミューテーション・ファズ・シークレットスキャン)** の 5 つに分化した巨大市場です。本稿では SonarQube, CodeClimate, Codacy, DeepSource, Qodana, Qodo Cover, Semgrep, CodeQL, Snyk Code, Veracode, Checkmarx, ESLint 9, Biome, Ruff, golangci-lint, clippy, GitHub Copilot Code Review, Greptile, CodeRabbit, Trivy, GitGuardian, TruffleHog を一度に整理します。
1. 静的解析が捕まえる対象 — バグ・スメル・脆弱性・複雑度
静的解析はコードを実行せず、ソーステキスト(あるいは AST, IR, CFG)だけを見て欠陥を検出する手法です。検出対象は大きく 4 つに分類されます。
| カテゴリ | 定義 | 例 |
|---|---|---|
| Bug | 実行時に誤動作する可能性が高いコード | NullPointerException、off-by-one、未使用変数 |
| Code Smell | 動作は正しいが保守性が低いパターン | 長すぎるメソッド、循環的複雑度の高さ、重複コード |
| Vulnerability | セキュリティ的に悪用可能な欠陥 (CWE 基準) | SQL Injection、XSS、Hardcoded Secret、Path Traversal |
| Hotspot | セキュリティに敏感で人の確認が必要なコード | `eval()` 呼び出し、弱い暗号、デバッグログ |
SonarQube はこの 4 カテゴリ全てを扱い、**Reliability(Bug), Maintainability(Smell), Security(Vulnerability), Security Review(Hotspot)** の 4 つの等級(A〜E)で表示します。Semgrep や Snyk Code のような SAST 専用ツールは Vulnerability に集中し、ESLint や Ruff のようなリンターは Bug と Smell に集中します。
選定の最初の基準は常に「捕まえたいのはセキュリティ欠陥か、保守性か、その両方か」です。1 つのツールが全てを上手く扱うことはできません。
2. SAST · DAST · IAST · SCA — 紛らわしい 4 大セキュリティ解析手法
コード/アプリケーションセキュリティ解析は 4 つの主要手法に分かれ、それぞれタイミング・観点・トレードオフが異なります。
| 手法 | 正式名称 | タイミング | 代表ツール |
|---|---|---|---|
| SAST | Static Application Security Testing | ビルド前/CI | SonarQube, Semgrep, CodeQL, Snyk Code, Veracode, Checkmarx, Fortify |
| DAST | Dynamic Application Security Testing | 実行中 (運用) | OWASP ZAP, Burp Suite, Acunetix, Rapid7 InsightAppSec |
| IAST | Interactive Application Security Testing | 実行中 (計装) | Contrast Security, Checkmarx IAST, HCL AppScan |
| SCA | Software Composition Analysis | 依存性検査 | Snyk Open Source, Dependabot, Renovate, OWASP Dependency-Check, Mend, JFrog Xray |
SAST はソースコードを直接解析するため偽陽性(False Positive)が多いですが、ビルド前に高速にフィードバックを返せます。DAST は実際の動作を見ます。IAST は SAST と DAST の中間で、ランタイムエージェントが実行フローを見ながら解析します。SCA はコードではなく依存関係(`package.json`, `pom.xml`, `go.sum`)に含まれる既知 CVE を検査します。
2026 年のトレンドは **Shift Left**(開発段階で欠陥を捕まえる)と **DevSecOps**(セキュリティを CI/CD に溶け込ませる)であり、その結果 SAST と SCA を統合したソリューション(Snyk, Sonar, Veracode など)が急速に成長しています。
3. SonarQube 10.x / SonarCloud — 27 言語をサポートする市場リーダー
**SonarQube**(SonarSource, スイス・ジュネーブ)は 2008 年に始まり、最も古く最も広く使われているコード品質プラットフォームです。2024 年にリリースされた SonarQube 10.x には次の特徴があります。
- **言語サポート**: Java, JavaScript, TypeScript, Python, C#, Go, Rust, Kotlin, Swift, PHP, Ruby, C/C++, Scala など 27 言語
- **エディション**: Community(MIT ライセンス, 無料, セルフホスト), Developer(\$170/年/100K LOC〜), Enterprise, Data Center
- **クラウド版**: SonarCloud(OSS は無料、プライベートコードは LOC 単位課金)
- **Sonar Way ルールセット**: 5,000 を超えるルールを言語ごとに束ねたデフォルトプロファイル
- **Quality Gate**: PR が通過すべきゲート条件(例: New code coverage ≥ 80%, New code reliability rating ≥ A)
- **Clean as You Code**: 新規コードのみ評価して段階的改善を促す思想
- **SonarLint**: IDE プラグイン(IntelliJ, VS Code, Eclipse, Visual Studio)でリアルタイム検出
GitHub Action で SonarCloud を動かす標準ワークフロー例は以下の通りです。
name: SonarCloud
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
sonarcloud:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # SonarCloud には完全な履歴が必要
- uses: SonarSource/sonarqube-scan-action@v3
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
with:
args: >
-Dsonar.projectKey=my-org_my-repo
-Dsonar.organization=my-org
-Dsonar.javascript.lcov.reportPaths=coverage/lcov.info
NAVER, カカオ, LINE ヤフー, Toss のような韓国・日本の大企業のうち 70% 以上が社内に SonarQube Enterprise を運用しており、2024 年からは一部が SonarCloud クラウド版へ移行しつつあります。
4. CodeClimate Quality + Velocity — かつての覇者、今は停滞
**CodeClimate**(米国ニューヨーク)は 2011 年に始まり、かつては GitHub 統合型コード品質ツールの代表格でした。2 つの製品ラインがあります。
- **CodeClimate Quality**(旧 Classic): 静的解析・カバレッジ・PR コメント — `.codeclimate.yml` ファイルで有効エンジンを設定
- **CodeClimate Velocity**: エンジニアリングメトリクス(PR 処理時間、レビュー時間、サイクルタイム)
2024 年に CodeClimate は次世代コード品質プラットフォーム **Qlty** をリリースし、実質的に CodeClimate Quality の後継となっています。Qlty は ESLint, Ruff, RuboCop, golangci-lint, SwiftLint など 50 以上の OSS リンターを単一のインターフェイスで統合実行します。
CodeClimate の強みは **CC.Coverage** 統合(Codecov や Coveralls 以前の事実上の標準)と GitHub PR コメントの自然さでしたが、2020 年代に DeepSource, Codacy, SonarCloud にシェアを侵食され、2024 年以降は新規ユーザーが停滞しています。
5. Codacy — OSS + クラウド、多言語サポート
**Codacy**(ポルトガル・リスボン)は 2012 年に始まったクラウド型コード品質プラットフォームで、40 以上の言語と 50 以上の OSS 解析器を統合します。
- **エディション**: Free(OSS), Pro(\$15/ユーザー/月〜), Enterprise(セルフホスト Codacy Self-Hosted)
- **統合エンジン**: ESLint, Pylint, RuboCop, golangci-lint, PMD, Checkstyle, Bandit, Brakeman など
- **Codacy Coverage**: Codecov/Coveralls の代替となるカバレッジ統合機能
- **Quality Standards**: チーム単位のコード品質ポリシー(SLA、等級、新規欠陥 0 件ポリシー)
- **Pulse**: エンジニアリングメトリクス(deployment frequency, lead time)
Codacy は SonarCloud より多くの言語/エンジンをサポートしますが、単一ルールセットの深さでは劣るというのが一般的な評価です。日本のサイバーエージェント、韓国の LINE プラス一部チームで活用されています。
6. DeepSource — 高速マネージド SAST + 自動修正(Autofix)
**DeepSource**(インド・バンガロール)は 2018 年に始まった比較的新しいプラットフォームで、「速度ときれいな UX」を武器に急成長しています。
- **言語サポート**: Python, Go, JavaScript/TypeScript, Ruby, PHP, Java, C#, Scala, Kotlin など 16 言語
- **Autofix**: 欠陥の 70% 以上に対して自動 PR パッチを生成
- **Transformers**: Black, isort, Prettier, gofmt, RuboCop autocorrect を一度に実行する機能
- **Custom Issues**: 独自ルールを定義する機能(Semgrep ルール互換)
- **エディション**: Free(OSS), Team(\$12/ユーザー/月〜), Business, Enterprise(セルフホスト)
DeepSource の差別化要因は **速度** です。SonarQube が平均 10〜30 分かかる解析を、DeepSource は平均 1〜3 分で終わらせます。Coupang, カロット(Karrot), Mercari の一部チームが使用しています。
7. Qodana — JetBrains の IntelliJ Inspections ベース SAST
**Qodana**(JetBrains, チェコ・プラハ)は 2020 年にリリースされた JetBrains のコード品質プラットフォームです。IntelliJ IDEA, PyCharm, GoLand のような IDE に内蔵されている inspection エンジンを、CLI/CI 上でも同じように動かせるようにしたものです。
- **言語サポート**: Java, Kotlin, Go, PHP, JavaScript/TypeScript, Python, .NET — JetBrains IDE がサポートする言語
- **Docker イメージ**: `jetbrains/qodana-jvm-community:2024.3` のような形式で配布
- **License Audit**: 依存関係のライセンス衝突を検査
- **エディション**: Community(OSS, Java/Kotlin/PHP 無料), Ultimate(\$15/ユーザー/月〜), Ultimate Plus(セキュリティ解析を含む)
- **Qodana Cloud**: SaaS ダッシュボード(TeamCity と深く統合)
Qodana の強みは **IntelliJ inspection の精度** です。Java/Kotlin/.NET の解析は市場最高クラスという評価が一般的ですが、JetBrains 生態系の外(Python, JS)では SonarQube より弱めです。
8. Qodo Cover(旧 CodiumAI Cover) — AI テスト自動生成
**Qodo Cover**(旧 CodiumAI Cover, イスラエル・テルアビブ)は 2023 年にリリースされた AI ベースのテスト自動生成ツールで、2024 年に社名が CodiumAI から **Qodo** へ変更されました。
- **動作方式**: LLM(GPT-4, Claude)が関数のシグネチャと本文を読み、テストケースを生成・実行し、合格したものだけを採用
- **言語サポート**: Python, JavaScript/TypeScript, Java, Go, C#(2025 年以降急拡大中)
- **差別化要因**: 単なる生成ではなく、**ミューテーションテスト + カバレッジフィードバックループ** で意味のあるテストだけを残す
- **エディション**: Qodo Gen(IDE プラグイン, 無料/Pro), Qodo Cover(CI/CD 統合), Qodo Merge(PR レビュー)
Qodo Cover は単に行カバレッジを上げるのではなく、**ブランチカバレッジ** と **ミューテーションスコア** を同時に改善します。2025 年に IBM, JPMorgan のようなエンタープライズが採用し、Mercari R&D チームでも PoC が実施されました。
9. Semgrep 1.x — パターンベースの高速 SAST
**Semgrep**(米国サンフランシスコ, r2c 発 → 2022 年 Semgrep Inc. へリブランディング)は 2019 年に始まった **パターンベース(pattern-based)** SAST です。AST マッチング + データフロー解析を組み合わせ、高速で表現力豊かなルールを書けるのが特徴です。
- **言語サポート**: 30 以上の言語(JavaScript, TypeScript, Python, Go, Java, Kotlin, Ruby, C#, C/C++, Rust, Swift, Scala, PHP, Bash, YAML, Terraform など)
- **速度**: CodeQL より 5〜10 倍高速、SonarQube 解析の一部のみを走らせることも可能
- **ルール作成**: コードをそのままパターンとして利用可能。メタ変数(`$X`, `$Y`)や `pattern-either`, `pattern-not` のようなブール組合せ
- **Registry**: 2,500 以上のコミュニティルール
- **エディション**: Semgrep CLI(OSS, LGPL), Semgrep AppSec Platform(Pro ルール含む, 有料), Semgrep Supply Chain(SCA)
Semgrep ルールの単純さを示す例です。
rules:
- id: jwt-hardcoded-secret
pattern: jwt.sign($PAYLOAD, "...")
message: JWT signing secret is hardcoded as a string literal
severity: ERROR
languages: [javascript, typescript]
Coupang は 2023 年から社内セキュリティゲートとして Semgrep を採用し、Mercari は GitHub Actions で PR ごとに Semgrep + CodeQL を同時に走らせます。NAVER も一部チームで Semgrep を使って SonarQube ルールセットを補完しています。
10. CodeQL — GitHub Code Scanning のエンジン
**CodeQL**(GitHub, 米国サンフランシスコ)は 2019 年に GitHub が買収した Semmle(英国オックスフォード)の解析エンジンで、**コードをデータベースに変換してクエリする** アプローチを採ります。
- **言語サポート**: C/C++, C#, Go, Java, JavaScript/TypeScript, Python, Ruby, Swift, Kotlin(10 言語)
- **無料ポリシー**: 全てのパブリックリポジトリ(OSS)で GitHub Advanced Security が無料
- **GitHub Code Scanning**: GitHub Actions の `github/codeql-action` で CI 統合
- **CodeQL CLI**: ローカルで直接データベースをビルド + クエリ実行
- **ルール作成**: QL 言語(SQL に似た宣言型) — 学習コストはあるが表現力は最強
CodeQL は深いデータフロー解析が可能で **taint tracking**(ユーザー入力が sink へ流れる過程の追跡)に優れますが、解析時間が長く(平均 10〜30 分)、大規模コードベースで PR ごとに走らせるのは負担です。Semgrep + CodeQL を併用するパターンが一般的です。
11. Snyk Code(旧 DeepCode) — AI ベースのセキュリティ SAST
**Snyk Code**(スイス・チューリッヒ → Snyk, 米国ボストン本社)は 2020 年に Snyk が買収した DeepCode が母体です。ML ベースの SAST で、既知のセキュリティパターンを学習し新しい亜種も検出します。
- **言語サポート**: JavaScript, TypeScript, Python, Java, C#, Go, PHP, Ruby, Swift, Kotlin, Scala, C/C++
- **DeepCode AI Fix**: 欠陥に対する AI 生成パッチ(2024 年 GA)
- **速度**: 平均 1〜3 分、PR 統合に向いている
- **統合**: GitHub, GitLab, Bitbucket, Azure DevOps, IDE プラグイン(VS Code, IntelliJ)
- **エディション**: Free(個人, 月 100 件まで), Team, Enterprise
Snyk Code の強みは **Snyk Open Source(SCA), Snyk Container, Snyk IaC** との統合で「Snyk 一つで全セキュリティ検査」が可能な点です。カカオエンター、LINE Pay、メルカリで使われています。
12. Veracode / Checkmarx / Fortify — エンタープライズ SAST 御三家
**Veracode**(米国ボストン, 2006 年設立)は SaaS 型エンタープライズ SAST の代表格で、金融・政府の顧客が多いベンダーです。Static Analysis、DAST、SCA、IAST、Penetration Testing まで総合パッケージを提供し、コンプライアンス(SOC 2, ISO 27001, FedRAMP)に強いです。
**Checkmarx**(イスラエル・テルアビブ, 2006 年設立)はオンプレ/クラウド両対応のエンタープライズ SAST で、精度が高く金融・通信業界に好まれます。Checkmarx One プラットフォームは SAST, SCA, IaC, Container, API Security を統合します。
**Fortify**(OpenText, 旧 Micro Focus, 旧 HP)は 1996 年設立で最も古いエンタープライズ SAST の一つです。COBOL, ABAP のようなレガシー言語までサポートしています。2024 年に OpenText へ統合された後、Fortify Static Code Analyzer + Application Defender のラインアップになっています。
御三家の共通点は **年間ライセンス料が数億〜数十億円規模** で、**オンプレ展開がデフォルト** という点です。モダンな SaaS(Snyk, Sonar, Semgrep)が急速にシェアを奪いつつありますが、政府・金融分野では依然として影響力が大きいです。
13. ESLint 9 Flat Config — JavaScript/TypeScript の事実上の標準
**ESLint**(2013 年 Nicholas C. Zakas)は JavaScript/TypeScript リンティングの事実上の標準で、2024 年にリリースされた **ESLint 9** には次の大きな変更が含まれます。
- **Flat Config**: 旧 `.eslintrc.json/.cjs/.yaml` → `eslint.config.js`(ES Module ベース)
- **Node.js 18 以上が必須**
- **TypeScript ESLint 8** とメジャー更新が連動(`@typescript-eslint/parser` v8)
- **Bulk Suppressions**: レガシーコードに対する大量のルール違反を一時的に無視
- **`--inspect-config`**: どのルールがどのファイルに適用されているかを追跡
Flat Config の例です。
// eslint.config.js
export default [
js.configs.recommended,
...tseslint.configs.recommended,
{
files: ['**/*.{ts,tsx}'],
plugins: { react },
rules: {
'no-console': 'warn',
'@typescript-eslint/no-unused-vars': 'error',
},
},
]
プラグインのエコシステムも非常に大きいです。例えば `eslint-config-next`(Next.js), `eslint-config-airbnb`(Airbnb), `eslint-plugin-vue`(Vue), `eslint-plugin-svelte`(Svelte)など。命名は ``eslint-config-<name>`` パターンが一般的です。
14. Biome / Oxlint — Rust で書き直された JS/TS ツール
**Biome**(2023 年に Rome Tools が Biome へリブランディング, イタリア/Remote)は Rust で書かれた **フォーマッタ + リンター** 統合ツールで、ESLint + Prettier の高速な代替として台頭しています。
- **速度**: ESLint + Prettier 比で 25〜35 倍高速
- **`biome check`**: フォーマット + リント + import 並び替えを一度に実行
- **言語サポート**: JavaScript, TypeScript, JSON, CSS, GraphQL(2025 年から HTML, Markdown 追加)
- **互換性**: ESLint ルールの一部を 1:1 マッピング(およそ 200 ルール移行)
**Oxlint**(Oxc, 韓国人開発者 Boshen 主導, 2023 年〜)は ESLint と 100% 互換を目指す Rust ベースのリンターです。
- **速度**: ESLint 比で 50〜100 倍高速
- **互換性**: `eslint-plugin-react`, `eslint-plugin-jsx-a11y`, `typescript-eslint` ルールの一部をネイティブ実装
- **2024 年 11 月に 1.0 GA**
- **Shopify, Vercel, Discord, Airbnb が採用**
Toss は 2024 年から社内モノレポ全体で ESLint → Biome 移行を進め、カカオは Oxlint を一部フロントエンドチームに導入しました。
15. Ruff — Rust で書き直された Python 統合ツール
**Ruff**(Astral, 米国, 2022 年〜)は Rust で書かれた Python リンター + フォーマッタで、`flake8`, `black`, `isort`, `pyupgrade`, `pydocstyle`, `pylint` の一部を一つのツールに統合しています。
- **速度**: flake8 比で 10〜100 倍高速、100K LOC を 1 秒未満で処理
- **ルール互換**: pylint, flake8, isort, bandit など 800 以上のルールをネイティブ実装
- **`ruff check` + `ruff format`**: フォーマットまで統合
- **2024 年 0.6.x → 2025 年 1.0 GA**
- **採用**: pandas, Apache Airflow, FastAPI, Pydantic, Hugging Face, Databricks, Mozilla など
Python の静的型チェッカーは別途存在します。
- **mypy**(Jukka Lehtosalo, 2012 年〜): Python 型チェッカーの元祖
- **Pyright**(Microsoft, 2019 年〜): TypeScript 風の高速型チェッカー、VS Code Pylance のエンジン
- **Pylint**(2003 年〜): 最も古い総合リンター、ルールは多いが遅い
- **Pydantic**(2017 年〜, Samuel Colvin): ランタイム型検証ライブラリ。静的解析ツールではないが補完関係
16. Go / Rust / Java — 各言語の標準リンター
**Go** の標準は **golangci-lint** です。
- 50 以上のリンター(`govet`, `errcheck`, `gofmt`, `staticcheck`, `gosec`, `ineffassign`, `unused`, `gosimple`)を一度に実行
- `.golangci.yml` ファイルで有効ルールを設定
- Kubernetes, Prometheus, Cilium, Vitess のような大型 Go プロジェクトが全て採用
**staticcheck**(Dominik Honnef): golangci-lint に含まれるが単体でも強力な Go 静的解析器。
**gosec**: Go コードのセキュリティ欠陥(ハードコード秘密、SQL インジェクションなど)専用スキャナ。
**Rust** は `cargo clippy`(公式リンター) + `cargo fmt`(公式フォーマッタ)が標準です。clippy は 600 以上のルールを持ち、`cargo clippy --fix` で自動修正もサポートします。
**Java**:
- **Error Prone**(Google, 2014 年〜): Google が自社 Java コードベースで運用するコンパイラプラグイン — `@SuppressWarnings` のようなアノテーションと連携
- **Checkstyle**(2001 年〜): コードスタイル検査
- **PMD**(1999 年〜): 総合静的解析器
- **SpotBugs**(旧 FindBugs, 2017 年〜): バイトコードベースのバグ検出
- **Sonar Java**: SonarQube の Java 解析器、1,000 を超えるルール
17. その他の言語 — C/C++ · Ruby · Kotlin · Swift · PHP
**C/C++**:
- **clang-tidy**(LLVM プロジェクト): Clang AST ベースの総合静的解析器
- **cppcheck**(Daniel Marjamäki, 2007 年〜): C/C++ 専用 OSS 静的解析器
- **Coverity**(Synopsys, 1998 年〜): エンタープライズ C/C++ SAST の標準
**Ruby**: **RuboCop**(Bozhidar Batsov, 2012 年〜)が事実上の標準。Style, Layout, Lint, Metrics, Security, Performance の 6 部門にルールを分類しています。
**Kotlin**:
- **detekt**(2017 年〜): Kotlin 専用静的解析器、200+ ルール
- **ktlint**(Pinterest, 2015 年〜): Kotlin フォーマッタ + リンター
**Swift**:
- **SwiftLint**(Realm, 2015 年〜): Swift の事実上の標準
- **SwiftFormat**(Nick Lockwood, 2016 年〜): Swift フォーマッタ
**PHP**:
- **PHPStan**(Ondřej Mirtes, 2016 年〜): レベル 0〜9 の段階的型解析
- **Psalm**(Vimeo, 2016 年〜): PHPStan と似た型解析器
- **Rector**(2018 年〜): PHP コードの自動リファクタリング(PHP 5→8 移行ツールとして有名)
18. AI コードレビュー — Copilot Code Review · Greptile · CodeRabbit · Cursor Bugbot
2024 年 10 月、GitHub は **Copilot for Code Review**(GA)をリリースし、PR ごとに AI レビューアがコメントをつける時代を開きました。2026 年 5 月時点で活発な AI レビューツールは以下の通りです。
| ツール | 会社 | 特徴 |
|---|---|---|
| GitHub Copilot Code Review | GitHub/Microsoft | GitHub PR にネイティブ統合、GPT-4o ベース |
| Greptile | Greptile(YC W24) | リポジトリ全体の理解に基づくレビュー、GPT-4 + Claude |
| CodeRabbit | CodeRabbit(インド) | マルチ LLM ルーティング、推論モデル使用 |
| Bito | Bito(米国) | AI Code Review Agent + Bito Wingman |
| Cody Review | Sourcegraph | Cody Coding Standards(社内ルールを学習) |
| Aviator Reviewer | Aviator(米国) | MergeQueue + AI レビュー |
| CodeAnt AI | CodeAnt AI(インド) | セキュリティ + 品質統合 |
| DiamondAI | Diamond(米国) | Claude ベースのスタートアップ |
| Cursor Bugbot | Anysphere(Cursor) | 2024 年 12 月リリース、バックグラウンドで PR レビュー |
AI コードレビューの価値はシンプルです — 人が見落とすパターン(null チェック漏れ、race condition、誤ったログレベル)を素早く捕まえ、レビューアの認知負荷を下げます。ただし偽陽性は依然として多く、**人の最終確認は必須** です。
Toss、カロット、Mercari は 2025 年から社内 PR で Copilot Code Review を有効化し、LINE ヤフーは Greptile + CodeRabbit を部分導入しています。
19. コードカバレッジ — Codecov · Coveralls · Codacy Coverage · Qlty
**コードカバレッジ** はテストが実際に実行した行/ブランチの割合を測定します。静的解析ではありませんが、コード品質ゲートの核心指標です。
- **Codecov**(2014 年〜, 2022 年 Sentry 買収): 最も広く使われるカバレッジサービス、OSS 無料、GitHub PR にカバレッジ差分コメント
- **Coveralls**(2012 年〜): Codecov 登場前の標準サービス
- **Codacy Coverage**: Codacy のカバレッジ統合機能
- **Qlty**(旧 CodeClimate Quality の後継): Codecov の代替として登場
- **GitHub Actions + lcov**: セルフホストも可能
`diff-cover`(Open edX)のようなツールを使うと、PR で変更された行のカバレッジだけを別に測定できるので、レガシーコードを無視して新規コードだけをゲート対象にするパターンが可能です。
20. ミューテーションテスト · ファズテスト — テストのテスト
**ミューテーションテスト** はテスト自体の品質を測定します。コードを意図的に変異(`==` → `!=`, `+` → `-`, `&&` → `||`)させ、テストがその変異を捕まえられなかった場合「mutation survived」と記録します。
- **PIT(PITest)**: Java/Kotlin の標準
- **Stryker**: JavaScript/TypeScript/C#/Scala
- **mutmut**: Python
- **Cosmic Ray**: Python
- **mutant**: Ruby
**ファズテスト** はランダムな入力を流し込んでクラッシュを見つける手法です。
- **AFL++**(American Fuzzy Lop の後継): C/C++ ファザーの事実上の標準
- **libFuzzer**: LLVM のインプロセスファザー
- **honggfuzz**: Google のファザー
- **Atheris**: Python(Google, libFuzzer ベース)
- **OSS-Fuzz**: Google が運営する OSS ファジングインフラ — 2016 年以降 8,500 以上のバグ検出
Go 1.18 以上は `testing.F` でネイティブファジング、Rust は `cargo fuzz` で対応しています。Mercari は 2024 年から一部の Go マイクロサービスにネイティブファジングを導入しました。
21. シークレットスキャン — GitGuardian · TruffleHog · Gitleaks
**シークレットスキャン** はコードに誤ってコミットされた API キー、パスワード、トークンを見つける専用ツールです。SonarQube/Semgrep も一部捕まえますが、専用ツールのほうが強力です。
- **GitGuardian**(フランス・パリ, 2017 年〜): 350 を超えるシークレット種別(AWS Access Key, Stripe Secret, JWT など)を検出 — 無料/有料 SaaS + セルフホスト
- **TruffleHog**(Truffle Security, 2017 年〜): OSS + SaaS、800 を超える検出器
- **Gitleaks**(2018 年〜): OSS(MIT)、GitHub Action として人気
- **GitHub Secret Scanning**: GitHub Advanced Security またはパブリックリポジトリで無料、200 を超えるパートナー統合
GitHub Push Protection は 2024 年から全パブリックリポジトリで無料有効化されています。Toss, カカオバンク, Mercari, LINE ヤフーは全て GitGuardian Enterprise を使っています。
22. コンテナ · IaC スキャン — Trivy · Kics · Checkov · Bearer CLI
**Trivy**(Aqua Security, 2019 年〜)は最も人気の OSS セキュリティスキャナで、以下を全て検査します。
- コンテナイメージの OS/言語パッケージ CVE
- IaC(Terraform, CloudFormation, Kubernetes manifest, Helm chart)
- Dockerfile ベストプラクティス
- シークレットスキャン
- ライセンス検査
**Kics**(Checkmarx, 2020 年〜): Terraform, CloudFormation, K8s, Docker, Ansible のセキュリティ/コンプライアンス検査。
**Checkov**(Bridgecrew → Palo Alto Networks, 2019 年〜): IaC 静的解析、1,000 を超えるポリシー。
**Bearer CLI**(英国, 2022 年〜 OSS): 機微データ(PII, PHI, PCI)がコード内をどう流れるかを追跡する静的解析器。GDPR/HIPAA コンプライアンスに特化しています。
23. プリコミットフック — lefthook · pre-commit · husky · lint-staged
CI で捕まえるよりコミット前に捕まえるほうが常に安く速いです。プリコミットフックの標準は以下の通りです。
- **lefthook**(Evil Martians, Ruby, 2019 年〜): Go バイナリ、最速のプリコミットフックマネージャ
- **pre-commit**(Python エコシステム標準, 2014 年〜): `.pre-commit-config.yaml` でフックを設定、Python 以外の言語もサポート
- **husky**(typicode, 2014 年〜): Node.js エコシステム標準、`package.json` の `scripts` でフック実行
- **lint-staged**(2016 年〜): husky と一緒に「ステージ済みファイルのみ」リント
- **simple-git-hooks**(toplenboren, 2020 年〜): husky より軽量な代替
husky + lint-staged の最も一般的な使用例です。
{
"lint-staged": {
"*.{js,ts,jsx,tsx}": ["eslint --fix", "prettier --write"],
"*.{json,md,yml,yaml}": ["prettier --write"]
}
}
Toss, カカオ, NAVER, LINE はいずれも husky + lint-staged を標準として使っています。
24. 韓国の事例 — NAVER · Coupang · Toss · カロット
**NAVER**: 社内 SonarQube Enterprise を 2014 年から運用し、全ての Java/Kotlin コードベースがビルドゲートとして SonarQube Quality Gate を通過しなければマージできません。2024 年から一部のチームは Sonar Java + Semgrep + GitGuardian の組み合わせへ移行中です。
**Coupang**: 2023 年から Semgrep を社内セキュリティゲートとして導入。全 PR で Semgrep + Snyk Open Source + Trivy(コンテナ)を強制実行。自社ルールセット(`coupang-rules`)を Semgrep ルール形式で社内共有しています。
**Toss(トス)**: フロントエンドは 2024 年に ESLint → Biome へ移行し、Python バックエンドは flake8/black → Ruff へ移行。社内 PR で Copilot Code Review + Cursor Bugbot を有効化。セキュリティゲートとして Snyk Code を使用しています。
**カロット(Karrot)**: DeepSource Team をモノレポ全体に導入。Sonar の代替としてコストパフォーマンスを重視し、Autofix を積極活用して社内コードベースの整理に役立てています。AI レビューは CodeRabbit を部分導入。
25. 日本の事例 — Mercari · LINE ヤフー · サイバーエージェント · SmartHR
**Mercari**: 2020 年から社内セキュリティガイドラインで Semgrep を標準採用し、2023 年から CodeQL を GitHub Code Scanning として追加導入。PR ごとに Semgrep + CodeQL + Snyk Code + Trivy + GitGuardian の多層解析を実施。社内ルールは GitHub Actions Reusable Workflow で共有しています。
**LINE ヤフー**: 合併後、社内 SonarQube Data Center Edition を単一インスタンスに統合運用。約 1 万人の開発者が同一インスタンスを使い、Quality Gate を通過しないと main ブランチへマージできません。2025 年から SonarCloud への部分移行 PoC を進めています。
**サイバーエージェント**: Codacy Enterprise を子会社単位で導入。多言語環境(Go, Java, Kotlin, PHP, Python)を単一ツールでカバーするための選択です。AI レビューは Bito + CodeRabbit を部分導入。
**SmartHR**: 社内標準は RuboCop + Sider Scan(現 Sider, Inc.)。Ruby モノレポに最も適した組み合わせで、2025 年からは Qodo Gen で IDE 段階の AI 補助も導入しています。
26. ツール選択チェックリストと 2027 年の展望
選定ガイドライン:
1. **単一言語** の場合 → その言語の標準リンター(ESLint, Ruff, golangci-lint, clippy)+ Semgrep + シークレットスキャナの組み合わせ
2. **多言語モノレポ** の場合 → SonarQube または Codacy/DeepSource で単一ダッシュボードを確保
3. **セキュリティ最優先** の場合 → Snyk Code + Semgrep + Trivy + GitGuardian の多層防御
4. **速度最優先**(大型 PR が頻繁)の場合 → Biome/Oxlint(JS), Ruff(Python), Semgrep(SAST)で高速フィードバックループ
5. **レガシー整理** が目的の場合 → DeepSource Autofix, Qodo Cover, Rector(PHP)のような自動修正ツール
6. **エンタープライズ/規制業界** の場合 → Veracode あるいは Checkmarx + Fortify の組み合わせ
2027 年の展望:
- **Rust ベースツールの完全制覇**: Biome, Oxlint, Ruff が JS/Python 市場をほぼ占領する見込み
- **AI レビューの標準化**: Copilot Code Review が全ての GitHub Enterprise 顧客でデフォルト有効化される方向へ
- **LLM ベース自動修正の一般化**: DeepSource, Snyk Code, Qodo Cover の Autofix が全欠陥の 60% 以上で正確なパッチを生成
- **社内ルール学習**: Cody Coding Standards, Greptile のように会社別のコードスタイルを学習するレビューアが一般化
- **SAST + SCA + シークレット + IaC + Container の統合**: Snyk, Sonar, Semgrep の 3 社が単一プラットフォームで全カテゴリをカバー
コード品質ツールはもはや「あれば便利」な補助ではありません。2026 年には PR ゲートとして実質必須で、どの組み合わせをどう運用するかがエンジニアリング生産性の核心的な違いを生みます。
27. References
- SonarQube Docs — `https://docs.sonarsource.com/sonarqube/`
- SonarCloud — `https://www.sonarsource.com/products/sonarcloud/`
- CodeClimate Quality — `https://codeclimate.com/quality`
- Qlty — `https://qlty.sh/`
- Codacy — `https://www.codacy.com/`
- DeepSource — `https://deepsource.com/`
- Qodana(JetBrains) — `https://www.jetbrains.com/qodana/`
- Qodo(旧 CodiumAI) — `https://www.qodo.ai/`
- Semgrep — `https://semgrep.dev/`
- CodeQL — `https://codeql.github.com/`
- Snyk Code — `https://snyk.io/product/snyk-code/`
- Veracode — `https://www.veracode.com/`
- Checkmarx — `https://checkmarx.com/`
- OpenText Fortify — `https://www.opentext.com/products/fortify-static-code-analyzer`
- ESLint 9 Release — `https://eslint.org/blog/2024/04/eslint-v9.0.0-released/`
- Biome — `https://biomejs.dev/`
- Oxlint(Oxc) — `https://oxc.rs/docs/guide/usage/linter.html`
- Ruff(Astral) — `https://docs.astral.sh/ruff/`
- golangci-lint — `https://golangci-lint.run/`
- Bearer CLI — `https://github.com/Bearer/bearer`
- GitGuardian — `https://www.gitguardian.com/`
- TruffleHog — `https://github.com/trufflesecurity/trufflehog`
- Gitleaks — `https://github.com/gitleaks/gitleaks`
- Trivy(Aqua) — `https://trivy.dev/`
- Kics(Checkmarx) — `https://kics.io/`
- Checkov — `https://www.checkov.io/`
- GitHub Copilot Code Review — `https://docs.github.com/en/copilot/using-github-copilot/code-review/using-copilot-code-review`
- Greptile — `https://www.greptile.com/`
- CodeRabbit — `https://www.coderabbit.ai/`
- Cursor Bugbot — `https://docs.cursor.com/bugbot`
- Codecov — `https://about.codecov.io/`
- OSS-Fuzz — `https://google.github.io/oss-fuzz/`
- Pre-commit — `https://pre-commit.com/`
- Lefthook — `https://github.com/evilmartians/lefthook`
- Standard Webhooks(参考) — `https://www.standardwebhooks.com/`
현재 단락 (1/306)
静的解析(Static Analysis)は 1970 年代の Lint(`lint.c`, Stephen C. Johnson, ベル研究所, 1978)に始まり、約 50 年にわたって進化を続け...