LabHub

ブログ

コード品質 & 静的解析 2026 完全ガイド — SonarQube · CodeClimate · Codacy · DeepSource · Qodo Cover · Snyk Code · Semgrep · ESLint 徹底解剖

한국어English日本語

「コードを書く時間より読む時間のほうが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 つの主要手法に分かれ、それぞれタイミング・観点・トレードオフが異なります。

手法正式名称タイミング代表ツール
SASTStatic Application Security Testingビルド前/CISonarQube, Semgrep, CodeQL, Snyk Code, Veracode, Checkmarx, Fortify
DASTDynamic Application Security Testing実行中 (運用)OWASP ZAP, Burp Suite, Acunetix, Rapid7 InsightAppSec
IASTInteractive Application Security Testing実行中 (計装)Contrast Security, Checkmarx IAST, HCL AppScan
SCASoftware 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 には次の特徴があります。

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 つの製品ラインがあります。

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 解析器を統合します。

Codacy は SonarCloud より多くの言語/エンジンをサポートしますが、単一ルールセットの深さでは劣るというのが一般的な評価です。日本のサイバーエージェント、韓国の LINE プラス一部チームで活用されています。

6. DeepSource — 高速マネージド SAST + 自動修正(Autofix)

DeepSource(インド・バンガロール)は 2018 年に始まった比較的新しいプラットフォームで、「速度ときれいな UX」を武器に急成長しています。

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 上でも同じように動かせるようにしたものです。

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 へ変更されました。

Qodo Cover は単に行カバレッジを上げるのではなく、ブランチカバレッジミューテーションスコア を同時に改善します。2025 年に IBM, JPMorgan のようなエンタープライズが採用し、Mercari R&D チームでも PoC が実施されました。

9. Semgrep 1.x — パターンベースの高速 SAST

Semgrep(米国サンフランシスコ, r2c 発 → 2022 年 Semgrep Inc. へリブランディング)は 2019 年に始まった パターンベース(pattern-based) SAST です。AST マッチング + データフロー解析を組み合わせ、高速で表現力豊かなルールを書けるのが特徴です。

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(英国オックスフォード)の解析エンジンで、コードをデータベースに変換してクエリする アプローチを採ります。

CodeQL は深いデータフロー解析が可能で taint tracking(ユーザー入力が sink へ流れる過程の追跡)に優れますが、解析時間が長く(平均 10〜30 分)、大規模コードベースで PR ごとに走らせるのは負担です。Semgrep + CodeQL を併用するパターンが一般的です。

11. Snyk Code(旧 DeepCode) — AI ベースのセキュリティ SAST

Snyk Code(スイス・チューリッヒ → Snyk, 米国ボストン本社)は 2020 年に Snyk が買収した DeepCode が母体です。ML ベースの SAST で、既知のセキュリティパターンを学習し新しい亜種も検出します。

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 の例です。

// eslint.config.js
import js from '@eslint/js'
import tseslint from 'typescript-eslint'
import react from 'eslint-plugin-react'

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 の高速な代替として台頭しています。

Oxlint(Oxc, 韓国人開発者 Boshen 主導, 2023 年〜)は ESLint と 100% 互換を目指す Rust ベースのリンターです。

Toss は 2024 年から社内モノレポ全体で ESLint → Biome 移行を進め、カカオは Oxlint を一部フロントエンドチームに導入しました。

15. Ruff — Rust で書き直された Python 統合ツール

Ruff(Astral, 米国, 2022 年〜)は Rust で書かれた Python リンター + フォーマッタで、flake8, black, isort, pyupgrade, pydocstyle, pylint の一部を一つのツールに統合しています。

Python の静的型チェッカーは別途存在します。

16. Go / Rust / Java — 各言語の標準リンター

Go の標準は golangci-lint です。

staticcheck(Dominik Honnef): golangci-lint に含まれるが単体でも強力な Go 静的解析器。 gosec: Go コードのセキュリティ欠陥(ハードコード秘密、SQL インジェクションなど)専用スキャナ。

Rustcargo clippy(公式リンター) + cargo fmt(公式フォーマッタ)が標準です。clippy は 600 以上のルールを持ち、cargo clippy --fix で自動修正もサポートします。

Java:

17. その他の言語 — C/C++ · Ruby · Kotlin · Swift · PHP

C/C++:

Ruby: RuboCop(Bozhidar Batsov, 2012 年〜)が事実上の標準。Style, Layout, Lint, Metrics, Security, Performance の 6 部門にルールを分類しています。

Kotlin:

Swift:

PHP:

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 ReviewGitHub/MicrosoftGitHub PR にネイティブ統合、GPT-4o ベース
GreptileGreptile(YC W24)リポジトリ全体の理解に基づくレビュー、GPT-4 + Claude
CodeRabbitCodeRabbit(インド)マルチ LLM ルーティング、推論モデル使用
BitoBito(米国)AI Code Review Agent + Bito Wingman
Cody ReviewSourcegraphCody Coding Standards(社内ルールを学習)
Aviator ReviewerAviator(米国)MergeQueue + AI レビュー
CodeAnt AICodeAnt AI(インド)セキュリティ + 品質統合
DiamondAIDiamond(米国)Claude ベースのスタートアップ
Cursor BugbotAnysphere(Cursor)2024 年 12 月リリース、バックグラウンドで PR レビュー

AI コードレビューの価値はシンプルです — 人が見落とすパターン(null チェック漏れ、race condition、誤ったログレベル)を素早く捕まえ、レビューアの認知負荷を下げます。ただし偽陽性は依然として多く、人の最終確認は必須 です。

Toss、カロット、Mercari は 2025 年から社内 PR で Copilot Code Review を有効化し、LINE ヤフーは Greptile + CodeRabbit を部分導入しています。

19. コードカバレッジ — Codecov · Coveralls · Codacy Coverage · Qlty

コードカバレッジ はテストが実際に実行した行/ブランチの割合を測定します。静的解析ではありませんが、コード品質ゲートの核心指標です。

diff-cover(Open edX)のようなツールを使うと、PR で変更された行のカバレッジだけを別に測定できるので、レガシーコードを無視して新規コードだけをゲート対象にするパターンが可能です。

20. ミューテーションテスト · ファズテスト — テストのテスト

ミューテーションテスト はテスト自体の品質を測定します。コードを意図的に変異(==!=, +-, &&||)させ、テストがその変異を捕まえられなかった場合「mutation survived」と記録します。

ファズテスト はランダムな入力を流し込んでクラッシュを見つける手法です。

Go 1.18 以上は testing.F でネイティブファジング、Rust は cargo fuzz で対応しています。Mercari は 2024 年から一部の Go マイクロサービスにネイティブファジングを導入しました。

21. シークレットスキャン — GitGuardian · TruffleHog · Gitleaks

シークレットスキャン はコードに誤ってコミットされた API キー、パスワード、トークンを見つける専用ツールです。SonarQube/Semgrep も一部捕まえますが、専用ツールのほうが強力です。

GitHub Push Protection は 2024 年から全パブリックリポジトリで無料有効化されています。Toss, カカオバンク, Mercari, LINE ヤフーは全て GitGuardian Enterprise を使っています。

22. コンテナ · IaC スキャン — Trivy · Kics · Checkov · Bearer CLI

Trivy(Aqua Security, 2019 年〜)は最も人気の OSS セキュリティスキャナで、以下を全て検査します。

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 で捕まえるよりコミット前に捕まえるほうが常に安く速いです。プリコミットフックの標準は以下の通りです。

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 年の展望:

コード品質ツールはもはや「あれば便利」な補助ではありません。2026 年には PR ゲートとして実質必須で、どの組み合わせをどう運用するかがエンジニアリング生産性の核心的な違いを生みます。

27. References

コメント

まだコメントはありません。

ログインするとコメントできます