31

JSの品質 #scripty02

  • Upload
    yahoo

  • View
    686

  • Download
    1

Embed Size (px)

Citation preview

Page 1: JSの品質 #scripty02
Page 2: JSの品質 #scripty02

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

軽く自己紹介

Page 3: JSの品質 #scripty02

JavaScriptの品質って

どう判断してる?

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 4: JSの品質 #scripty02

A:「俺のコードは神!」 B:「そうか?オレオレコードじゃん」 A:「バカ、これが最高なんだよー!」

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 5: JSの品質 #scripty02

とか、

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 6: JSの品質 #scripty02

部下:「今月はコードのリファクタ リング頑張りました!」 上司:「JSの事良く分からないけど、 何がどの位よくなったの?」 部下:「えーっと、あーっと、、、」

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 7: JSの品質 #scripty02

みたいな事ってありませんか?

あなたの頑張りが正当に 評価されないと感じた経験が ある人もいるかもしれません。

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 8: JSの品質 #scripty02

そこで、ツールを使って JSコードの品質を

数値化して評価しませんか?

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 9: JSの品質 #scripty02

どんなツール!?

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 10: JSの品質 #scripty02

Plato

色々なツールがあるけど、 今回紹介するのは

https://github.com/es-analysis/plato Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 11: JSの品質 #scripty02

JavaScriptコードのソフトウェアメトリクスを計測し、HTMLでレポートを生成してくれるnode.jsで動くツール

Plato

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 12: JSの品質 #scripty02

ソフトウェアメトリクスとは

ソースコードの品質をさまざまな視点から数値化して定量的に評価する測定法のこと。

* 成長オーダー(アルゴリズム解析、O記法など参照) * ソースコードの行数(LoC)

* 循環的複雑度(Cyclomatic Number)

* ファンクションポイント法

* ソースコードの行当たりのバグ数

* コード網羅率

* 顧客要求仕様の行数

* クラスおよびインタフェースの個数

* Robert Cecil Martin のソフトウェアパッケージ測定法

* 凝集度

* 結合度

(Wikipediaより引用) Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 13: JSの品質 #scripty02

Plato

• Maintainability -> メンテナンス性

• Lines of code -> ソースコードの行数(LoC)

• Estimated errors in implementation -> 見積もりエラー数

• Lint errors -> JSHintエラー数

Platoが出せるのは

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 14: JSの品質 #scripty02

Maintainability -メンテナンス性

計算式 Maintainability Index = MAX(0,(171 - 5.2 * ln(Halstead Volume) - 0.23 *

(Cyclomatic Complexity) - 16.2 * ln(Lines of Code))*100 / 171)

• サイクロマティック複雑度 制御フローの数から算出されるコードの構造上の複雑さ。(if文等の多さ)

• コード行 コードの行数

• Halstead Volume ソースコード中の演算子と非演算子の種類数、出現回数の総和から算出

上記を使って、0から100で表す係数。

(数値が高いほうがメンテナンスしやすい)

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 15: JSの品質 #scripty02

何個か試しに チェックしてみました

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 16: JSの品質 #scripty02

jQuery

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 17: JSの品質 #scripty02

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 18: JSの品質 #scripty02

Backbone.js

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 19: JSの品質 #scripty02

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 20: JSの品質 #scripty02

使ってみた感想

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 21: JSの品質 #scripty02

■判断できる ・見通しがいい ・わかりやすい ・書き方がきれい ■判断できない ・セキュリティへの配慮 ・効率の良いロジックか?

JsHintで!

Jasmine等で!

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 22: JSの品質 #scripty02

Platoの使い方

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 23: JSの品質 #scripty02

1. Node.js をインストール http://nodejs.org/

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 24: JSの品質 #scripty02

2. PlatoとJSHint をインストール

Windows なら、コマンドプロンプト Macならターミナルで以下を入力

$ npm install -g plato $ npm install -g jshint

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 25: JSの品質 #scripty02

3. Platoを実行

$ plato -r -d plato-report develop

対象ディレクトリで上記を実行すると、 「develop」ディレクトリの中身をチェックして 「plato-report」に結果のHTMLを出力

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 26: JSの品質 #scripty02

\(^▽^)/

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 27: JSの品質 #scripty02

黒い画面苦手。 コマンド打つの面倒。

そんな人は

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 28: JSの品質 #scripty02

@echo off rem rem Platoを実行し、reportディレクトリに出力する rem rem このバッチが存在するフォルダをカレントに pushd %0¥.. cls echo "完了したら自動でウィンドウが閉じます。数秒お待ちください。" plato -r -l .jshintrc -x vendor -d plato-report develop pause exit

test.bat

ダブルクリック するだけで実行

テキストエディタで、以下を「○○.bat」と保存し、 対象ディレクトリで実行すると、全自動で結果を出力

(windowsに限る) Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 29: JSの品質 #scripty02

デモ

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 30: JSの品質 #scripty02

または、gruntやgulp等の タスクランナーに組み込んでみて

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 31: JSの品質 #scripty02

ご清聴ありがとうございました!