LTSlides
LT Slides
Project maintained by yumechi
Hosted on GitHub Pages — Theme by mattgraham
Lint er をね、使っていく
2017/10/30
早くももう tech_meetup 3回目ですね
その気になれば、2週で1ネタ上げれますよ
GitPitchみんな使ってくれて嬉しい
紹介した意味があったのかなと思っています。
本題
Lint er をね、使っていく
Lintってなに?
- 静的解析用ツール
- 定義漏れや怪しい処理を発見できる
- 特定の文法を検出できる
- シングルクオーテーション必ず使うとか
- そのままコーディングルールにできる
Linterってなに?(番外編)
- Atom のパッケージ
- 私が話したいのはLintの話
- 今まで混同してました(よくないね)
対応言語は?
atom-lintっていうプラグインから
- Ruby
- JavaScript
- Python
- C, C++
- Shell
思ったよりも多彩
- 書き方の統一ができるのが大きい?
- コンパイルや実行しなくても検出できること=バグの早期発見
ESLint
- JavaScript用のLintツール
- npmで入れられて、VSCodeにもプラグインがあり、導入しやすい
eslint index.js
のように使える
- (多分gulpとかで一気にそのフォルダ配下のJavaScriptファイルを全部Lintかけるとかできると思う)
ルールの記述
- そもそもテンプレートを初期化時に作ってくれる
- カスタマイズしたいときは自分で書く必要がある
- 例)使用してない変数を検出しない
- 例)if文のあと1行の場合は波括弧なしを検出しない
プラグインの活用
- ライブラリの関数が未定義だとうるさい
- jQueryとか、GASのライブラリとか
- プラグインを導入することで解決できる
- 主要なものは大体カバーされているはず
- (なかったら作って公開しよう)
ここまで使っていく話
- 結構便利だと思う
- コンパイラ以下のチェックだけれども十分
- 人間ベースでなく、システムベースのコーディングルール
中身の話
RuboCop(RubyのLintツール)の話を少し聞いてきたので、その話を
参考資料:https://speakerdeck.com/pocke/writing-lint-for-ruby
ざっくり・・・
この辺ちゃんとやるとむずかしい
- 抽象構文木(AST)に変換
- ノード情報を読み出す
- 受け取ったノード情報に対して処理をかけてやる
- 問題があれば、ノード情報を利用してエラーメッセージを表示
今回はここまで
次回話すとしたら、gulpがいいなと思っています。