Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

slim-lintの5個のルールを調査し、3個を適用、2個を除外したままにした。 #7446

Merged
merged 5 commits into from
Mar 11, 2024

Conversation

masyuko0222
Copy link
Contributor

@masyuko0222 masyuko0222 commented Feb 27, 2024

Issue

概要

slim-lintで除外(記載)されている以下の5つのルールについて調査を行い、問題がなければ除外せずに適用しました。

- Layout/BlockAlignment 
- Metrics/BlockNesting
- Naming/FileName
- Style/IfUnlessModifier
- Style/Next

調査内容

適用をしたルールは3つです。適用に至った理由は以下のリンクに記載しています。

除外をしたままにするルールは2つです。除外のままに至った理由は以下のリンクに記載しています。

変更確認方法

  1. feature/apply-slimlint-rule-6をローカルに取り込む。
  2. bundle exec slim-lint app/views/ -c config/slim_lint.ymlを実行し、エラー(警告メッセージ)が出ないことを確認する。

Screenshot

UI上の変化はないため割愛します。

@masyuko0222
Copy link
Contributor Author

masyuko0222 commented Mar 4, 2024

@komagata
以下のルールを適用するべきかご相談させてください。

  • Style/IfUnlessModifier

こちらのルールは、条件式が1行で書けるにも関わらず、複数行使用している場合に警告を発します。

# bad
if condition
  do_stuff(bar)
end

# good
do_stuff(bar) if condition

一方で、このルールはLayout/LineLengthで指定された文字数(160文字)を越えない限りは、警告対象となってしまいます。
そのため、以下のように条件式が非常に長い場合でも修正を求められてしまいます。

  • app/views/products/show.html.slim
// before
- if @product.user == current_user && !@product.wip? && !@product.checked? && @product.commented_users.mentor.empty?
  = render 'message_for_after_submission'

// after
= render 'message_for_after_submission' if @product.user == current_user && !@product.wip? && !@product.checked? && @product.commented_users.mentor.empty?

上記を踏まえ、対応としては以下の4点があると思っています。

  1. 条件式が長い場合はHelperに移動をさせつつ、ルールの適用をする
  2. 除外をしたままにする
  3. そのままルール通りの適用をする
  4. Layout/LineLengthの設定を変えて、ルールの適用をする(別PRでLineLengthのルール適用を行っている最中なので、ちょっと面倒くさい)

自分の中では順番通りの優先度となっています。ご意見いただけると幸いです。

@komagata
Copy link
Member

komagata commented Mar 5, 2024

@masyuko0222 なるほどです。
Style/IfUnlessModifierは除外で大丈夫です〜

@masyuko0222
Copy link
Contributor Author

masyuko0222 commented Mar 7, 2024

@komagata
以下のルールを適用するべきかご相談させてください。

  • Style/Next

こちらのルールは、繰り返し文の中で条件式の代わりにnextを使える場合に、警告を発します。

# bad
[1, 2].each do |a|
  if a == 1
    puts a
  end
end

# good
[1, 2].each do |a|
  next unless a == 1
  puts a
end

一方で、Slimだとスタイル用のidやclassを書いてある行が非常に多いため、eachブロック開始から該当の行まで数十行を挟んでしまうこともあります。
以下のコード例はeachブロック開始は36行目、警告対象の行が93行目となっています。
https://github.com/fjordllc/bootcamp/blob/a84b95664bcd073f33b797a2e4aa38a1ac24071c/app/views/surveys/show.html.slim#L36C1-L93C68

上記のコード例だと、if式のままの方が可読性が高いと個人的に思います。
そのため、このルールも除外のままにしておきたいのですが、いかがでしょうか。
ご意見いただけると幸いです。

@komagata
Copy link
Member

komagata commented Mar 7, 2024

@masyuko0222 なるほどです。
ではStyle/Nextは除外して大丈夫です〜

@masyuko0222 masyuko0222 force-pushed the feature/apply-slimlint-rule-6 branch from 3b9183d to f28de8c Compare March 8, 2024 13:04
@masyuko0222 masyuko0222 changed the title slim-lintの5個のルールを調査し、問題がないものを適用させた slim-lintの5個のルールを調査し、3個を適用、2個を除外したままにした。 Mar 8, 2024
@masyuko0222 masyuko0222 self-assigned this Mar 8, 2024
@masyuko0222 masyuko0222 marked this pull request as ready for review March 8, 2024 13:48
@masyuko0222
Copy link
Contributor Author

@nishitatsu-dev
お疲れ様です!ご都合よろしければレビューして頂けないでしょうか!m(_ _)m

@nishitatsu-dev
Copy link
Contributor

@masyuko0222
お疲れ様です!レビュー承知しました〜
1週間以内に対応しますので、少々お待ちください🙏

Copy link
Contributor

@nishitatsu-dev nishitatsu-dev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@masyuko0222
適用した3ルールを確認しました〜

  • コードはLGTMなので、Approveします!
  • 検討結果について、細かい話ですが、下記だけ修正しておいて下さい〜
    Metrics/BlockNestingのネスト数ですが「3つまではOKで、4つ以上がNG」でした。数字の修正お願いします🙏

Slimでは、do~endのendをそもそも書かないので、適用させておいても問題が無いと判断した。
3段以上(変更可能)のブロックのネストを作ると警告が出るルール。適用した理由は以下
・警告された場合でも十分に修正が可能である
・可読性を高めるための妥当なルールである
Rubyファイルがスネークケースであるかを確認するルールなので、そもそも対象外
@masyuko0222 masyuko0222 force-pushed the feature/apply-slimlint-rule-6 branch from f28de8c to fb5259c Compare March 11, 2024 11:57
@masyuko0222
Copy link
Contributor Author

masyuko0222 commented Mar 11, 2024

@nishitatsu-dev

Metrics/BlockNestingのネスト数ですが「3つまではOKで、4つ以上がNG」でした

ありがとうございます!more than 3 levels of block nesting.で出る警告なので、3は含まずに4つ以上でしたね・・・。
数値は修正しました、お手数おかけしました。

@komagata
Approve頂いたので、レビューのほどお願いいたします!

@masyuko0222 masyuko0222 requested a review from komagata March 11, 2024 12:00
Copy link
Member

@komagata komagata left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

確認させて頂きました。OKです〜🙆‍♂️

@komagata komagata merged commit 6cbc913 into main Mar 11, 2024
3 checks passed
@komagata komagata deleted the feature/apply-slimlint-rule-6 branch March 11, 2024 17:19
@github-actions github-actions bot mentioned this pull request Mar 11, 2024
29 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants