“Perl::Lint - Yet Another Static Analyzer for Perl5”というタイトルでTPF助成金に応募しました
I proposed a tpf grant. I’m waiting for your feedback! #perl #tpf http://t.co/PUJLf4VIOR
— セカイ系 (@moznion) 2014, 3月 16
The Perl FoundationのGrants Committeeのルールが変わったそうで,折角の良い機会なのでGrantにProposalを出してみました.
TPF Grants Committeeのルールの変更については次の記事を参照してください.
TPFによるPerl助成金の交付の変更等について : D-7 <altijd in beweging>
提出したProposalの詳細は以下です.
http://news.perlfoundation.org/2014/03/grant-proposal-perllint---yet.html
ざっくりとこのProposalの内容を説明すると……
目的
Perl::Criticは大変素晴らしいモジュールであり,Perlで書かれたコードの品質向上に一役買っている.しかしながら現状のPerl::Criticは処理が重く低速である為,気軽にCritic処理を回す *1 ことに対する心理的障壁は高い.
そこで本プロジェクトではPerl::Critic互換の新しく,なおかつ高速なモジュールであるPerl::Lintを作成する事を目的とする.
手法
Perl::Criticはソースコードの解析にPPIを利用している.PPIとはPure Perlで記述されたPerlの解析器 (Tokenizer & Parser) のことである.Perl::LintではC++で記述されておりPPIよりも高速なCompiler::Lexer並びにCompiler::Parserを解析器として使用することによって高速化の実現を図る *2 *3 *4.
本プロジェクトに類似した応用例としてPerl::MinimumVersion::Fastが存在する.当該モジュールはCompiler::Lexerを使用しており,PPIを使用しているPerl::MinimumVersionと比較して30倍程度の高速化を実現している *5 *6.したがって本プロジェクトでも同様の効果を期待できる.
……という感じになっています.
TPFのブログ記事の方で目下フィードバックを受け付けている最中ですので,ご意見ご感想などをお待ちしています.
よろしくお願いします.
なお,Proposalの作成にあたっては@lestrratさんに大変なご助力を頂きました.ありがとうございます. (具体的に言うと,僕の書いた破滅的な英語もとい英語とも呼べない代物を牧さんに適切な形に翻訳し直し……というかもはや書き直して頂いた上に,内容に関しても多くの助言を頂きました)