rubocop / rubocop-jp

A place for RuboCop discussions in Japanese
55 stars 2 forks source link

offenseに「offenseを無視することが正当であるケース」を入れるフィールドを追加する #21

Closed pocke closed 1 year ago

pocke commented 7 years ago

たとえば、 querlyには、警告にjustification という項目が存在します。querly公式のサンプルにjustificationsがのってなくてつらいのですが、こんな感じです。

rules:
  - id: com.sideci.find_with_bang
    pattern: "find_by(_) [!conditional]"
    message: find_byは対象のレコードが見つからない場合にnilを返します。find_by!を利用しましょう。
    justification: nilが返ってくることを期待する場合

このようにjustificationがあることで、Lintがfalse positiveを出した場合にユーザーがそれをfalse positiveだと判断できるようになります。 現状ユーザーが「本当にこの警告に従うべきなのか」と思った時に、RuboCopは参考になるような情報をなにも提供していないので、これによって「従わなくても良い」ケースに関してはそう言えるようにしたいと思っています。

https://teratail.com/questions/99932 は、「justificationがあれば質問をせずすぐ解決できた」実際の事例です。こういうことは結構たくさん起きていると思うので、この機能を追加することで迷ってしまう体験を減らしたいなーと思っています

onk commented 6 years ago

MSG に「この場合は除外しても良いよ」と書いてあるケースを見つけました。 https://gitlab.com/gitlab-org/rubocop-gitlab-security/blob/v0.1.0/lib/rubocop/cop/gitlab-security/send_file_params.rb#L21-23

「この場合は除外しても良いよ」も書いておかないと指摘を避けるために意味の分からないコードになることがあるし、いちいち詳細なコメントが出てきても困るからオプションにしておきたいとも思うので、 justifications はとてもヨサソウ。

koic commented 1 year ago

角度が違うかもしれませんが、偽陽性を持つ cop は、safe を false で示し、Safety というセクションになぜ安全でないかが記述されるようになっています。以下は一例です。 https://docs.rubocop.org/rubocop/1.45/cops_style.html#stylearraycoercion

RuboCop において、提案にある justification 相当にあたるのではと思います。