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(未知のコードベース向け)
使用シーン
- ビルドプロセスが不明
- セキュリティ評価が必要
- 迅速な初回スキャン
実行
- ソースファイルの場所を指定
- 結果のアップロード先(ストリーム)を指定
- スキャン実行
プロジェクト構造の概念
- 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
