SideCI Blog

自動コードレビューサービスSideCIを提供している株式会社アクトキャットのコーポレートブログです。



アビシニアンモードでLINTツールの誤検出と闘う

RuboCopなどのLINTツールは、コードに含まれる潜在的な問題を検出しますが、誤検出の問題が常につきまといます。例えば、こういうプログラムに問題があると言われると、かなり厳しい思いをします。

f:id:sideci:20170407160809p:plain

このRuboCopの警告は、Railsアプリケーションの配置されているディレクトリを返すRails.rootからパスを組み立てるときには、式展開などの文字列操作ではなくPathname#joinメソッドを使うことを推奨するものです。つまり、

path = "#{Rails.root}/tmp/icons/#{user.id}.png"

ではなく、

path = Rails.root.join('tmp', 'icons', "#{user.id}.png")

と書いた方が良いという警告です。

これはこれで悪くはないのですが、このスクリーンショットに示したプログラムに限って言えば、意味がない警告です。ここでは式展開はログメッセージを組み立てるために使われており、パスはPathname#joinによって構築されています。

こういう場合には、アビシニアンモードが活躍します。

f:id:sideci:20170407160841g:plain

右下の「クローズ」ボタンをクリックして、RuboCopの警告をなかったことにしましょう。これでおしまいです。

無視された警告の情報はSideCIの画面で確認できるようになっています。レビューのときには、SideCIの画面も確認して、無視してはいけない警告が無視されているような場合には、「リオープン」をクリックして元に戻してから開発者に修正を求めましょう。

SideCIで発見された全ての問題が修正されるか無視されると、Commit Statusがグリーンに変化します。

f:id:sideci:20170407160911p:plain

メッセージには無視された警告の数が表示されます。もしもあんまりたくさんの警告が無視されているようなら……ちょっと丁寧にレビューする必要がありそうですね😠

SideCIのアビシニアンモードは、LINTツールが検出した問題に対して、開発者がより柔軟な対応を取れるようにするものです。LINTツールの警告が意味のあるものであれば直しますし、誤検出であるとか直す価値がないと自信を持って判断できるものなら無視します。そこまで自信がない場合は、GitHubのコメントで他の開発者・レビューアと話し合います。SideCI開発チームは(開発中から)ずっと利用していますが、クラシックモードには戻れないくらい便利に使っています。ぜひご活用ください。

  • アビシニアンモードはリポジトリ設定画面から設定できます。もし不都合があった場合には、いつでもクラシックモードに戻すことができます。(そのときには、ついでに開発チームまでフィードバックをお送りください🙏)
  • アビシニアンモードでは、SideCIの一部機能、解析ツールが利用できません。現在対応を進めていますので、もうしばらくお待ちください。