cloc ( Count Lines Of Code ) 是一个 Perl
脚本,可以统计空白行,注释行, 并且支持很多语言。他有如下优势:
- 执行文件经过打包压缩,可以很轻易的被安装。
- 可以读取注释,并且可以识别计算机中没有安装的语言写的代码。
- 可以对多个文件的结果进行汇总。
- 可以输出结果为多种格式,包括:纯文本,SQL, JSON, XML, YAML 等。
- 可以统计压缩文件中的代码行数,例如 tar, zip, ear 文件。
- 有很多故障排除选项。
- 可以支持不常见字符。
- 纯
Perl
编写,不引用其他库。 - 跨平台。
下载与安装
使用 Homebrew
安装1:
1
$ brew install cloc
支持的语言
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
$ cloc —-show-lang
ABAP (abap)
ActionScript (as)
Ada (ada, adb, ads, pad)
ADSO/IDSM (adso)
Agda (agda, lagda)
AMPLE (ample, dofile, startup)
Ant (build.xml, build.xml)
ANTLR Grammar (g, g4)
Apex Class (cls)
Apex Trigger (trigger)
Arduino Sketch (ino, pde)
AsciiDoc (adoc, asciidoc)
ASP (asa, asp)
ASP.NET (asax, ascx, asmx, aspx, master, sitemap, webinfo)
AspectJ (aj)
Assembly (asm, s, S)
AutoHotkey (ahk)
awk (awk)
Blade (blade.php)
Bourne Again Shell (bash)
Bourne Shell (sh)
BrightScript (brs)
builder (xml.builder)
C (c, ec, pgc)
C Shell (csh, tcsh)
C# (cs)
C++ (C, c++, cc, CPP, cpp, cxx, inl, pcc)
C/C++ Header (H, h, hh, hpp, hxx)
CCS (ccs)
Chapel (chpl)
Clean (dcl, icl)
Clojure (clj)
ClojureC (cljc)
ClojureScript (cljs)
CMake (cmake, CMakeLists.txt)
COBOL (CBL, cbl, COB, cob)
CoffeeScript (coffee)
ColdFusion (cfm)
ColdFusion CFScript (cfc)
Coq (v)
Crystal (cr)
CSON (cson)
CSS (css)
Cucumber (feature)
CUDA (cu, cuh)
Cython (pyx)
D (d)
DAL (da)
Dart (dart)
DIET (dt)
diff (diff)
DITA (dita)
DOORS Extension Language (dxl)
DOS Batch (BAT, bat, BTM, btm, CMD, cmd)
Drools (drl)
DTD (dtd)
dtrace (d)
ECPP (ecpp)
EEx (eex)
EJS (ejs)
Elixir (ex, exs)
Elm (elm)
Embedded Crystal (ecr)
ERB (ERB, erb)
Erlang (erl, hrl)
Expect (exp)
F# (fsi, fs, fs)
F# Script (fsx)
Fennel (fnl)
Fish Shell (fish)
Focus (focexec)
Forth (4th, e4, f83, fb, forth, fpm, fr, frt, ft, fth, rx, fs, f, for)
Fortran 77 (F, F77, f77, FOR, FTN, ftn, pfo, f, for)
Fortran 90 (f90, F90)
Fortran 95 (f95, F95)
Freemarker Template (ftl)
FXML (fxml)
GDScript (gd)
Gencat NLS (msg)
Glade (glade, ui)
GLSL (comp, frag, geom, glsl, tesc, tese, vert)
Go (go)
Gradle (gradle, gradle.kts)
Grails (gsp)
GraphQL (gql, graphql)
Groovy (gant, groovy)
Haml (haml)
Handlebars (handlebars, hbs)
Harbour (hb)
Haskell (hs, lhs)
Haxe (hx)
HCL (hcl, nomad, tf)
HLSL (cg, cginc, hlsl, shader)
Hoon (hoon)
HTML (htm, html)
IDL (idl, pro)
Idris (idr)
Igor Pro (ipf)
INI (ini)
InstallShield (ism)
Java (java)
JavaScript (es6, js)
JavaServer Faces (jsf)
JCL (jcl)
JSON (json)
JSON5 (json5)
JSP (jsp, jspf)
JSX (jsx)
Julia (jl)
Jupyter Notebook (ipynb)
Kermit (ksc)
Korn Shell (ksh)
Kotlin (kt, kts)
Lean (lean)
LESS (less)
lex (l)
LFE (lfe)
liquid (liquid)
Lisp (asd, el, lisp, lsp, cl, jl)
Literate Idris (lidr)
LiveLink OScript (oscript)
Logtalk (lgt, logtalk)
Lua (lua)
m4 (ac, m4)
make (am, Gnumakefile, gnumakefile, Makefile, makefile, mk)
Mako (mako)
Markdown (md)
Mathematica (mt, wl, wlt, m)
MATLAB (m)
Maven (pom, pom.xml)
Modula3 (i3, ig, m3, mg)
MSBuild script (csproj, vbproj, vcproj, wdproj, wixproj)
MUMPS (mps, m)
Mustache (mustache)
MXML (mxml)
NAnt script (build)
NASTRAN DMAP (dmap)
Nemerle (n)
Nim (nim)
Nix (nix)
Objective C (m)
Objective C++ (mm)
OCaml (ml, mli, mll, mly)
OpenCL (cl)
Oracle Forms (fmt)
Oracle PL/SQL (bod, fnc, prc, spc, trg)
Oracle Reports (rex)
Pascal (dpr, p, pas)
Pascal/Puppet (pp)
Patran Command Language (pcl, ses)
Perl (perl, plh, plx, pm, pm6, pl)
PHP (php, php3, php4, php5, phtml)
PHP/Pascal (inc)
Pig Latin (pig)
PL/I (pl1)
PL/M (lit, plm)
PO File (po)
PowerBuilder (sra, srf, srm, srs, sru, srw)
PowerShell (ps1, psd1, psm1)
ProGuard (pro)
Prolog (P, pl, pro)
Protocol Buffers (proto)
Pug (pug)
PureScript (purs)
Python (py, pyw)
QML (qml)
Qt (ui)
Qt Linguist (ts)
Qt Project (pro)
R (R, r)
Racket (rkt, rktl, scrbl)
RAML (raml)
RapydScript (pyj)
Razor (cshtml)
ReasonML (re, rei)
reStructuredText (rst)
Rexx (rexx)
Rmd (Rmd)
RobotFramework (robot, tsv)
Ruby (rake, rb)
Ruby HTML (rhtml)
Rust (rs)
SAS (sas)
Sass (sass, scss)
Scala (scala)
Scheme (sc, sch, scm, sld, sls, ss)
sed (sed)
SKILL (il)
SKILL++ (ils)
Slice (ice)
Slim (slim)
Smalltalk (st, cs)
Smarty (smarty, tpl)
Softbridge Basic (SBL, sbl)
Solidity (sol)
SparForte (sp)
Specman e (e)
SQL (psql, SQL, sql)
SQL Data (data.sql)
SQL Stored Procedure (spc.sql, spoc.sql, sproc.sql, udf.sql)
Standard ML (fun, sig, sml)
Starlark (bzl)
Stata (DO, do)
Stylus (styl)
SVG (svg, SVG)
Swift (swift)
SWIG (i)
Tcl/Tk (itk, tcl, tk)
Teamcenter met (met)
Teamcenter mth (mth)
TeX (bst, dtx, sty, tex, cls)
TITAN Project File Information (tpd)
Titanium Style Sheet (tss)
TOML (toml)
TTCN (ttcn, ttcn2, ttcn3, ttcnpp)
Twig (twig)
TypeScript (tsx, ts)
Unity-Prefab (mat, prefab)
Vala (vala)
Vala Header (vapi)
Velocity Template Language (vm)
Verilog-SystemVerilog (sv, svh, v)
VHDL (VHD, vhd, VHDL, vhdl)
vim script (vim)
Visual Basic (bas, ctl, dsr, frm, vb, VB, VBA, vba, VBS, vbs, cls)
Visual Fox Pro (SCA, sca)
Visualforce Component (component)
Visualforce Page (page)
Vuejs Component (vue)
WebAssembly (wast, wat)
Windows Message File (mc)
Windows Module Definition (def)
Windows Resource File (rc, rc2)
WiX include (wxi)
WiX source (wxs)
WiX string localization (wxl)
XAML (xaml)
xBase (prg)
xBase Header (ch)
XHTML (xhtml)
XMI (XMI, xmi)
XML (xml, XML)
XQuery (xq, xquery)
XSD (XSD, xsd)
XSLT (XSL, xsl, xslt, XSLT)
Xtend (xtend)
yacc (y)
YAML (yaml, yml)
zsh (zsh)
使用
统计当前目录:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ cloc ./
380 text files.
292 unique files.
156 files ignored.
github.com/AlDanial/cloc v 1.82 T=1.61 s (141.4 files/s, 95797.7 lines/s)
———————————————————————————————————————
Language files blank comment code
-------------------------------------------------------------------------------
HTML 116 23769 2770 82578
JavaScript 39 4912 3626 17785
CSS 31 555 3876 8065
XML 14 635 0 3719
JSON 12 29 0 818
Markdown 5 141 0 279
YAML 5 36 43 145
SVG 5 0 0 5
-------------------------------------------------------------------------------
SUM: 227 30077 10315 113394
———————————————————————————————————————
过滤文件夹
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ cloc ./ —-exclude-dir=_site
213 text files.
213 unique files.
66 files ignored.
github.com/AlDanial/cloc v 1.82 T=0.40 s (371.3 files/s, 113980.7 lines/s)
———————————————————————————————————————
Language files blank comment code
———————————————————————————————————————
JavaScript 39 4912 3626 17785
CSS 31 555 3876 8065
HTML 45 338 126 3909
XML 12 0 0 1698
Markdown 5 141 0 279
JSON 7 0 0 205
YAML 5 36 43 145
SVG 5 0 0 5
-------------------------------------------------------------------------------
SUM: 149 5982 7671 32091
-------------------------------------------------------------------------------
更多用法
-
Homebrew
安装:在终端中运行:/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
完成安装。 ↩
本文作者 Auther:Soptq
本文链接 Link: https://soptq.me/2020/01/26/cloc/
版权声明 Copyright: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处。 Content on this site is licensed under the CC BY-NC-SA 4.0 license agreement unless otherwise noted. Attribution required.
发现存在错别字或者事实错误?请麻烦您点击 这里 汇报。谢谢您!