Skip to content

SonicGarden/sgcop

Repository files navigation

Sgcop

SonicGarden 標準の rubocop設定支援をするツール

Installation

gem 'sgcop', github: 'SonicGarden/sgcop', branch: 'main'

Usage

SonicGarden 標準スタイルを用意しています。

プロジェクトルートに .rubocop.yml ファイルをつくり、Rails ではないプロジェクトの場合は以下のように書く。

inherit_gem:
  sgcop: ruby/rubocop.yml

Rails プロジェクトの場合は以下のように書く。

inherit_gem:
  sgcop: rails/rubocop.yml

そして実行。

rubocop <options...>

カスタムCop一覧

sgcopが提供するカスタムCopの一覧です。

Rails関連

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メソッドの使用を制限

Capybara関連

Cop名 説明 デフォルト
Sgcop/Capybara/FragileSelector 脆弱なCSSセレクタの使用を防止(data属性の使用を推奨)
Sgcop/Capybara/Matchers Capybaraマッチャーの適切な使用をチェック
Sgcop/Capybara/Sleep テストでのsleepの使用を制限

RSpec関連

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-を導入する

参考サイト

設定ファイルにドキュメントのリンクを付加するスクリプト(sgcop 開発者向け)

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

Contributing

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.

License

The gem is available as open source under the terms of the MIT License.

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 12

Languages