Inner world of Perl::Lint

Preview:

Citation preview

Inner World of Perl::Lint

@moznion

@moznion

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

前処理

字句解析

解析

コード (文字列)

結果

前処理

字句解析

解析

コード (文字列)

結果

正規表現

Compiler::Lexer

Perl::Lint::Policy

前処理

字句解析

解析

コード (文字列)

結果

正規表現

Compiler::Lexer

Perl::Lint::Policy

## no lint

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

正規表現で引っ掛けて,

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

を持ってくる

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

一致したらignore!!

Compiler::Lexerでもコメントは

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

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

漢の正規表現で前処理

前処理

字句解析

解析

コード (文字列)

結果

正規表現

Compiler::Lexer

Perl::Lint::Policy

Compiler::Lexerで

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

XS製

高速!

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

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

Perl-5.22………………

前処理

字句解析

解析

コード (文字列)

結果

正規表現

Compiler::Lexer

Perl::Lint::Policy

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

解析を行っていく

各Policyがここらへんの

責務を負う

雰囲気

雰囲気

雰囲気…….

各Policyは独立してるので

書きやすい

ほんとうに。

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

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

なので簡単

ほんとうに。

とは言え最初にParser

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

Policyを自分で書いて

自由に足すこともできる

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

なってなくて難しいので

あとで書きます

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

必要がある (/kore!/)

拙作のRegexp::Lexerで

ゴリゴリやって見ている

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

現状のステータス

ほぼ全てのPerl::Criticの

Policyが互換な感じで動く

現状のステータス

ドキュメントが無い……

書かねば

$800!!!!!

Recommended