0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Coverity クイックリファレンス(チートシート)

0
Posted at

Coverity クイックリファレンス(チートシート)

基本コンポーネント

  • Coverity Analysis: 静的解析エンジン(コードをスキャン)
  • Coverity Connect: Webベースの問題管理UI(http://server:8080)
  • 中間ディレクトリ(idir): 解析の作業ディレクトリ

インストール・初期設定

バージョン確認

cov-analyze --version

コンパイラ設定

# コンパイラの登録
cov-configure --compiler gcc

# 設定済みコンパイラの確認
cov-configure --list-configured-compilers

解析の実行(Build-based)

1. Capture(ソースコード取得)

# ビルドプロセスを監視してキャプチャ
cov-build --dir idir make all
cov-build --dir idir mvn clean install
cov-build --dir idir ./gradlew build

2. Analyze(静的解析)

# 基本解析
cov-analyze --dir idir

# 並列実行(パフォーマンス向上)
cov-analyze --dir idir --jobs 16

# 特定のチェッカーを有効化
cov-analyze --dir idir --enable DEADCODE --enable RESOURCE_LEAK

# 特定のチェッカーを無効化
cov-analyze --dir idir --disable-default --enable DEADCODE

3. Commit(結果登録)

# Coverity Connectへ結果を送信
cov-commit-defects --dir idir \
  --host coverity-server \
  --port 8080 \
  --stream MyProject-main \
  --user admin \
  --password mypassword

解析の実行(Buildless)

スクリプト言語向け

# Capture: ソースディレクトリ指定
cov-capture --dir idir --source-dir src/ --source-dir lib/

# Analyze: Python
cov-analyze --dir idir --python

# Analyze: JavaScript
cov-analyze --dir idir --javascript

# Analyze: Ruby
cov-analyze --dir idir --ruby

# Commit
cov-commit-defects --dir idir --host coverity-server --stream MyProject-main

Coverity CLI(推奨:簡潔な統合コマンド)

すべてのステージを一度に実行

# Build-based
coverity scan --dir idir \
  --build "make all" \
  --host coverity-server \
  --stream MyProject-main

# Buildless
coverity scan --dir idir \
  --capture --source-dir src/ \
  --host coverity-server \
  --stream MyProject-main

チェッカー管理

有効なチェッカーの確認

cov-analyze --dir idir --list-checkers

チェッカーオプションの確認

cov-analyze --dir idir --checker-help CHECKER_NAME

カスタムチェッカー設定(JSON)

{
  "version": 1,
  "languages": ["c", "cpp"],
  "checkers": {
    "enable": ["DEADCODE", "RESOURCE_LEAK", "NULL_RETURNS"],
    "disable": ["UNUSED_VALUE"]
  }
}

Desktop Analysis(ローカル解析)

コマンドライン実行

# ローカル解析の実行
cov-run-desktop --dir idir \
  --url http://coverity-server:8080 \
  --stream MyProject-main \
  --build "make"

# 結果の表示
cov-format-errors --dir idir

Coverity Connect(Web UI操作)

アクセス

  • URL: http://coverity-server:8080(HTTPSの場合は :8443
  • ログイン → Projects → Streams → Outstanding Issues

問題のトリアージ状態

  • New: 新規発見
  • Triaged: 分類済み
  • Fixed: 修正完了
  • Dismissed: 却下(偽陽性など)

トラブルシューティング

解析が失敗する場合

# コンパイラ設定確認
cov-configure --list-configured-compilers

# ビルドコマンド自体の確認
make clean && make

# ログ確認
cat idir/build-log.txt
cat idir/output/analysis-log.txt

コミットエラー

# 接続確認
ping coverity-server
telnet coverity-server 8080

# 認証・ストリーム・権限を確認

パフォーマンス改善

# 並列度を上げる(CPUコア数の50-75%推奨)
cov-analyze --dir idir --jobs 8

# 必要なチェッカーのみ有効化
cov-analyze --dir idir --enable DEADCODE --enable NULL_RETURNS

CI/CD統合

Jenkins統合例

# Jenkinsビルドスクリプト内
cov-build --dir idir make all
cov-analyze --dir idir --jobs 8
cov-commit-defects --dir idir \
  --host ${COVERITY_HOST} \
  --stream ${PROJECT_NAME}-${BRANCH_NAME}

GitHub Actions統合

- name: Coverity Scan
  run: |
    coverity scan --dir idir \
      --build "mvn clean install" \
      --host ${{ secrets.COVERITY_HOST }} \
      --stream MyProject-main

REST API(カスタム統合)

認証

# トークン取得
curl -X POST http://coverity-server:8080/api/v2/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"pass"}'

問題の取得

# プロジェクトの問題一覧
curl -X GET http://coverity-server:8080/api/v2/issues \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

よく使うフィルター(Coverity Connect UI)

  • Impact: High / Medium / Low
  • Kind: Quality / Security
  • Status: New / Triaged / Fixed / Dismissed
  • Owner: 担当者
  • File: ファイルパス

サポート言語(主要なもの)

  • コンパイル型: C, C++, C#, Java, Kotlin
  • スクリプト型: Python, JavaScript, TypeScript, Ruby, PHP, Go
  • モバイル: Swift, Objective-C

コーディング規約対応

# MISRA準拠チェック
cov-analyze --dir idir --coding-standard misra-c-2012

# CERT準拠チェック
cov-analyze --dir idir --cert

# OWASP準拠チェック(セキュリティ)
cov-analyze --dir idir --security

Point and Scan(未知のコードベース向け)

使用シーン

  • ビルドプロセスが不明
  • セキュリティ評価が必要
  • 迅速な初回スキャン

実行

  1. ソースファイルの場所を指定
  2. 結果のアップロード先(ストリーム)を指定
  3. スキャン実行

プロジェクト構造の概念

  • Project: 製品全体(例: MyProduct)
  • Stream: ブランチ単位(例: main, develop, release-v1.0)
  • Snapshot: 解析結果の1回分(タイムスタンプ付き)
  • Triage Store: トリアージ情報の共有ストレージ(複数ストリームで共有可能)

ベストプラクティス

解析スケジュール

  • 夜間: 完全解析(全チェッカー有効)
  • コミット時: 軽量解析(重要チェッカーのみ)
  • 週次: コンプライアンス解析(MISRA、CERT)

パフォーマンス

  • --jobsオプションでCPUコア数の50-75%を指定
  • 不要なチェッカーは無効化
  • ブランチごとに別々のidirを使用

トリアージ

  • 1プロジェクト = 1トリアージストア(推奨)
  • Impactが高い問題から優先的に対処
  • 偽陽性はDismissedに分類(理由をコメント)

主要ログファイル

  • idir/build-log.txt - ビルドキャプチャのログ
  • idir/output/analysis-log.txt - 解析実行のログ
  • Coverity Connectサーバーログ - コミットエラーの詳細

セキュリティ設定

HTTPS有効化

  • 本番環境では必須
  • SSL/TLS証明書の設定

認証統合

  • LDAP / Active Directory
  • SAML
  • ローカル認証(評価用のみ)

ポート設定

  • HTTP: 8080
  • HTTPS: 8443
  • PostgreSQL: 5432(外部DB使用時)

参考リソース

  • 公式ドキュメント: Coverity Platform User and Administrator Guide
  • チェッカーリファレンス: Coverity Checker Reference
  • コミュニティ: Black Duck Community
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?