cccy check
複雑度が閾値を超えているかチェックするコマンドです。CI/CDでの使用に最適化されており、問題のあるファイルが見つかった場合は終了コード1で終了します。
基本的な使い方
# 循環的複雑度のみチェック
cccy check --max-complexity 10 src/
# 両方の複雑度をチェック
cccy check --max-complexity 10 --max-cognitive 7 src/
オプション
複雑度の閾値
# 循環的複雑度の最大値を設定
cccy check --max-complexity 10 src/
# 認知的複雑度の最大値を設定
cccy check --max-cognitive 7 src/
# 両方を設定
cccy check --max-complexity 10 --max-cognitive 7 src/
ファイルの除外・包含
# 特定のパターンを除外
cccy check --exclude "*/tests/*" --exclude "*/migrations/*" src/
# 特定のパターンのみ包含
cccy check --include "*.py" src/
# 再帰解析を無効化
cccy check --no-recursive src/
出力例
問題なしの場合
問題ありの場合
$ cccy check --max-complexity 8 src/
Files exceeding complexity thresholds:
File Cyclomatic Cognitive Status
-------------------- ---------- --------- ------
src/complex_func.py 12 8 HIGH
src/another_complex.py 10 6 HIGH
2 files exceeded the complexity thresholds.
$ echo $?
1
終了コード
- 0: すべてのファイルが閾値以下
- 1: 一つ以上のファイルが閾値を超えている
- 2: エラーが発生した(ファイルが見つからない、権限エラーなど)
CI/CDでの使用例
GitHub Actions
name: Complexity Check
on: [push, pull_request]
jobs:
complexity:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install cccy
run: pip install cccy
- name: Check complexity
run: cccy check --max-complexity 10 --max-cognitive 7 src/
GitLab CI
complexity_check:
stage: test
script:
- pip install cccy
- cccy check --max-complexity 10 src/
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
設定ファイルとの組み合わせ
pyproject.toml に設定がある場合:
コマンドライン引数で上書き可能:
# 設定ファイルの設定を使用
cccy check
# 閾値のみ上書き
cccy check --max-complexity 12
# パスも上書き
cccy check --max-complexity 12 src/ tests/
段階的な導入
大規模プロジェクトでは段階的に閾値を厳しくしていくことを推奨: