Closed kyohah closed 1 year ago
Suffixes を指定できるようにするのは良いと思います。その場合「Prefixesにマッチしない」かつ「Suffixesにマッチしない」時に警告を出すのが合理的なように思います。
desctiprion
が画面に表示されていない場合
のような日本語はsplit
できません。
これはちょっと厄介ですね。。実装するとしたら、
Patterns
オプションに正規表現を指定するSplit: true|false
のようなオプションを用意して、Splitをするか単に前方一致/後方一致だけを見るかを切り替えるのどちらかになるかなと思います。
機能自体はreasonableなので受け入れられると思います。日本語の説明をするのがちょっと厄介ですが…。
英語を書くのが手間でなかったら、rubocop-rspecの方にIssueを立ててもらうことはできますか? 実装方法に選択肢があるので、他の人の意見もきいてみたいです。
FYIですが、querlyというツールを使うと同様のチェックをすることができます。 https://github.com/soutaro/querly
次のYAMLをquerly.yml
として保存して、querly check
コマンドを実行するとチェックできます。
rules:
- id: ja.rspec.context_warding
pattern:
- subject: "context(!:string: as 'sentence, ...)"
where:
sentence:
- /場合$/
- /とき$/
- subject: "describe(!:string: as 'sentence, ...)"
where:
sentence:
- /場合$/
- /とき$/
message: 'RSpecのcontext、describeの説明文は「場合」もしくは「とき」で終わる必要があります'
examples:
- before: 'context "画面に表示されていない" do; end'
after: 'context "画面に表示されていないとき" do; end'
- before: 'describe "画面に表示されていない" do; end'
after: 'describe "画面に表示されていない場合" do; end'
check:
- path: /spec
rules:
- ja.rspec.context_warding
追記: あ、このパターンだとdescribe SomeClassName
にも警告が出てしまう気がしますね。ちゃんと使うにはその辺を調整したほうが良さそう
@pocke
すみません英語を書くのがすごい苦手で、場合
、とき
という日本語を英語で説明するのは自分には難しいです。
代わりに投稿していただけるとすごい助かります 🙇
https://github.com/rubocop-hq/rubocop-rspec/issues/745 Issueにあげてみました!
こんな感じで作ってみようと思うのですが…どうでしょう…。 (これはメモ用に自分のフォークしたリポジトリに対して作ったものです。) https://github.com/ken1flan/rubocop-rspec/pull/1
@ken1flan 私の方ですと RuboCop RSpec はあまり見れていないので、PR を開いて RuboCop RSpec チームにレビューをしてもらうのが良さそうです。
^if
,^unless
,^for
,^before
,^after
, or^during
は ^
より \A
の方が適しているかもしれません。
\Aif
,\Aunless
,\Afor
,\Abefore
,\Aafter
, or\Aduring
https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ContextWording
現状Prefixesしか設定できず、 日本語でrspecを書く場合
のように
とき
や場合
などのSuffixes
の設定ができるようにしたいと思いました。実装してPRを出そうとしたのですが、
RSpec::ContextWording
の条件の部分はhttps://github.com/rubocop-hq/rubocop-rspec/blob/0442757fb4af570994b37b3e0ca35baeec635eb0/lib/rubocop/cop/rspec/context_wording.rb#L45
desctiprion
が画面に表示されていない場合
のような日本語はsplit
できません。Patterns:
のようなオプションで正規表現で実装するのがよいのでしょうかcontext
を書くのを辞めるのがよいのでしょうか よろしくおねがいします