読者です 読者をやめる 読者になる 読者になる

Devel::Coverから出力した HTMLで C0なカバレッジのコードを Emacsで表示

emacs coverage

Devel::Cover::Report::VimででC0なカバレッジのコードを vim で表示 - dann's blog - #


本当であれば, Devel::Cover::Report::Emacs的なものを使ってすべき
なんでしょうけど, HTMLを解析して表示させるようなものを作ってみました.
Devel::Cover::Report::Compilationというものがあり, compilation-modeで
使えるものがあるみたいなのですが, よくわかりませんでした.


あと作りかけ(?)リポジトリもあったんですが,
何もなかったので新規に作っていいかなと思いました

Requirements

  • Emacs24 configured with libxml2


依存パッケージは特にありませんが, Emacs24が必要です. さらに libxml2の利用が有効に
なっている必要があります. "C-h f libxml-"として何も補完されない環境では
利用できません.

MacOSXの場合

libxml2は configureの際デフォルトで有効にしようとするので, Emacsより前に
libxml2がインストールされており, そのライブラリが configure時に見つけられれば
自動で有効になっているはずです. たぶん以下のようにすれば利用可能になるかと
思われます

 % brew remove emacs # 事前にインストールしている場合
 % brew install libxml2
 % brew link --force libxml2 # 手元の環境では --forceが必須だった
 % brew install emacs 各種オプション

使い方

以下のようにして, プロジェクトトップにカバレッジの取得を行います.

  % perl Build.PL
  % ./Build
  % ./Build testcover


次に適当なファイルを開き, M-x devel-cover-highlight-c0-linesを実行します.
親ディレクトリをたどっていき, cover_dbディレクトリを見つけるとその中から現在の
ファイルに合致する HTML見つけて, パースし, 現在のバッファの C0である行を
ハイライトします.

イメージ

一度も実行されていない行に下線がひかれます. faceを返ることで, 背景色を変えたり等
変更することは可能です.

おわりに

以外にテストしてないコードがあるんだなと思いました.
反省します.