Inner world of Perl::Lint

42
Inner World of Perl::Lint @moznion

Transcript of Inner world of Perl::Lint

Page 1: Inner world of Perl::Lint

Inner World of Perl::Lint

@moznion

Page 2: Inner world of Perl::Lint

@moznion

Page 3: Inner world of Perl::Lint
Page 4: Inner world of Perl::Lint

Perl::Lint のなかみ (うごき)

Page 5: Inner world of Perl::Lint

前処理

字句解析

解析

コード (文字列)

結果

Page 6: Inner world of Perl::Lint

前処理

字句解析

解析

コード (文字列)

結果

正規表現

Compiler::Lexer

Perl::Lint::Policy

Page 7: Inner world of Perl::Lint

前処理

字句解析

解析

コード (文字列)

結果

正規表現

Compiler::Lexer

Perl::Lint::Policy

Page 8: Inner world of Perl::Lint

## no lint

Page 9: Inner world of Perl::Lint

## no lintこれを取ってくる処理

Page 10: Inner world of Perl::Lint

正規表現で引っ掛けて,

「どのファイルの何行目か」

を持ってくる

Page 11: Inner world of Perl::Lint

で,結果 (行数とファイル名を持っている)と突き合わせて,

一致したらignore!!

Page 12: Inner world of Perl::Lint

Compiler::Lexerでもコメントは

持ってこれる (verboseモード)

けど4倍くらい遅くなる😢

Page 13: Inner world of Perl::Lint

漢の正規表現で前処理

Page 14: Inner world of Perl::Lint

前処理

字句解析

解析

コード (文字列)

結果

正規表現

Compiler::Lexer

Perl::Lint::Policy

Page 15: Inner world of Perl::Lint

Compiler::Lexerで

ソースコードをトークン列に

Page 16: Inner world of Perl::Lint
Page 17: Inner world of Perl::Lint
Page 18: Inner world of Perl::Lint

XS製

高速!

Page 19: Inner world of Perl::Lint

最近のは結構安定している

Page 20: Inner world of Perl::Lint

コード読めるので力で直せる

Page 21: Inner world of Perl::Lint

Perl-5.22………………

Page 22: Inner world of Perl::Lint

前処理

字句解析

解析

コード (文字列)

結果

正規表現

Compiler::Lexer

Perl::Lint::Policy

Page 23: Inner world of Perl::Lint

Token列を順繰りに読んでいき

解析を行っていく

Page 24: Inner world of Perl::Lint

各Policyがここらへんの

責務を負う

Page 25: Inner world of Perl::Lint

雰囲気

Page 26: Inner world of Perl::Lint

雰囲気

Page 27: Inner world of Perl::Lint

雰囲気…….

Page 28: Inner world of Perl::Lint

各Policyは独立してるので

書きやすい

Page 29: Inner world of Perl::Lint

ほんとうに。

Page 30: Inner world of Perl::Lint

単純にトークンを食べて,

それに従った処理を書くだけ

なので簡単

Page 31: Inner world of Perl::Lint

ほんとうに。

Page 32: Inner world of Perl::Lint

とは言え最初にParser

書くべきだったという意見

Page 33: Inner world of Perl::Lint

Policyを自分で書いて

自由に足すこともできる

Page 34: Inner world of Perl::Lint

ここらへんドキュメントに

なってなくて難しいので

あとで書きます

Page 35: Inner world of Perl::Lint

正規表現の中身も解析する

必要がある (/kore!/)

Page 36: Inner world of Perl::Lint

拙作のRegexp::Lexerで

ゴリゴリやって見ている

(The best of what's new on CPAN 2014 というのに載った)

Page 37: Inner world of Perl::Lint

現状のステータス

Page 38: Inner world of Perl::Lint

ほぼ全てのPerl::Criticの

Policyが互換な感じで動く

Page 39: Inner world of Perl::Lint

現状のステータス

Page 40: Inner world of Perl::Lint

ドキュメントが無い……

書かねば

Page 41: Inner world of Perl::Lint
Page 42: Inner world of Perl::Lint

$800!!!!!