# Tree-sitter Analyzer コード品質基準

このファイルは`.pre-commit-config.yaml`の設定に基づき、Roo Codeが高品質なソースコードを作成するための包括的なガイドラインです。

## コードフォーマット規則

### Black フォーマッター
- **行長制限**: 88文字
- **Python バージョン**: Python 3.10+
- **適用範囲**: 全ての`.py`ファイル

### Ruff フォーマッター
- **自動修正**: 有効（`--fix`オプション）
- **エラー時終了**: 修正時も終了コード非ゼロ
- **フォーマット**: ruff-format併用

## リンティング規則

### Ruff
- 自動修正可能な問題は自動で修正
- 修正後もエラーチェックを継続

### Flake8
- **行長制限**: 88文字
- **無視するエラー**: E203, W503, E501
- **追加プラグイン**:
  - flake8-bugbear: バグの可能性があるコードパターンを検出
  - flake8-comprehensions: リスト内包表記の改善提案
  - flake8-simplify: コードの簡素化提案

## 型チェック規則

### MyPy
- **設定**:
  - `--ignore-missing-imports`: 外部ライブラリの型情報不足を無視
  - `--no-error-summary`: エラーサマリーを非表示
  - `--show-error-codes`: エラーコードを表示
  - `--explicit-package-bases`: パッケージベースを明示
- **除外ディレクトリ**: examples/, scripts/, compatibility_test/
- **追加依存関係**: types-psutil>=5.9.0

## インポート整理規則

### isort
- **プロファイル**: black互換
- **行長**: 88文字
- **ソート順序**: 標準ライブラリ → サードパーティ → ローカル

## セキュリティ規則

### Bandit
- **フォーマット**: JSON出力
- **除外**: tests/ディレクトリ
- **チェック項目**: セキュリティ脆弱性の検出

## ドキュメント規則

### pydocstyle
- **規約**: Google スタイル
- **無視するエラー**: D100,D101,D102,D103,D104,D105,D107
- **除外**: tests/, examples/
- **必須**: パブリックモジュール、クラス、関数にはdocstring

## Python近代化規則

### pyupgrade
- **対象バージョン**: Python 3.10+
- **自動更新**: 古い構文を新しい構文に自動変換

## ファイル品質規則

### 基本チェック
- **末尾空白**: 削除（.mdファイルは除外）
- **ファイル末尾**: 改行で終了（.mdファイルは除外）
- **YAML/JSON/TOML**: 構文チェック
- **マージコンフリクト**: 検出
- **大きなファイル**: 1MB以上は警告
- **ケース競合**: ファイル名の大文字小文字競合検出
- **改行コード**: LF統一
- **AST**: Python構文チェック
- **ビルトインリテラル**: 適切な使用チェック
- **docstring位置**: 関数/クラス定義直後に配置
- **デバッグ文**: print(), pdb等の削除
- **テストファイル命名**: pytest形式（test_*.py）

## コーディングベストプラクティス

### 命名規則
- **関数・変数**: snake_case
- **クラス**: PascalCase
- **定数**: UPPER_SNAKE_CASE
- **プライベート**: 先頭アンダースコア（_private）

### 型ヒント
- 全ての関数にtype hintsを追加
- 戻り値の型を明示
- 複雑な型はtyping モジュールを使用

### エラーハンドリング
- 具体的な例外クラスを使用
- 適切なログ出力
- リソースの適切なクリーンアップ

### 非同期プログラミング
- asyncio使用時は適切なawait
- コンテキストマネージャーの活用
- リソースリークの防止

### パフォーマンス
- 不要なループの回避
- 適切なデータ構造の選択
- メモリ効率の考慮

## プロジェクト固有ルール

### Tree-sitter関連
- tree-sitterクエリは適切にテスト
- 言語サポートの一貫性維持
- パーサーエラーの適切な処理

### MCP (Model Context Protocol)
- 非同期処理の適切な実装
- エラーレスポンスの標準化
- リソース管理の徹底

### テスト
- 各機能に対応するテストを作成
- エッジケースのテスト
- モックの適切な使用
- テストカバレッジ80%以上を目標

## 品質チェックコマンド

```bash
# 基本的な品質チェック
uv run pre-commit run --all-files

# 個別チェック
uv run black --check --line-length=88 .
uv run ruff check .
uv run mypy tree_sitter_analyzer/
uv run pytest tests/
```

## 継続的改善

- 定期的なルール見直し
- 新しいツールの評価・導入
- チーム内でのベストプラクティス共有
- パフォーマンス指標の監視