2012/02/18

hg bugspots をアップデートしました

先日書いたきり放置していたGoogleのバグ予測アルゴリズムのMercurial拡張について、 GitHubにあるオリジナルのソースを調べてみると、内容が違いすぎたので作り直しました。

まず、一番大きな違いはオリジナルではdescriptionにfixなどが含まれているコミットのみをスコア計算対象とする点です。 このために、不具合の修正時に関係ないファイルをコミットしていると、そのファイルのスコアが上がってしまうので注意してください。 また、不具合修正がスコア計算対象となるようにコミットメッセージを揃えておく必要があります。

その他の違いはデフォルトでは全コミットからではなく、最新500コミットのみから調べる点と、スコア計算時の期間が異なる点です。 期間については現在時からスコア計算対象となったコミットで一番古いものが期間となります。

現在時を利用してしまうと、コミットせずに時間が経つだけでスコアが下がっていくのが、個人的にはちょっと気になりますが…。

ついでにコマンド名やオプションも違っていたのでだいたい揃えました。

-b --branch VALUE        branch to crawl (default: default)
-d --depth VALUE         depth of log crawl (default: 500)
-r --regex VALUE         bugfix indicator regex, ie: "fix(es|ed)?" or "/fixes #(\d+)/i"
                         (default: fix(es|ed)?|close(s|d)?)
-w --words VALUE         bugfix indicator word list, ie: "fixes,closed"
   --display-timestamps  show timestamps of each identified fix commit

なお、TortoiseHGのリポジトリに対して新しいhg bugspotを実行した結果は次のようになりました。デフォルトではfixとかcloseとかが含まれるチェンジセットをbugfixコミットだと判断します。

> hg bugspots
Found 18 bugfix commits, with 19 hotspots:
Fixes:
    - #12513 reporegistry: add cmenu sort actions for groups (closes #1189)
    - #12492 dialogs: actually hide hint buttons (fix up operator precedence)
    - #12490 dialogs: do not show "help" buttons
    - #12479 commit: show selected options (closes #1491)
    - #12476 filedialogs, manifest: add "save at revision" to cmenu (closes #1500)
    - #12364 reporegistry: fix crash when deleting a group
    - #12343 repowidget: back-port a missing bug fix to default
    - #12338 util.atomictempfile: use close() instead of rename() (see hg 774da7121fc9)
    - #12306 hglib: fix and simplify openlocalurl
    - #12297 wctxactions: fixed crash when adding largefiles
    - #12286 sync: added support for pushing or pulling a specific branch (fixes #1012)
    - #12245 fix indentation error in hgqt/qtlib.py
    - #12235 wctxactions: fixed crash when adding files from commit dialog
    - #12229 shlib: fix wrong variable introduced in 4dfdb0026af9
    - #12167 filedata: fix crash when browsing a patch with a deleted file (fixes #1038)
    - #12148 wctxactions: reverse order of parameters (fixes #1020)
    - #12147 filelistmodel: fix crash when browsing a patch
    - #12124 fileview: fixed lexer None exception
Hotspots:
    0.2843 - tortoisehg/hgqt/repowidget.py
    0.2841 - tortoisehg/hgqt/hgignore.py
    0.2838 - tortoisehg/hgqt/thgimport.py
    0.1667 - tortoisehg/hgqt/reporegistry.py
    0.1656 - tortoisehg/hgqt/repotreemodel.py
    0.1656 - tortoisehg/hgqt/repotreeitem.py
    0.1118 - tortoisehg/hgqt/commit.py
    0.1057 - tortoisehg/hgqt/filedialogs.py
    0.1057 - tortoisehg/hgqt/manifestdialog.py
    0.0003 - tortoisehg/util/settings.py
    0.0003 - tortoisehg/util/wconfig.py
    0.0003 - tortoisehg/hgqt/chunks.py
    0.0000 - tortoisehg/hgqt/wctxactions.py
    0.0000 - tortoisehg/hgqt/qtlib.py
    0.0000 - tortoisehg/hgqt/sync.py
    0.0000 - tortoisehg/util/shlib.py
    0.0000 - tortoisehg/hgqt/filedata.py
    0.0000 - tortoisehg/hgqt/filelistmodel.py
    0.0000 - tortoisehg/hgqt/fileview.py

ちなみに、gitでもGritを使えばRubyで楽に書けるのを知りました。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。