Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Inner world of Perl::Lint

1,818 views

Published on

shibuya.pm #7で喋ったやつです

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Inner world of Perl::Lint

  1. 1. Inner World of Perl::Lint @moznion
  2. 2. @moznion
  3. 3. Perl::Lint のなかみ (うごき)
  4. 4. 前処理 字句解析 解析 コード (文字列) 結果
  5. 5. 前処理 字句解析 解析 コード (文字列) 結果 正規表現 Compiler::Lexer Perl::Lint::Policy
  6. 6. 前処理 字句解析 解析 コード (文字列) 結果 正規表現 Compiler::Lexer Perl::Lint::Policy
  7. 7. ## no lint
  8. 8. ## no lint これを取ってくる処理
  9. 9. 正規表現で引っ掛けて, 「どのファイルの何行目か」 を持ってくる
  10. 10. で,結果 (行数とファイル名を 持っている)と突き合わせて, 一致したらignore!!
  11. 11. Compiler::Lexerでもコメントは 持ってこれる (verboseモード) けど4倍くらい遅くなる😢
  12. 12. 漢の正規表現で前処理
  13. 13. 前処理 字句解析 解析 コード (文字列) 結果 正規表現 Compiler::Lexer Perl::Lint::Policy
  14. 14. Compiler::Lexerで ソースコードをトークン列に
  15. 15. XS製 高速!
  16. 16. 最近のは結構安定している
  17. 17. コード読めるので力で直せる
  18. 18. Perl-5.22………………
  19. 19. 前処理 字句解析 解析 コード (文字列) 結果 正規表現 Compiler::Lexer Perl::Lint::Policy
  20. 20. Token列を順繰りに読んでいき 解析を行っていく
  21. 21. 各Policyがここらへんの 責務を負う
  22. 22. 雰囲気
  23. 23. 雰囲気
  24. 24. 雰囲気…….
  25. 25. 各Policyは独立してるので 書きやすい
  26. 26. ほんとうに。
  27. 27. 単純にトークンを食べて, それに従った処理を書くだけ なので簡単
  28. 28. ほんとうに。
  29. 29. とは言え最初にParser 書くべきだったという意見
  30. 30. Policyを自分で書いて 自由に足すこともできる
  31. 31. ここらへんドキュメントに なってなくて難しいので あとで書きます
  32. 32. 正規表現の中身も解析する 必要がある (/kore!/)
  33. 33. 拙作のRegexp::Lexerで ゴリゴリやって見ている (The best of what's new on CPAN 2014 というのに載った)
  34. 34. 現状のステータス
  35. 35. ほぼ全てのPerl::Criticの Policyが互換な感じで動く
  36. 36. 現状のステータス
  37. 37. ドキュメントが無い…… 書かねば
  38. 38. $800!!!!!

×