pockestrap

Programmer's memo

平成Ruby会議01 CfP

この記事はCfPアドベントカレンダー1日目の記事です。

adventar.org

heiseirb.github.io

このトークはacceptされました。12月14日に話します。

発表タイトル(※本情報は当選時にLPに掲載されます)

Regression Test for RuboCop

発表の概要(※本情報は審査にのみ利用します)

Rubyの静的解析器であるRuboCopのテストについて解説します。 RuboCopではもちろんユニットテストが書かれています。ですが自由を極めたRubyコードの前では時にユニットテストは無力です。事前に開発者が想定しないようなコードに出会うとRuboCopはエラーを吐いてしまうかもしれません(それは実際によくあることです)。そして、すべての起こりうるケースを想定してRuboCopのコードを書くのはかなりむずかしいものです。 そのようなエラーを防ぐために、私はRuboCopのRegression Testプロジェクトをはじめました。このプロジェクトでは、RuboCopを実際に様々な設定で様々なコードに対して実行することで、RuboCopのエラーを発見します。

このトークでは、このテストの仕組みについてと、それによって直されたエラーについてお話します。

テストのリポジトリ: https://github.com/pocke/rubocop-regression-test 以前同じテーマで話したときのスライド: https://speakerdeck.com/pocke/regression-testing-for-rubocop

この発表を聴いた人が何を持ち帰れるか(※本情報は審査にのみ利用します)

この発表では2つのことを持ち帰ってもらおうと思っています。

1つは今回紹介するRegression Testという仕組みについてです。 今回紹介するこのテストの仕組みは、あまり馴染みがないものだと思います。そのため、これを紹介することによって聴いた方がテストを実施するときの1つの選択肢を得てもらえれば幸いです。また選択肢とならないまでも、テストのアイディアを他のプロジェクトに応用することもできるかもしれません。

もう1つは、OSSへ貢献するきっかけです。 まだこのプロジェクトは実装途中です。そのためRegression Testがコケたとしても、それに気がつくのは私しかいませんし、それを直せるのも私しかいません。まだエラーの出力が分かりづらく、ドキュメント化もされていないためです。 ですが、登壇までにはこれを整備することによって、OSSへ貢献するきっかけを提供したいと思っています。つまりこのテストを使ってバグを見つけ、RuboCopに報告・修正するという体験を提供できると思っています。