

参考：[RuboCop | Style/FormatString -
Qiita](http://qiita.com/tbpgr/items/d11b28753dc893920db6)

参考リンクにある通り、RuboCopで`%`を使うのをやめて`format`を使うようにメッセージを出力する方法があります。  
同じように 配列の`hoge[1, 2]`を使うのをやめて`hoge.slice(1,2)`を使うようにさせることはできますか？

`values_at`と混合しやすいため、sliceを使えという警告を出すことによって`values_at`のつもりで使ってしまっていたのに気づくやすくなると考えています。


CC BY-SA 3.0
2017-03-28T22:52:18.883
33619
2017-03-30T05:38:34.123
9008
question
ruby
RuboCopで hoge[0, 1] の形式を警告させる方法


もしそういうCopがあれば、[リポジトリをsliceで検索](https://github.com/bbatsov/rubocop/search?utf8=%E2%9C%93&q=slice)すれば、指摘メッセージの一部として存在するだろう、という予測の元に調べてみたら、ありませんでした。

というわけで、今のところなさそうなので、Issueで提案するか自分でCopを書くか、でしょうか。


CC BY-SA 3.0
2017-03-29T01:06:55.883
33622
2017-03-29T01:06:55.883
17037
33619
answer


先に回答している方がおっしゃるとおり、そのようなCopは存在しません(ちなみに、CopというのはRuboCopにおけるルールの単位です)。

また、偽陽性の警告が非常に多くなると思われるため、そのようなCopを作成したとしても、RuboCop自身に含むことはないとおもいます。

例えば、以下のように String クラスにも `[]` メソッドは定義されています。  
<https://docs.ruby-lang.org/ja/latest/class/String.html#I_--5B--5D>

[code]

    x = "hoge"
    x[1, 2] # => "og"
    
[/code]

そのため、単純にコードを見ただけでは `hoge[1, 2]` は Array に対するメソッド呼び出しなのか String
に対するものなのかが区別できないため、偽陽性の原因となってしまいます。

そのため、RuboCop ではなく別のツールを使ってみてはいかがでしょうか？  
例えば querly というツールでは、このようなルールを手軽に自分で定義することが可能です。  
<https://github.com/soutaro/querly>

[code]

    # querly.yaml
    rules:
      - id: array.slice
        pattern: "[](_, _)"
        message: 'array[x, y] でなく、array.slice(x, y) を使用して下さい'
        before: 'array[x, y]'
        after:  'array.slice(x, y)'
    
[/code]

上記の内容を`querly.yaml`として保存した上で、`querly check .`とコマンドを実行することで期待した検査を実行することが可能です。

このツールは Rubygems で配布されているため、`gem install querly`としてインストールすることが可能です。


CC BY-SA 3.0
2017-03-30T05:38:34.123
33647
2017-03-30T05:38:34.123
21283
33619
answer