code up

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

異なるリビジョンのステップ数(LOC)を数える

とあるプロジェクトにおいてあるリビジョンからあるリビジョンまでの差分のステップ数を数える必要に迫られる。

調べてみてもGUIでは該当するツールが見つからなかったのでCLIのツールで代用。

利用したツールはCLOC (Count Lines of Code)というWindowsプログラム。SASSやAntなどにも対応している優れもの。

少し長いけど対応している拡張子は次の通り(v1.60のcloc --show-langで確認)。

ABAP                       (abap)
ActionScript               (as)
Ada                        (ada, adb, ads, pad)
ADSO/IDSM                  (adso)
AMPLE                      (ample, dofile, startup)
Ant                        (build.xml)
Apex Trigger               (trigger)
Arduino Sketch             (ino, pde)
ASP                        (asa, asp)
ASP.Net                    (asax, ascx, asmx, aspx, config, master, sitemap, webinfo)
Assembly                   (asm, S, s)
AutoHotkey                 (ahk)
awk                        (awk)
Bourne Again Shell         (bash)
Bourne Shell               (sh)
C                          (c, ec, pgc)
C Shell                    (csh, tcsh)
C#                         (cs)
C++                        (C, cc, cpp, cxx, pcc)
C/C++ Header               (H, h, hh, hpp)
CCS                        (ccs)
Clojure                    (clj)
ClojureScript              (cljs)
CMake                      (cmake, CMakeLists.txt)
COBOL                      (cbl, CBL, cob, COB)
CoffeeScript               (coffee)
ColdFusion                 (cfm)
ColdFusion CFScript        (cfc)
CSS                        (css)
Cython                     (pyx)
D                          (d)
DAL                        (da)
Dart                       (dart)
DOS Batch                  (bat, BAT)
DTD                        (dtd)
Erlang                     (erl, hrl)
Expect                     (exp)
Focus                      (focexec)
Fortran 77                 (F, f, f77, F77, pfo)
Fortran 90                 (F90, f90)
Fortran 95                 (F95, f95)
Go                         (go)
Groovy                     (gant, groovy)
Haskell                    (hs, lhs)
HTML                       (htm, html)
IDL                        (idl, pro)
InstallShield              (ism)
Java                       (java)
Javascript                 (js)
JavaServer Faces           (jsf, xhtml)
JCL                        (jcl)
JSP                        (jsp)
Kermit                     (ksc)
Korn Shell                 (ksh)
LESS                       (less)
lex                        (l)
Lisp                       (el, jl, lisp, lsp, sc, scm)
Lisp/OpenCL                (cl)
LiveLink OScript           (oscript)
Lua                        (lua)
m4                         (ac, m4)
make                       (am, gnumakefile, Gnumakefile, Makefile, makefile)
MATLAB                     (m)
Maven                      (pom, pom.xml)
Modula3                    (i3, ig, m3, mg)
MSBuild scripts            (csproj, wdproj)
MUMPS                      (mps, m)
MXML                       (mxml)
NAnt scripts               (build)
NASTRAN DMAP               (dmap)
Objective C                (m)
Objective C++              (mm)
OCaml                      (ml, mli, mll, mly)
Oracle Forms               (fmt)
Oracle Reports             (rex)
Pascal                     (dpr, p, pas, pp)
Patran Command Language    (pcl, ses)
Perl                       (perl, PL, pl, plh, plx, pm)
PHP                        (php, php3, php4, php5)
PHP/Pascal                 (inc)
Pig Latin                  (pig)
PowerShell                 (ps1)
Python                     (py)
QML                        (qml)
Razor                      (cshtml)
Rexx                       (rexx)
Ruby                       (rb)
Ruby HTML                  (rhtml)
Rust                       (rs)
SASS                       (sass, scss)
Scala                      (scala)
sed                        (sed)
SKILL                      (il)
SKILL++                    (ils)
Smarty                     (smarty, tpl)
Softbridge Basic           (sbl, SBL)
SQL                        (psql, SQL, sql)
SQL Data                   (data.sql)
SQL Stored Procedure       (spc.sql, spoc.sql, sproc.sql, udf.sql)
Tcl/Tk                     (itk, tcl, tk)
Teamcenter def             (def)
Teamcenter met             (met)
Teamcenter mth             (mth)
Vala                       (vala)
Vala Header                (vapi)
Verilog-SystemVerilog      (sv, svh, v)
VHDL                       (vhd, VHD, VHDL, vhdl)
vim script                 (vim)
Visual Basic               (bas, cls, ctl, dsr, frm, vb, VB, vba, VBA, vbs, VBS)
Visualforce Component      (component)
Visualforce Page           (page)
XAML                       (xaml)
XML                        (XML, xml)
XSD                        (xsd, XSD)
XSLT                       (xsl, XSL, xslt, XSLT)
yacc                       (y)
YAML                       (yaml, yml)

また事前準備として、SubversionやGitに対応しているわけではないので各リビジョンのツリーを丸ごとチェックアウト(クローン)しておく。

今回のプロジェクトでは対応する拡張子が足りないので少し追加した状態で実行。

cloc --force-lang="XML",dicon --force-lang="JSP",tag --force-lang="Bourne Shell",properties --force-lang="SQL",txt --diff --ignore-whitespace --csv --diff-timeout 60 --report-file=report.csv proj-4417 proj-4449

追加した拡張子は次の通り。

dicon
S2の設定ファイル
tag
JSPタグファイル
properties
Javaのpropertiesファイルでは、コメントアウトは#と!らしいのだが、!は使っていないのでコメントアウトの記法が同じshに
txt
残念ながらSQL文をtxtのファイルに書くという事を行っていたので、その他メモのテキストも含めて一緒に

結果はCSVファイルで出力(--csv)して後はExcelで編集。

関連記事
タグ:SVN Git cloc Windows diff LOC
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。