Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
RuboCopとXP
コーディング規約
XP祭り�2016
早稲⽥大学�⻄早稲⽥キャンパス
2016-09-24�(Sat)
伊藤�浩⼀�(@koic)
(株...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
わたし
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
わたし
(株)永和システムマネジメントで
働くシニアリーダー。Rubyとか
メタルなんかが好きです�lml�lml
https://github.com/ko...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
�
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
はじ
めに
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
XPの中⼼となる活動
XPはコーディングをソフトウ
ェアプロジェクトのキーアク
ティビティ、つまり「中⼼と
な る活 動」 と し て選ん で い
る。
[「...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
今⽇の話
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
今⽇の話
XPオリジナルプラクティスの
ひとつ『コーディング規約』
✓
もともと予定していた『スロー
テスト刑事�(デカ)�』は先週、
京都で使っちゃいました...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
Keywords
Coding�standard✓
RuboCop✓
XP�and�Community✓
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
Coding�standard
オリジナルXPのプラクティス
の1つでもある
✓
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
Coding�standard
読み⼿の負担を減らすリーダブ
ルなコードに近づける
✓
PRレビューなどのコードリー
ディング時につまらないところ
で引っ掛か...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
ツールによる自動化
RubyではRuboCopという
Gemが有名
github.com/bbatsov/rubocop✓
✓
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
RuboCopのチーム活用例
CI�で�RSpec�と�RuboCop�の
実⾏結果をビルド結果とする
✓
PR�に対して�RuboCop�でコメ
ントを付け...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
RuboCop
正直あまり好きではなかったが
次のひと⾔との出会いで考え⽅
が変わった
✓
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
@onk�says
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
Yep!
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
現場のRuboCop
デフォルトの設定では取り締ま
りが厳しすぎることからカスタ
マイズされて使われたりする
有名な�onk/onkcop✓
esminc/d...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
@onk�says
お互いに良いコーディング規
約があれば本家に提案しよう
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
原初のXPをふりかえる
XPは常識を原理とし、極限ま
で実践するからである。
[「エクストリームプログラミング�1st�序⽂」より
引用]
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
eXtreme例�(XPE1stより)
コードレビューがよいのであれ
ば、いつでもコードレビューを
⾏う
✓
テストが良いのであれば、全員
がいつでもテストを...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
ツマミをフルボリュームに
良いコーディング規約なのであれ
ば、upstreamにそのコーディン
グ規約を提案する。
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
upstream�への�PR
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
PRの概要
Cop/Performance族✓
コーディング規約の中でも割と
有益性が明確な分野だと思って
いる
✓
sort�{�...�}�から�sort...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
sortとsort̲byおさらい
安定なソートかそうでないか
ggr✓
警告を出すようにした⽅が良かった
かも�thx�#shibuyarb
✓
✓
パフォー...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
Enumerable#sort�ブロッ
クなし(参考)
�������������������
�������������������������������...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
Produces:
��������������������������������������
������������������������������...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
Enumerable#sort�ブロッ
クあり�(今回用)
�������������������
�����������������������������...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
Produces:
��������������������������������������
������������������������������...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
以上を背景
にcopで指
摘したい事
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
指摘を埋め込んだコード
�������������
�����������������������������
�����������������
�����...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
こう指摘したい
�����������������
�����������������
�
���������
�����������������������...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
プログラマーなので
既存のcopにないので新たなcop
を作ってみた。
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
新たなcop作り⽅概要
copで取り締まるASTを宣⾔し、
ASTの⾛査イベントについて、
Copサブクラスを作って書く
������������������...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
PRまでのざっくりした流れ
既存の類似コードを読む1.�
テストコード(RSpec)を書く2.�
whitequark/parserでAST
(抽象構⽂⽊)を...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
1.類似の
コードを
読む
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
類似のコードを読む
割りとコードがドキュメント✓
コードリーディングによる静的
解析とbinding.pryによる動的
解析の2軸が自分の基本
✓
今回はCo...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
2.テスト
コードを
書く
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
実装をよく分かっていないか
らこそレッドバーから始める
���������������������������������������������������...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
3.parser
でASTを
作る
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
RuboCopが使うParser
github.com/whitequark/parser
��������������������
gemspecを眺めて良...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
既存のASTを作って学習
目的に近いredundant̲sort̲by.rb
にあるASTを再現させてみる。
������������������������...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
参考:�S式より馴染む?
Generated�by�github.com/koic/ruby̲ast̲visualizer
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
今回作りたいASTを作る
�������������������������������������������������
������
���������...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
今回のcopのASTへの実装
������������������������������
��������
�������������������
����...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
参考:�S式より馴染む?
Generated�by�github.com/koic/ruby̲ast̲visualizer
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
RuboCopのNodeについて
lib/rubocop/ast̲node.rbなど
読んでた
✓
�����������������������������...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
4.ASTに対
するイベン
トを書く
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
on̲xxx�メソッド
メタプログラミングで実装され
ている
✓
lib/rubocop/ast̲node/
traversal.rbなど読んでた
✓
���...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
取り締まりについて書く
対象のASTに取り締まり対象が⾒
つかったらoffernseに追加する。
������������������
������������...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
5.�autocorrectを書く
RuboCopには自動修正する--
auto-correctというオプショ
ンがある
✓
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
指摘を埋め込んだコード
�������������
�����������������������������
�����������������
�����...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
rubocop�--auto-correct�
オプションを付けて実⾏する
��������������������������������
��������...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
autocorrectの差分結果
自動修正される。
����������
�����������������������������
������������...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
RuboCop::Node
node.children.last.children.last.
children.lastへの苦渋。
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
autocorrectの実装
method名をASTから引っ張ってく
るところに苦渋の後が⾒える。
���������������������
�������...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
6.travisを
元に全ビル
ドを実施
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
.travis重要
RuboCop自体がRuboCopで取り
締まられている。
�������
���������������������
���������...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
PR前に全ビルドを実施
project̲spec.rbよく出来てる
デフォルトの取り締まりとなる
config/enabled.ymlへの設定記述
がなくてエラ...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
問題点を指
摘してもら
ったうえで
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
めでたく即⽇マージされた
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
onkcop
作者より
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
XPE2nd�24章『コミュニテ
ィとXP』
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
XPの中⼼となる活動
XPはコーディングをソフトウ
ェアプロジェクトのキーアク
ティビティ、つまり「中⼼と
な る活 動」 と し て選ん で い
る。
[「...
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
Programmingを中⼼に
Aが良いならAをeXtremeに...✓
Bが良いならBをeXtremeに...✓
Cが良いならCをeXtremeに...✓
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
コーディング規約が良いなら
お互いに良いコーディング規
約があれば本家に提案しよう
RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9
�
Upcoming SlideShare
Loading in …5
×

RuboCopとXPコーディング規約

767 views

Published on

XP祭り 2016のライトニングトークス資料 (http://xpjug.com/xp2016)

Published in: Engineering
  • Be the first to comment

RuboCopとXPコーディング規約

  1. 1. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 RuboCopとXP コーディング規約 XP祭り�2016 早稲⽥大学�⻄早稲⽥キャンパス 2016-09-24�(Sat) 伊藤�浩⼀�(@koic) (株)永和システムマネジメント
  2. 2. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 わたし
  3. 3. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 わたし (株)永和システムマネジメントで 働くシニアリーダー。Rubyとか メタルなんかが好きです�lml�lml https://github.com/koic✓ https://twitter.com/koic✓ https://koic.hatenablog.com✓
  4. 4. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 �
  5. 5. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 はじ めに
  6. 6. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 XPの中⼼となる活動 XPはコーディングをソフトウ ェアプロジェクトのキーアク ティビティ、つまり「中⼼と な る活 動」 と し て選ん で い る。 [「エクストリームプログラミング�1st�序⽂」より 引用]
  7. 7. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 今⽇の話
  8. 8. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 今⽇の話 XPオリジナルプラクティスの ひとつ『コーディング規約』 ✓ もともと予定していた『スロー テスト刑事�(デカ)�』は先週、 京都で使っちゃいました http://www.slideshare.net/koic/ slow-test-cop ✓ ✓ デカシリーズ第2弾(RuboCop)✓
  9. 9. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 Keywords Coding�standard✓ RuboCop✓ XP�and�Community✓
  10. 10. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 Coding�standard オリジナルXPのプラクティス の1つでもある ✓
  11. 11. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 Coding�standard 読み⼿の負担を減らすリーダブ ルなコードに近づける ✓ PRレビューなどのコードリー ディング時につまらないところ で引っ掛かりたくない ✓ チームメンバーのコードを似た ようなコードに近づける要素 ✓
  12. 12. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 ツールによる自動化 RubyではRuboCopという Gemが有名 github.com/bbatsov/rubocop✓ ✓
  13. 13. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 RuboCopのチーム活用例 CI�で�RSpec�と�RuboCop�の 実⾏結果をビルド結果とする ✓ PR�に対して�RuboCop�でコメ ントを付ける ✓
  14. 14. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 RuboCop 正直あまり好きではなかったが 次のひと⾔との出会いで考え⽅ が変わった ✓
  15. 15. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 @onk�says
  16. 16. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 Yep!
  17. 17. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 現場のRuboCop デフォルトの設定では取り締ま りが厳しすぎることからカスタ マイズされて使われたりする 有名な�onk/onkcop✓ esminc/deka̲eiwakun✓ SonicGarden/sgcop✓ その他非公開cop含め多様✓ ✓
  18. 18. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 @onk�says お互いに良いコーディング規 約があれば本家に提案しよう
  19. 19. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 原初のXPをふりかえる XPは常識を原理とし、極限ま で実践するからである。 [「エクストリームプログラミング�1st�序⽂」より 引用]
  20. 20. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 eXtreme例�(XPE1stより) コードレビューがよいのであれ ば、いつでもコードレビューを ⾏う ✓ テストが良いのであれば、全員 がいつでもテストをして、顧客 もテストを⾏う ✓ 設計がよいのであれば、設計を 全員の⽇常の仕事の⼀部にする ✓
  21. 21. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 ツマミをフルボリュームに 良いコーディング規約なのであれ ば、upstreamにそのコーディン グ規約を提案する。
  22. 22. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 upstream�への�PR
  23. 23. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 PRの概要 Cop/Performance族✓ コーディング規約の中でも割と 有益性が明確な分野だと思って いる ✓ sort�{�...�}�から�sort̲by�{�...�}� にするよう取り締まる ✓
  24. 24. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 sortとsort̲byおさらい 安定なソートかそうでないか ggr✓ 警告を出すようにした⽅が良かった かも�thx�#shibuyarb ✓ ✓ パフォーマンスの違い 今回提案したい観点✓ ✓ Cop/Performanceへの提案の ためベンチマークを付けたい ✓
  25. 25. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 Enumerable#sort�ブロッ クなし(参考) ������������������� ������������������������������������ ����������������������� �������������������������������� ��������������������������������������������� ���
  26. 26. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 Produces: �������������������������������������� �������������������������������������������������������� �������������������������������������������������������� sort̲by�{�|a|�a�}�ブロックありのときは�sort�の⽅が速い。
  27. 27. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 Enumerable#sort�ブロッ クあり�(今回用) ������������������� ������������������������������������ ����������������������� ������������������������������������������������������������� ������������������������������������������� ���
  28. 28. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 Produces: �������������������������������������� �������������������������������������������������������� �������������������������������������������������������� sort�{�|a,�b|�a.to̲s�<=>�b.to̲s�}�ブロックありのときは�sort̲by (&:to̲s)�の⽅が速い。
  29. 29. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 以上を背景 にcopで指 摘したい事
  30. 30. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 指摘を埋め込んだコード ������������� ����������������������������� ����������������� ���������������������������������������
  31. 31. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 こう指摘したい ����������������� ����������������� � ��������� ��������������������������������������������������������������������������������� ��������������������������������������� ��������������������������������������� ������������������������������������
  32. 32. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 プログラマーなので 既存のcopにないので新たなcop を作ってみた。
  33. 33. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 新たなcop作り⽅概要 copで取り締まるASTを宣⾔し、 ASTの⾛査イベントについて、 Copサブクラスを作って書く ������������������������� ���������������� ���
  34. 34. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 PRまでのざっくりした流れ 既存の類似コードを読む1.� テストコード(RSpec)を書く2.� whitequark/parserでAST (抽象構⽂⽊)を作る 3.� ASTに対するイベントを書く4.� autocorrectを書く5.� .travisを元に全ビルドを実施6.�
  35. 35. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 1.類似の コードを 読む
  36. 36. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 類似のコードを読む 割りとコードがドキュメント✓ コードリーディングによる静的 解析とbinding.pryによる動的 解析の2軸が自分の基本 ✓ 今回はCop/Performance/ RedundantSortByが目的に近 い既存コード 目的に近いコードがあると楽✓ ✓
  37. 37. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 2.テスト コードを 書く
  38. 38. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 実装をよく分かっていないか らこそレッドバーから始める ���������������������������������������������������� ��������������������������������������� ��������������������������������������������������������� �� ���������������� ���������������������������������������������������������������������� ��������������������������������������������������� ����� 三角測量が⾜りずハードコーディングが残っていたのでテストを ⾜して直す指摘をPRコメントでもらって直したりした。
  39. 39. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 3.parser でASTを 作る
  40. 40. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 RuboCopが使うParser github.com/whitequark/parser �������������������� gemspecを眺めて良く知らない ライブラリは軽く使ってみる ✓
  41. 41. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 既存のASTを作って学習 目的に近いredundant̲sort̲by.rb にあるASTを再現させてみる。 ����������������������������������� ������ ��������������������� ������� ������������� ������������
  42. 42. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 参考:�S式より馴染む? Generated�by�github.com/koic/ruby̲ast̲visualizer
  43. 43. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 今回作りたいASTを作る ������������������������������������������������� ������ ������������������ ������� ������������ ������������� ������� ��������� �������������������������� ��������� �����������������������
  44. 44. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 今回のcopのASTへの実装 ������������������������������ �������� ������������������� ��������� ��������������� ���������������� ��������� ����������� ��������������������������� ����������� ������������������������ ���
  45. 45. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 参考:�S式より馴染む? Generated�by�github.com/koic/ruby̲ast̲visualizer
  46. 46. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 RuboCopのNodeについて lib/rubocop/ast̲node.rbなど 読んでた ✓ ��������������������������������������������������������������������������
  47. 47. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 4.ASTに対 するイベン トを書く
  48. 48. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 on̲xxx�メソッド メタプログラミングで実装され ている ✓ lib/rubocop/ast̲node/ traversal.rbなど読んでた ✓ ����������������������������������������� ���������������������������������������������������������������������������
  49. 49. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 取り締まりについて書く 対象のASTに取り締まり対象が⾒ つかったらoffernseに追加する。 ������������������ �������������������������������������������� ���������������������������������� ���������������������������� ��������������������������������������� ������������������������������������������� ����� ���
  50. 50. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 5.�autocorrectを書く RuboCopには自動修正する-- auto-correctというオプショ ンがある ✓
  51. 51. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 指摘を埋め込んだコード ������������� ����������������������������� ����������������� ���������������������������������������
  52. 52. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 rubocop�--auto-correct� オプションを付けて実⾏する �������������������������������� ����������������� � ��������� ��������������������������������������������������������������������������������������������� ��������������������������������������� ��������������������������������������� ���������������������������������������������������������
  53. 53. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 autocorrectの差分結果 自動修正される。 ���������� ����������������������������� ����������������� ����������������������������������������� �����������������������
  54. 54. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 RuboCop::Node node.children.last.children.last. children.lastへの苦渋。
  55. 55. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 autocorrectの実装 method名をASTから引っ張ってく るところに苦渋の後が⾒える。 ��������������������� ��������������� ����������� ����������� ����������������������������������������������������������� ��������������������������������������������������������������������� ����� ���
  56. 56. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 6.travisを 元に全ビル ドを実施
  57. 57. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 .travis重要 RuboCop自体がRuboCopで取り 締まられている。 ������� ��������������������� �����������������������
  58. 58. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 PR前に全ビルドを実施 project̲spec.rbよく出来てる デフォルトの取り締まりとなる config/enabled.ymlへの設定記述 がなくてエラー ✓ CHANGELOG.mdのリンクが不⾜ していてエラー ✓ ✓ Line�is�too�long.の取り締まり が厳しくてつらい ✓
  59. 59. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 問題点を指 摘してもら ったうえで
  60. 60. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 めでたく即⽇マージされた
  61. 61. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 onkcop 作者より
  62. 62. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 XPE2nd�24章『コミュニテ ィとXP』
  63. 63. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 XPの中⼼となる活動 XPはコーディングをソフトウ ェアプロジェクトのキーアク ティビティ、つまり「中⼼と な る活 動」 と し て選ん で い る。 [「エクストリームプログラミング�1st�序⽂」より 引用]
  64. 64. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 Programmingを中⼼に Aが良いならAをeXtremeに...✓ Bが良いならBをeXtremeに...✓ Cが良いならCをeXtremeに...✓
  65. 65. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 コーディング規約が良いなら お互いに良いコーディング規 約があれば本家に提案しよう
  66. 66. RuboCopとXPコーディング規約 Powered�by�Rabbit�2.1.9 �

×