Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2914

bashのコードメトリクス測定ツールをgolangで実装してみた

$
0
0

何の話?

シェルスクリプトって、速度重視でついつい適当に書いちゃいますよね。
プロダクション環境に納品するものであっても、動けばいいや感もあったり。
で、こんな現状を打開すべく、なんかいいツールなり何なりないかな?って思って探してみました。

codestyle

Googleのstyleguideがしっくりきました。
日本語訳していただいている、すばらしい記事もあります。(ちょっと古いかも)

shellcheck

上述のstyleguideでも記載されていますが、規模の大小問わず、shellcheckはしましょうと言っています。完全同意。
最初は指摘がうっとうしいな〜と思うのですが、慣れてくると問題ないかと。

comment

Googleのstyleguideにおけるコメントの記述を抜粋します。

先頭

#!/bin/bash## Perform hot backups of Oracle databases.

関数

######################################## Cleanup files from the backup directory.# Globals:#   BACKUP_DIR#   ORACLE_SID# Arguments:#   None#######################################function cleanup(){}

こんな感じですね。これはこれで良いと思うのですが、ワタシの職場では、
シェルは仕様書も出せ!とかよく言われます。(シェル読んだほうが早いんですが、納品とか色々あるので)
Googleのスタイルだと仕様書の自動生成とかが難しいので、
こんなスタイルにすれば、markdownに変換できるので、
納品前に一気にドキュメント化とかしちゃえばいいのかなと。shdoc

メトリクス

これがないんですよねぇ。そもそもbashにメトリクスもクソもないってことなのかな。
ワタシが使ったことがあるlizardにはbashってないんですよねぇ。
tokeiだとサイクロマティック複雑度測れないし。。。

ってことで作りました。golangで作ったので、linuxでもmacでもwindowsでも動きます。

usage

Usage: shccn path
これだけです。パスはディレクトリでもファイルでもかまいません。
ディレクトリの場合はディレクトリ以下のシェルすべて(再帰的に見るのではなく、直下のシェルのみ)をチェックします。

output

--------------------------------------------------------------------------------
Name                      Lines       Code   Comments     Blanks  Functions
--------------------------------------------------------------------------------
make.sh                       8          8          0          0          0
tshare.bash                  30         24          0          6          3
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Name                                           Code                  CCN
--------------------------------------------------------------------------------
BARE_CODE@make.sh                                 7                    1
BARE_CODE@tshare.bash                             6                    4
play@tshare.bash                                  2                    1
start@tshare.bash                                 3                    1
usage@tshare.bash                                 4                    1
--------------------------------------------------------------------------------

こんな感じです。このあたりはlizardだったりtokeiにインスパイアされてます。
また、小さいシェルだと関数とか作らずにバンバンコード書いていきますので、
そのようなコードはBARE_CODEという名前で統計を取っています。

ダウンロード

ここにおいています。


Viewing all articles
Browse latest Browse all 2914

Trending Articles