rubocop について
rubocopは、Ruby開発者向けにRuboCopでのコード検査、フォーマット、規約適用を支援するスキルです。設定可能な解析や安全・非安全な自動修正に加え、Rails、RSpec、パフォーマンスの検査も扱います。
主な機能
- 01Rubyのスタイルと潜在的な問題の検査
- 02安全・非安全な自動修正
- 03プロジェクト単位の設定ガイド
- 04Rails、RSpec、パフォーマンス検査
活用シーン
- 01Rubyコードの違反やコードスメルの確認
- 02Rubyプロジェクトへのフォーマット修正
- 03RailsやRSpec向け検査の設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ el-feo/ ai-context --skill rubocopインストール後、Claude Code で/rubocopを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/autocorrect_guide.mdconfiguration_guide.mdcop_reference.mdcustom_cops_guide.mdextensions_guide.mdscripts/README.md詳細
RuboCop によるコード解析とフォーマット
RuboCop は、コミュニティ主導の Ruby Style Guide に基づく、Ruby の主要な静的コード解析ツール(リンター)兼フォーマッターです。このスキルを使うと、Rails アプリケーションを含む Ruby プロジェクト全体で、包括的なコード解析、自動フォーマット、コーディング標準の適用ができます。
このスキルを使う場面
Claude は、ユーザーが次のことを行う場合に、このスキルを自動的に使用します。
- Ruby コードの「チェック」「lint」「解析」「レビュー」を依頼する
- コードのフォーマットやスタイルの改善を依頼する
- コーディング標準やスタイルガイドラインを適用する
- 潜在的なバグやコードの不適切なパターンを検出する
- RuboCop の設定やセットアップについて質問する
- Rails、RSpec、パフォーマンスに特化した解析を依頼する
- Ruby コードに自動修正を適用する
主な機能
コード解析とLint
- すべての cop 部門にわたって、スタイル違反、バグ、コードの不適切なパターンを検出します
- Rails、RSpec、Performance、およびカスタム cop 拡張をサポートします
- 行番号と説明を含む詳細な違反レポートを提供します
コードの自動修正
- 安全な自動修正(
-a)で、確実に安全な修正を適用します - 安全ではない自動修正(
-A)で、より広範ながらリスクの高い修正を適用します - レイアウトのみの修正(
-x)で、ロジックを変更せずにフォーマットを整えます
設定とカスタマイズ
- 柔軟な
.rubocop.yml設定 - プロジェクト単位およびディレクトリ単位での設定継承
- cop の選択的な有効化・無効化と重大度の調整
- カスタム cop の開発をサポート
拡張機能との統合
- rubocop-rails:Rails のベストプラクティスと規約
- rubocop-rspec:RSpec に特化した解析
- rubocop-performance:パフォーマンス最適化チェック
すばやく解析するワークフロー
基本的な解析を実行する
# Analyze current directory
rubocop
# Analyze specific files/directories
rubocop app spec lib/important_file.rb
# Show only correctable offenses
rubocop --display-only-correctable
修正を適用する
# Safe autocorrection only (recommended)
rubocop -a
# All corrections including unsafe
rubocop -A
# Layout/formatting corrections only
rubocop -x
# Autocorrect specific cops
rubocop -a --only Style/StringLiterals,Layout/TrailingWhitespace
対象を絞って解析する
# Run only specific cops
rubocop --only Style/StringLiterals,Naming/MethodName
# Run all cops except specified
rubocop --except Metrics/MethodLength
# Run only lint cops
rubocop --lint
# Check only Rails-specific issues
rubocop --only Rails
設定の基本
基本的な .rubocop.yml の設定
# Enable extensions
plugins:
- rubocop-rails
- rubocop-rspec
- rubocop-performance
AllCops:
TargetRubyVersion: 3.2
NewCops: enable # Auto-enable new cops
Exclude:
- 'db/schema.rb'
- 'vendor/**/*'
- 'node_modules/**/*'
# Adjust specific cops
Style/StringLiterals:
EnforcedStyle: double_quotes
Metrics/MethodLength:
Max: 15
Exclude:
- 'spec/**/*'
よく使われる設定パターン
共有設定を継承する:
inherit_from:
- .rubocop_todo.yml
- config/rubocop_defaults.yml
Rails 固有の設定:
Rails:
Enabled: true
Rails/ApplicationRecord:
Enabled: true
Exclude:
- 'db/migrate/**'
RSpec の設定:
RSpec/ExampleLength:
Max: 10
RSpec/MultipleExpectations:
Max: 3
解析結果の解釈
違反出力の見方
app/models/user.rb:15:3: C: Style/StringLiterals: Prefer single-quoted strings...
name = "John Doe"
^^^^^^^^^^
出力の内訳:
app/models/user.rb:15:3- ファイルパス、行番号、列番号C:- 重大度(C=規約、W=警告、E=エラー、F=致命的)Style/StringLiterals- cop 部門と名前- メッセージには問題の説明があり、多くの場合、修正案も示されます
重大度レベル
- Convention(C):スタイルやフォーマットの問題
- Warning(W):確認が必要な潜在的な問題
- Error(E):修正が必要な明確な問題
- Fatal(F):解析を妨げる構文エラー
よく使われるワークフロー
プロジェクトの初期設定
# Generate initial configuration
rubocop --init
# Generate .rubocop_todo.yml for existing violations
rubocop --auto-gen-config
# Use todo file to gradually fix issues
# .rubocop.yml:
inherit_from: .rubocop_todo.yml
コミット前の統合
# Check staged files only
git diff --name-only --cached | grep '\.rb$' | xargs rubocop
# With autocorrection
git diff --name-only --cached | grep '\.rb$' | xargs rubocop -a
CI/CD への統合
# Exit with error code if offenses found
rubocop --format progress --fail-level warning
# Generate formatted reports
rubocop --format json --out rubocop-report.json
rubocop --format html --out rubocop-report.html
並列実行
# Use all available CPUs (enabled by default)
rubocop --parallel
# Limit CPU usage
PARALLEL_PROCESSOR_COUNT=2 rubocop
拡張機能固有の機能
Rails の解析
Rails 固有の問題を検出します。
- ActiveRecord のベストプラクティス
- コントローラーとルーティングの規約
- マイグレーションの安全性チェック
- SQL インジェクションのリスク
RSpec の解析
RSpec のベストプラクティスを適用します。
- example の構成と命名
- let とインスタンス変数の使い分け
- expectation のパターン
- テストファイルの構成
パフォーマンス解析
パフォーマンスを最適化できる箇所を特定します。
- 効率の悪いコレクションメソッド
- 文字列連結の問題
- 不要な配列の割り当て
- 正規表現のコンパイル最適化
トラブルシューティング
「Unknown cop」エラー:
- 必要な gem(
rubocop-rails、rubocop-rspecなど)がインストールされていることを確認します .rubocop.ymlにplugins: [rubocop-rails]を追加します
自動修正が機能しない:
- 自動修正に対応していない cop もあります
- 安全ではない修正には
-Aを使用します - 設定で cop が有効になっていることを確認します
パフォーマンスの問題:
- 実行を高速化するには
--parallelを使用します - 設定の
AllCopsの下にUseCache: trueを追加します - サイズの大きい生成ファイルを除外します
追加リソース
- 設定ガイド - 包括的な設定リファレンス
- Cop リファレンス - すべての Cop 部門とその責務
- 拡張機能ガイド - Rails、RSpec、Performance 拡張機能の詳細
- 自動修正ガイド - 安全な修正と安全でない修正の説明
- カスタム Cop ガイド - プロジェクト用のカスタム Cop の作成
コメント
Markdown 対応