SonicGarden 標準の rubocop設定支援をするツール
gem 'sgcop', github: 'SonicGarden/sgcop', branch: 'main'
SonicGarden 標準スタイルを用意しています。
プロジェクトルートに .rubocop.yml ファイルをつくり、Rails ではないプロジェクトの場合は以下のように書く。
inherit_gem:
sgcop: ruby/rubocop.yml
Rails プロジェクトの場合は以下のように書く。
inherit_gem:
sgcop: rails/rubocop.yml
そして実行。
rubocop <options...>
sgcopが提供するカスタムCopの一覧です。
Cop名 | 説明 | デフォルト |
---|---|---|
Sgcop/ActiveJobQueueAdapter |
ActiveJobのキューアダプタ設定をチェック | ✅ |
Sgcop/LoadDefaultsVersionMatch |
config.load_defaultsのバージョンがRailsバージョンと一致することを確認 | ✅ |
Sgcop/NestedResourcesWithoutModule |
ネストされたルーティングでmoduleオプションの使用を推奨 | ❌ |
Sgcop/NoAcceptsNestedAttributesFor |
accepts_nested_attributes_forの使用を制限 | ❌ |
Sgcop/ErrorMessageFormat |
エラーメッセージはシンボルを使用することを強制 | ❌ |
Sgcop/OnLoadArguments |
on_loadブロックの引数使用をチェック | ✅ |
Sgcop/PreferAbsolutePathPartial |
パーシャルファイルのrenderは絶対パスで指定(autocorrect対応) | ✅ |
Sgcop/RequestRemoteIp |
request.remote_ipの適切な使用を確認 | ✅ |
Sgcop/ResourceActionOrder |
resourcesルーティングのアクション順序を統一 | ✅ |
Sgcop/ResourcesWithoutOnly |
resourcesルーティングでonlyオプションの使用を推奨 | ✅ |
Sgcop/RetryOnInfiniteAttempts |
retry_onでの無限リトライを防止 | ✅ |
Sgcop/SimpleFormat |
simple_formatメソッドの安全な使用を確認 | ✅ |
Sgcop/SimpleFormAssociation |
SimpleFormのassociationメソッドの適切な使用をチェック | ✅ |
Sgcop/StrictLoadingRequired |
N+1問題を防ぐstrict_loadingの使用を推奨 | ❌ |
Sgcop/TransactionRequiresNew |
requires_new: trueを使用したトランザクションをチェック | ✅ |
Sgcop/UjsOptions |
Rails UJSオプションの適切な使用を確認 | ✅ |
Sgcop/Unscoped |
unscopedメソッドの使用を制限 | ✅ |
Cop名 | 説明 | デフォルト |
---|---|---|
Sgcop/Capybara/FragileSelector |
脆弱なCSSセレクタの使用を防止(data属性の使用を推奨) | ❌ |
Sgcop/Capybara/Matchers |
Capybaraマッチャーの適切な使用をチェック | ✅ |
Sgcop/Capybara/Sleep |
テストでのsleepの使用を制限 | ✅ |
Cop名 | 説明 | デフォルト |
---|---|---|
Sgcop/RSpec/ActionMailerTestHelper |
ActionMailerテストヘルパーの適切な使用を確認 | ❌ |
Sgcop/RSpec/RedundantPerformEnqueuedJobs |
ActionMailer::TestHelperメソッドとperform_enqueued_jobsの冗長な使用を防止 | ✅ |
Cop名 | 説明 | デフォルト |
---|---|---|
Sgcop/EnumerizeDefaultOption |
Enumerizeのdefaultオプションの使用をチェック | ❌ |
Sgcop/EnumerizePredicatesOption |
Enumerizeのpredicatesオプションの使用を制限(メソッド名コンフリクトを防止) | ❌ |
Sgcop/HashFetchDefault |
Hash#fetchのデフォルト値の適切な使用を確認 | ✅ |
Sgcop/RestrictedViewHelpers |
特定のビューヘルパーメソッドの使用を制限(設定でカスタマイズ可能) | ✅ |
Sgcop/StrftimeRestriction |
strftimeメソッドの使用を制限し、I18n.lの使用を推奨 | ✅ |
http://blog.onk.ninja/2015/10/27/rubocop-getting-started
自動修正して楽したいならこちら
http://blog.onk.ninja/2015/10/27/rubocop-getting-started#治安の悪いアプリに-rubocop-を導入する
- Rubocop チートシート http://qiita.com/kitaro_tn/items/abb881c098b3df3f9871
- 設定一覧(本家) https://github.com/bbatsov/rubocop/tree/master/config
ruby/rubocop.yml, rails/rubocop.yml に新しい cop(ルール)設定を追加した後、以下のコマンドを実行すると、rubocop の cop のドキュメントへのリンクをコメントとして追加します。
ruby add_doc_links.rb
# https://docs.rubocop.org/rubocop/cops_style.html#styleasciicomments
Style/AsciiComments:
Enabled: false
Bug reports and pull requests are welcome on GitHub at https://github.com/SonicGarden/sgcop. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
The gem is available as open source under the terms of the MIT License.