SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
[Confidential] © 2013 Actcat, Inc. 1
PHPMD, PHP_CodeSnifferを
CIしてみた
β
[Confidential] © 2013 Actcat, Inc.
PHPMDってなに?
知ってる人ー?	
  
(´・ω・`)ノシ
2
[Confidential] © 2013 Actcat, Inc.
PHPMDとは
n PHP	
  Mess	
  Detector	
  
l PHP	
  ちらかった 検出器	
  
l JavaのPMDにスピンオフプロジェクト	
  
l http://phpmd.org/	
  
n 例えばこんなのを発見	
  
l =>	
  エラーに繋がりそうなコード、可読性
の低いコード、使っていないローカル変
数、巨大化したメソッド・クラス
3
[Confidential] © 2013 Actcat, Inc.
使い方
1.  Phar	
  or	
  ComposerでInstall	
  
l  Pearではメンテされていません	
  
2.  phpmd	
  [filename|directory]	
  [report	
  format]	
  
[ruleset	
  file]	
  で実行	
  
l  DirectoryにCakePHPのFrameworkなどで構築
されたアプリを指定すると実行に5分以上は
かかるかも	
  
3.  結果が出るよ
4
[Confidential] © 2013 Actcat, Inc.
実行例 / 結果例
ubuntu@6a727363ad6f:~$	
  phpmd	
  sideci_php_sandbox/app/
Controller/PagesController.php	
  text	
  cleancode,	
  codesize,	
  
controversial,	
  design,	
  naming,	
  unusedcode	
  
/home/ubuntu/sideci_php_sandbox/app/Controller/
PagesController.php:63 	
  Avoid	
  using	
  static	
  access	
  to	
  class	
  
'Inflector'	
  in	
  method	
  'display'.	
  
/home/ubuntu/sideci_php_sandbox/app/Controller/
PagesController.php:70 	
  Avoid	
  using	
  static	
  access	
  to	
  class	
  
'Configure'	
  in	
  method	
  'display'.	
  
PagesController.php:63 	
  Avoid	
  using	
  static	
  
access	
  to	
  class	
  'Inflector'	
  in	
  method	
  'display	
  
5
[Confidential] © 2013 Actcat, Inc.
コマンドラインだと見づらいよね…	
  
	
  
⇒ Editor連携しよう	
  
or	
  
⇒ SideCIで使ってみよう	
  
<=	
  今回はこっち
6
[Confidential] © 2013 Actcat, Inc.
PHPMD on SideCI
メソッドの複雑度が高い
7
[Confidential] © 2013 Actcat, Inc.
使われていないローカル変数、
短すぎて分かりづらい変数名
8
[Confidential] © 2013 Actcat, Inc.
PHP_CodeSnifferってなに?
知ってる人ー?	
  
(´・ω・`)ノシ
9
[Confidential] © 2013 Actcat, Inc.
PHP_CodeSnifferとは
n PHP_CodeSniffer	
  
l コーディング規約チェックツール	
  
l PHP,	
  CSS,	
  JavaScriptがコーディング規約を
順守しているかをチェック、違反を指摘
する	
  
l https://github.com/squizlabs/
PHP_CodeSniffer	
  
n 対応規約	
  
l PSR2,	
  CodeIgniter	
  Style	
  Guide,	
  and	
  more…	
  
10
[Confidential] © 2013 Actcat, Inc.
使い方
1.  Phar	
  or	
  Composer	
  or	
  PearでInstall	
  
2.  phpcs	
  [filename|directory]	
  で実行	
  
3.  結果が出るよ	
  
4.  phpcbf	
  で自動修正も出来るよ	
  
11
[Confidential] © 2013 Actcat, Inc.
実行例 / 結果例
ubuntu@f29257b092a4:~$	
  phpcs	
  sideci_php_sandbox/app/Controller/
PagesController.php	
  	
  
	
  
FILE:	
  ...ome/ubuntu/sideci_php_sandbox/app/Controller/
PagesController.php	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
FOUND	
  79	
  ERRORS	
  AND	
  3	
  WARNINGS	
  AFFECTING	
  41	
  LINES	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
	
  14	
  |	
  ERROR	
  	
  	
  |	
  [	
  ]	
  The	
  tag	
  in	
  position	
  1	
  should	
  be	
  the	
  @package	
  tag	
  
	
  14	
  |	
  ERROR	
  	
  	
  |	
  [	
  ]	
  @copyright	
  tag	
  must	
  contain	
  a	
  year	
  and	
  the	
  name	
  
	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  of	
  the	
  copyright	
  holder	
  
	
  14	
  |	
  ERROR	
  	
  	
  |	
  [x]	
  Tag	
  value	
  indented	
  incorrectly;	
  expected	
  1	
  spaces	
  
	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  but	
  found	
  5	
  
	
  14	
  |	
  WARNING	
  |	
  [	
  ]	
  Line	
  exceeds	
  85	
  characters;	
  contains	
  90	
  
	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  characters	
  
12
[Confidential] © 2013 Actcat, Inc.
コマンドラインだと見づらいよね…	
  
	
  
⇒ Editor連携しよう	
  
or	
  
⇒ SideCIで使ってみよう	
  
<=	
  今回はこっち
13
[Confidential] © 2013 Actcat, Inc.
インデントはタブじゃなくてスペース!
14
[Confidential] © 2013 Actcat, Inc.
メソッドには「@return」tagを含んだ
コメント書いてよね!
15
[Confidential] © 2013 Actcat, Inc.
PHPMD / PHP_CodeSniffer
n PHPMD	
  	
  
l とりあえず入れておけば、あとで1メソッ
ドが数百行になったりする確率は下がる	
  
なるべくネストを浅く、変数名を
readableに書くようになったりする	
  
n PHP_CodeSniffer	
  
l コーディング規約準拠にしたい場合に	
  
l 規約を意識したコーディングが出来る	
  
l phpcbfで一括修正してから運用しよう
16
[Confidential] © 2013 Actcat, Inc. 17
SIDECIの仕組み
[Confidential] © 2013 Actcat, Inc.
How does it works?
18
hook
PHP_CodeSniffer
[Confidential] © 2013 Actcat, Inc. 19
コードを共有のファイル置き場、	
  
GitHub に保存すると	
  
[Confidential] © 2013 Actcat, Inc. 20
ソース	
  
コード 解析
SideCIが自動でテストやコード解析を開始	
  
今回の変更により発生した問題点を検出	
  
[Confidential] © 2013 Actcat, Inc. 21
GitHub上 のPullRequestにSideCIがコメント	
  
プログラムとコラボした開発が出来る	
  
[Confidential] © 2013 Actcat, Inc. 22
SIDECI上で使えるアプリ
[Confidential] © 2013 Actcat, Inc.
PHP_CodeSniffer, PHPMD
コーディング規約 + スメル系
23
[Confidential] © 2013 Actcat, Inc.
JSHint, CoffeeLint
24
[Confidential] © 2013 Actcat, Inc. 25
GitHub連携、Public/Privateの権限設定、	
  
プロジェクト選択、アプリ選択で設定完了。	
  
所要時間はおおよそ30秒	
  
[Confidential] © 2013 Actcat, Inc. 26
SideCI管理画面上で解析結果を確認。	
  
新たに発生した問題や、継続中の問題を確認可能	
  
[Confidential] © 2013 Actcat, Inc. 27
SIDECIのご利用実績
[Confidential] © 2013 Actcat, Inc.
Our Customers
GitHub	
  +	
  Railsな開発体制のプロジェクトで	
  
ご利用頂いております	
  
	
  
n Weekly	
  Over	
  50	
  Projects	
  /	
  Companies	
  
n Weekly	
  Over	
  1000	
  Comments	
  
28
1名∼10名ほどのチームでご利用頂いています。	
  
テレビCMなどで話題のベンチャーでも。	
  
[Confidential] © 2013 Actcat, Inc.
1クリックで
ソフトウェア開発を
より早くより良い品質に
29
[Confidential] © 2013 Actcat, Inc. 30
https://www.sideci.com/	
  
[Confidential] © 2013 Actcat, Inc. 31
設定は30秒で終わるヨ!	
  
Just	
  nowでSign	
  Upして貰えると嬉しいです	
  
https://www.sideci.com/	
  

Mais conteúdo relacionado

Semelhante a PHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェック

コンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのかコンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのかgree_tech
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
Php development efficiency improvement
Php development efficiency improvementPhp development efficiency improvement
Php development efficiency improvement伸幸 茂木
 
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorb
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorbRuby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorb
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorbKoichiro Sumi
 
HTTP/2 draft 14 preview and IETF90 httpbis WG Report
HTTP/2 draft 14 preview and IETF90 httpbis WG ReportHTTP/2 draft 14 preview and IETF90 httpbis WG Report
HTTP/2 draft 14 preview and IETF90 httpbis WG ReportKaoru Maeda
 
Scala + Finagleの魅力
Scala + Finagleの魅力Scala + Finagleの魅力
Scala + Finagleの魅力Kota Mizushima
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例fumoto kazuhiro
 
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥Insight Technology, Inc.
 
徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティHiroshi Tokumaru
 
Responsableを使ったadr実装
Responsableを使ったadr実装Responsableを使ったadr実装
Responsableを使ったadr実装Kenjiro Kubota
 
about Thrift
about Thriftabout Thrift
about ThriftNaoya Ito
 
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話simotin13 Miyazaki
 
Fluentd Meetup #2 @外道父 Fluentdを優しく見守る監視事例
Fluentd Meetup #2 @外道父 Fluentdを優しく見守る監視事例Fluentd Meetup #2 @外道父 Fluentdを優しく見守る監視事例
Fluentd Meetup #2 @外道父 Fluentdを優しく見守る監視事例外道 父
 
IETF90 Web関連WG報告 #isocjp
IETF90 Web関連WG報告 #isocjpIETF90 Web関連WG報告 #isocjp
IETF90 Web関連WG報告 #isocjpKaoru Maeda
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platformToru Yamaguchi
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternAtsushi Kambara
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例Shigeru UCHIYAMA
 
Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Katsunori Kanda
 

Semelhante a PHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェック (20)

コンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのかコンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのか
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
Php development efficiency improvement
Php development efficiency improvementPhp development efficiency improvement
Php development efficiency improvement
 
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorb
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorbRuby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorb
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorb
 
HTTP/2 draft 14 preview and IETF90 httpbis WG Report
HTTP/2 draft 14 preview and IETF90 httpbis WG ReportHTTP/2 draft 14 preview and IETF90 httpbis WG Report
HTTP/2 draft 14 preview and IETF90 httpbis WG Report
 
Scala + Finagleの魅力
Scala + Finagleの魅力Scala + Finagleの魅力
Scala + Finagleの魅力
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
 
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
 
徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ
 
Responsableを使ったadr実装
Responsableを使ったadr実装Responsableを使ったadr実装
Responsableを使ったadr実装
 
about Thrift
about Thriftabout Thrift
about Thrift
 
Thrift
ThriftThrift
Thrift
 
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
 
Fluentd Meetup #2 @外道父 Fluentdを優しく見守る監視事例
Fluentd Meetup #2 @外道父 Fluentdを優しく見守る監視事例Fluentd Meetup #2 @外道父 Fluentdを優しく見守る監視事例
Fluentd Meetup #2 @外道父 Fluentdを優しく見守る監視事例
 
IETF90 Web関連WG報告 #isocjp
IETF90 Web関連WG報告 #isocjpIETF90 Web関連WG報告 #isocjp
IETF90 Web関連WG報告 #isocjp
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
 
Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話
 

Mais de Koichiro Sumi

Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会
Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会
Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会Koichiro Sumi
 
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...Koichiro Sumi
 
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41thrablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41thKoichiro Sumi
 
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurbKoichiro Sumi
 
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devloveプロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devloveKoichiro Sumi
 
ベトナムのホーチミン・ハノイ・ ダナンを1週間見て回った話
ベトナムのホーチミン・ハノイ・ダナンを1週間見て回った話ベトナムのホーチミン・ハノイ・ダナンを1週間見て回った話
ベトナムのホーチミン・ハノイ・ ダナンを1週間見て回った話Koichiro Sumi
 
IVS CTO Night 2015 Winter LT資料 / SideCI
IVS CTO Night 2015 Winter LT資料 / SideCIIVS CTO Night 2015 Winter LT資料 / SideCI
IVS CTO Night 2015 Winter LT資料 / SideCIKoichiro Sumi
 
毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話
毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話
毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話Koichiro Sumi
 
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurbSidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurbKoichiro Sumi
 
ActiveResourceモデルによるAPIの隠蔽の怖い話 ~レスポンスタイムへの致命的影響~ at #shinjukurb
ActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurbActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurb
ActiveResourceモデルによるAPIの隠蔽の怖い話 ~レスポンスタイムへの致命的影響~ at #shinjukurbKoichiro Sumi
 
開発メンバーを増やすときの 秩序だったプラクティス with SideCI
開発メンバーを増やすときの秩序だったプラクティス with SideCI開発メンバーを増やすときの秩序だったプラクティス with SideCI
開発メンバーを増やすときの 秩序だったプラクティス with SideCIKoichiro Sumi
 
CIツールのまとめとSide CI - CIツール勉強会@福岡
CIツールのまとめとSide CI - CIツール勉強会@福岡CIツールのまとめとSide CI - CIツール勉強会@福岡
CIツールのまとめとSide CI - CIツール勉強会@福岡Koichiro Sumi
 
API通信周りの継続的なテストの仕組み~SideCIでの実践~
API通信周りの継続的なテストの仕組み~SideCIでの実践~API通信周りの継続的なテストの仕組み~SideCIでの実践~
API通信周りの継続的なテストの仕組み~SideCIでの実践~Koichiro Sumi
 
Git plus something / Git+何かで更にGitを使いこなす
Git plus something / Git+何かで更にGitを使いこなすGit plus something / Git+何かで更にGitを使いこなす
Git plus something / Git+何かで更にGitを使いこなすKoichiro Sumi
 
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9Koichiro Sumi
 
スタートアップの開発体制、流れ POPULAR PATTERN
スタートアップの開発体制、流れ POPULAR PATTERNスタートアップの開発体制、流れ POPULAR PATTERN
スタートアップの開発体制、流れ POPULAR PATTERNKoichiro Sumi
 
どうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIどうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIKoichiro Sumi
 
CIを取り入れ始めて超楽になったこと
CIを取り入れ始めて超楽になったことCIを取り入れ始めて超楽になったこと
CIを取り入れ始めて超楽になったことKoichiro Sumi
 
スタートアップの開発体制、流れのBASIC PATTERN
スタートアップの開発体制、流れのBASIC PATTERNスタートアップの開発体制、流れのBASIC PATTERN
スタートアップの開発体制、流れのBASIC PATTERNKoichiro Sumi
 

Mais de Koichiro Sumi (20)

Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会
Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会
Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会
 
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...
 
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41thrablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
 
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
 
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devloveプロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
 
ベトナムのホーチミン・ハノイ・ ダナンを1週間見て回った話
ベトナムのホーチミン・ハノイ・ダナンを1週間見て回った話ベトナムのホーチミン・ハノイ・ダナンを1週間見て回った話
ベトナムのホーチミン・ハノイ・ ダナンを1週間見て回った話
 
IVS CTO Night 2015 Winter LT資料 / SideCI
IVS CTO Night 2015 Winter LT資料 / SideCIIVS CTO Night 2015 Winter LT資料 / SideCI
IVS CTO Night 2015 Winter LT資料 / SideCI
 
毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話
毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話
毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話
 
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurbSidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
 
ActiveResourceモデルによるAPIの隠蔽の怖い話 ~レスポンスタイムへの致命的影響~ at #shinjukurb
ActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurbActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurb
ActiveResourceモデルによるAPIの隠蔽の怖い話 ~レスポンスタイムへの致命的影響~ at #shinjukurb
 
開発メンバーを増やすときの 秩序だったプラクティス with SideCI
開発メンバーを増やすときの秩序だったプラクティス with SideCI開発メンバーを増やすときの秩序だったプラクティス with SideCI
開発メンバーを増やすときの 秩序だったプラクティス with SideCI
 
CIツールのまとめとSide CI - CIツール勉強会@福岡
CIツールのまとめとSide CI - CIツール勉強会@福岡CIツールのまとめとSide CI - CIツール勉強会@福岡
CIツールのまとめとSide CI - CIツール勉強会@福岡
 
API通信周りの継続的なテストの仕組み~SideCIでの実践~
API通信周りの継続的なテストの仕組み~SideCIでの実践~API通信周りの継続的なテストの仕組み~SideCIでの実践~
API通信周りの継続的なテストの仕組み~SideCIでの実践~
 
Git plus something / Git+何かで更にGitを使いこなす
Git plus something / Git+何かで更にGitを使いこなすGit plus something / Git+何かで更にGitを使いこなす
Git plus something / Git+何かで更にGitを使いこなす
 
About SideCI
About SideCIAbout SideCI
About SideCI
 
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9
 
スタートアップの開発体制、流れ POPULAR PATTERN
スタートアップの開発体制、流れ POPULAR PATTERNスタートアップの開発体制、流れ POPULAR PATTERN
スタートアップの開発体制、流れ POPULAR PATTERN
 
どうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIどうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCI
 
CIを取り入れ始めて超楽になったこと
CIを取り入れ始めて超楽になったことCIを取り入れ始めて超楽になったこと
CIを取り入れ始めて超楽になったこと
 
スタートアップの開発体制、流れのBASIC PATTERN
スタートアップの開発体制、流れのBASIC PATTERNスタートアップの開発体制、流れのBASIC PATTERN
スタートアップの開発体制、流れのBASIC PATTERN
 

PHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェック

  • 1. [Confidential] © 2013 Actcat, Inc. 1 PHPMD, PHP_CodeSnifferを CIしてみた β
  • 2. [Confidential] © 2013 Actcat, Inc. PHPMDってなに? 知ってる人ー?   (´・ω・`)ノシ 2
  • 3. [Confidential] © 2013 Actcat, Inc. PHPMDとは n PHP  Mess  Detector   l PHP  ちらかった 検出器   l JavaのPMDにスピンオフプロジェクト   l http://phpmd.org/   n 例えばこんなのを発見   l =>  エラーに繋がりそうなコード、可読性 の低いコード、使っていないローカル変 数、巨大化したメソッド・クラス 3
  • 4. [Confidential] © 2013 Actcat, Inc. 使い方 1.  Phar  or  ComposerでInstall   l  Pearではメンテされていません   2.  phpmd  [filename|directory]  [report  format]   [ruleset  file]  で実行   l  DirectoryにCakePHPのFrameworkなどで構築 されたアプリを指定すると実行に5分以上は かかるかも   3.  結果が出るよ 4
  • 5. [Confidential] © 2013 Actcat, Inc. 実行例 / 結果例 ubuntu@6a727363ad6f:~$  phpmd  sideci_php_sandbox/app/ Controller/PagesController.php  text  cleancode,  codesize,   controversial,  design,  naming,  unusedcode   /home/ubuntu/sideci_php_sandbox/app/Controller/ PagesController.php:63  Avoid  using  static  access  to  class   'Inflector'  in  method  'display'.   /home/ubuntu/sideci_php_sandbox/app/Controller/ PagesController.php:70  Avoid  using  static  access  to  class   'Configure'  in  method  'display'.   PagesController.php:63  Avoid  using  static   access  to  class  'Inflector'  in  method  'display   5
  • 6. [Confidential] © 2013 Actcat, Inc. コマンドラインだと見づらいよね…     ⇒ Editor連携しよう   or   ⇒ SideCIで使ってみよう   <=  今回はこっち 6
  • 7. [Confidential] © 2013 Actcat, Inc. PHPMD on SideCI メソッドの複雑度が高い 7
  • 8. [Confidential] © 2013 Actcat, Inc. 使われていないローカル変数、 短すぎて分かりづらい変数名 8
  • 9. [Confidential] © 2013 Actcat, Inc. PHP_CodeSnifferってなに? 知ってる人ー?   (´・ω・`)ノシ 9
  • 10. [Confidential] © 2013 Actcat, Inc. PHP_CodeSnifferとは n PHP_CodeSniffer   l コーディング規約チェックツール   l PHP,  CSS,  JavaScriptがコーディング規約を 順守しているかをチェック、違反を指摘 する   l https://github.com/squizlabs/ PHP_CodeSniffer   n 対応規約   l PSR2,  CodeIgniter  Style  Guide,  and  more…   10
  • 11. [Confidential] © 2013 Actcat, Inc. 使い方 1.  Phar  or  Composer  or  PearでInstall   2.  phpcs  [filename|directory]  で実行   3.  結果が出るよ   4.  phpcbf  で自動修正も出来るよ   11
  • 12. [Confidential] © 2013 Actcat, Inc. 実行例 / 結果例 ubuntu@f29257b092a4:~$  phpcs  sideci_php_sandbox/app/Controller/ PagesController.php       FILE:  ...ome/ubuntu/sideci_php_sandbox/app/Controller/ PagesController.php   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   FOUND  79  ERRORS  AND  3  WARNINGS  AFFECTING  41  LINES   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐    14  |  ERROR      |  [  ]  The  tag  in  position  1  should  be  the  @package  tag    14  |  ERROR      |  [  ]  @copyright  tag  must  contain  a  year  and  the  name          |                  |          of  the  copyright  holder    14  |  ERROR      |  [x]  Tag  value  indented  incorrectly;  expected  1  spaces          |                  |          but  found  5    14  |  WARNING  |  [  ]  Line  exceeds  85  characters;  contains  90          |                  |          characters   12
  • 13. [Confidential] © 2013 Actcat, Inc. コマンドラインだと見づらいよね…     ⇒ Editor連携しよう   or   ⇒ SideCIで使ってみよう   <=  今回はこっち 13
  • 14. [Confidential] © 2013 Actcat, Inc. インデントはタブじゃなくてスペース! 14
  • 15. [Confidential] © 2013 Actcat, Inc. メソッドには「@return」tagを含んだ コメント書いてよね! 15
  • 16. [Confidential] © 2013 Actcat, Inc. PHPMD / PHP_CodeSniffer n PHPMD     l とりあえず入れておけば、あとで1メソッ ドが数百行になったりする確率は下がる   なるべくネストを浅く、変数名を readableに書くようになったりする   n PHP_CodeSniffer   l コーディング規約準拠にしたい場合に   l 規約を意識したコーディングが出来る   l phpcbfで一括修正してから運用しよう 16
  • 17. [Confidential] © 2013 Actcat, Inc. 17 SIDECIの仕組み
  • 18. [Confidential] © 2013 Actcat, Inc. How does it works? 18 hook PHP_CodeSniffer
  • 19. [Confidential] © 2013 Actcat, Inc. 19 コードを共有のファイル置き場、   GitHub に保存すると  
  • 20. [Confidential] © 2013 Actcat, Inc. 20 ソース   コード 解析 SideCIが自動でテストやコード解析を開始   今回の変更により発生した問題点を検出  
  • 21. [Confidential] © 2013 Actcat, Inc. 21 GitHub上 のPullRequestにSideCIがコメント   プログラムとコラボした開発が出来る  
  • 22. [Confidential] © 2013 Actcat, Inc. 22 SIDECI上で使えるアプリ
  • 23. [Confidential] © 2013 Actcat, Inc. PHP_CodeSniffer, PHPMD コーディング規約 + スメル系 23
  • 24. [Confidential] © 2013 Actcat, Inc. JSHint, CoffeeLint 24
  • 25. [Confidential] © 2013 Actcat, Inc. 25 GitHub連携、Public/Privateの権限設定、   プロジェクト選択、アプリ選択で設定完了。   所要時間はおおよそ30秒  
  • 26. [Confidential] © 2013 Actcat, Inc. 26 SideCI管理画面上で解析結果を確認。   新たに発生した問題や、継続中の問題を確認可能  
  • 27. [Confidential] © 2013 Actcat, Inc. 27 SIDECIのご利用実績
  • 28. [Confidential] © 2013 Actcat, Inc. Our Customers GitHub  +  Railsな開発体制のプロジェクトで   ご利用頂いております     n Weekly  Over  50  Projects  /  Companies   n Weekly  Over  1000  Comments   28 1名∼10名ほどのチームでご利用頂いています。   テレビCMなどで話題のベンチャーでも。  
  • 29. [Confidential] © 2013 Actcat, Inc. 1クリックで ソフトウェア開発を より早くより良い品質に 29
  • 30. [Confidential] © 2013 Actcat, Inc. 30 https://www.sideci.com/  
  • 31. [Confidential] © 2013 Actcat, Inc. 31 設定は30秒で終わるヨ!   Just  nowでSign  Upして貰えると嬉しいです   https://www.sideci.com/