SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
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!!!!!

Mais conteúdo relacionado

Semelhante a Inner world of Perl::Lint

Goで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろうGoで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろう
Esehara Shigeo
 
Youtube embedded
Youtube embeddedYoutube embedded
Youtube embedded
Jun Chiba
 
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日
nukaemon
 
プログラミング勉強会 その0
プログラミング勉強会 その0プログラミング勉強会 その0
プログラミング勉強会 その0
Hirokazu Fukami
 

Semelhante a Inner world of Perl::Lint (20)

Excel出力のCSV取込みから学ぶ4つのCPANモジュール
Excel出力のCSV取込みから学ぶ4つのCPANモジュールExcel出力のCSV取込みから学ぶ4つのCPANモジュール
Excel出力のCSV取込みから学ぶ4つのCPANモジュール
 
Racc でおてがる構文解析
Racc でおてがる構文解析Racc でおてがる構文解析
Racc でおてがる構文解析
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク
 
Goで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろうGoで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろう
 
LLPML
LLPMLLLPML
LLPML
 
[第2版]Python機械学習プログラミング 第8章
[第2版]Python機械学習プログラミング 第8章[第2版]Python機械学習プログラミング 第8章
[第2版]Python機械学習プログラミング 第8章
 
やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
Youtube embedded
Youtube embeddedYoutube embedded
Youtube embedded
 
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日
 
Microsoft Learn で C# を学ぶとどんな感じ?
Microsoft Learn で C# を学ぶとどんな感じ?Microsoft Learn で C# を学ぶとどんな感じ?
Microsoft Learn で C# を学ぶとどんな感じ?
 
LLVM overview 20110122
LLVM overview 20110122LLVM overview 20110122
LLVM overview 20110122
 
本当はこわいエンコーディングの話
本当はこわいエンコーディングの話本当はこわいエンコーディングの話
本当はこわいエンコーディングの話
 
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
 
C# 3.0 以降
C# 3.0 以降C# 3.0 以降
C# 3.0 以降
 
Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門
 
プログラミング .NET Framework 第4版
プログラミング .NET Framework 第4版プログラミング .NET Framework 第4版
プログラミング .NET Framework 第4版
 
ニコニコを支える Erlang / Elixir
ニコニコを支える Erlang / Elixirニコニコを支える Erlang / Elixir
ニコニコを支える Erlang / Elixir
 
20130316 プログラミング言語Go
20130316 プログラミング言語Go20130316 プログラミング言語Go
20130316 プログラミング言語Go
 
プログラミング勉強会 その0
プログラミング勉強会 その0プログラミング勉強会 その0
プログラミング勉強会 その0
 

Mais de moznion

Hachioji.pm 38
Hachioji.pm 38Hachioji.pm 38
Hachioji.pm 38
moznion
 
Hachiojipm 36
Hachiojipm 36Hachiojipm 36
Hachiojipm 36
moznion
 
Net stalking with-lastfm
Net stalking with-lastfmNet stalking with-lastfm
Net stalking with-lastfm
moznion
 
Hachiojipm 28
Hachiojipm 28Hachiojipm 28
Hachiojipm 28
moznion
 

Mais de moznion (20)

Static analysis for perl
Static analysis for perlStatic analysis for perl
Static analysis for perl
 
Yet Another Perl Cooking
Yet Another Perl CookingYet Another Perl Cooking
Yet Another Perl Cooking
 
Jesque robust-worker-pool
Jesque robust-worker-poolJesque robust-worker-pool
Jesque robust-worker-pool
 
Hachioji persec
Hachioji persecHachioji persec
Hachioji persec
 
命名の話
命名の話命名の話
命名の話
 
Hachiojipm 44
Hachiojipm 44Hachiojipm 44
Hachiojipm 44
 
Perl::Lint - Yet Another Perl Source Code Linter
Perl::Lint - Yet Another Perl Source Code LinterPerl::Lint - Yet Another Perl Source Code Linter
Perl::Lint - Yet Another Perl Source Code Linter
 
Hachioji pm 41
Hachioji pm 41Hachioji pm 41
Hachioji pm 41
 
Hachioji.pm 40
Hachioji.pm 40Hachioji.pm 40
Hachioji.pm 40
 
Hachioji.pm #39
Hachioji.pm #39Hachioji.pm #39
Hachioji.pm #39
 
Talking About Japanese Area Code of Phone
Talking About Japanese Area Code of PhoneTalking About Japanese Area Code of Phone
Talking About Japanese Area Code of Phone
 
Hachioji.pm 38
Hachioji.pm 38Hachioji.pm 38
Hachioji.pm 38
 
Hokkaido.pm #11
Hokkaido.pm #11Hokkaido.pm #11
Hokkaido.pm #11
 
Hachiojipm 36
Hachiojipm 36Hachiojipm 36
Hachiojipm 36
 
Plack::Request with Encoding
Plack::Request with EncodingPlack::Request with Encoding
Plack::Request with Encoding
 
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使うYAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
 
Net stalking with-lastfm
Net stalking with-lastfmNet stalking with-lastfm
Net stalking with-lastfm
 
Perl beginners #08
Perl beginners #08Perl beginners #08
Perl beginners #08
 
Hachiojipm 28
Hachiojipm 28Hachiojipm 28
Hachiojipm 28
 
Hachiojipm 26
Hachiojipm 26Hachiojipm 26
Hachiojipm 26
 

Último

Último (12)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

Inner world of Perl::Lint