我了解到有一个命令cloc
可以计算代码行数。现在我想知道文件类型是否准确?我应该查看项目cloc
以了解如何检测文件类型吗?我想知道的原因是,如果我没有弄错的话,当我将文件类型与tree|ls *.py
没有输出进行比较时, cloc 似乎有误报,即使cloc
报告当前目录中的 python 文件。
答案1
如果您想检查树中的文件数量.py
以将其与 找到的数量进行比较cloc
,我建议类似
find . -type f -name \*.py -printf '1' | wc -c
反而。
答案2
您可以增加详细程度并获取已识别文件的列表,例如对于 Python:
cloc -v=3 . | grep 'call_counter(.* Python)'
示例输出:
-> call_counter(./data/action_i18n_strings.py, Python)
-> call_counter(./files/usr/share/nemo/actions/myaction.py, Python)
然后通过读取文件来手动验证它们。
对于每个匹配的文件调用call_counter
一次。
1.64 之前的版本仅通过检查扩展名来识别 Python 脚本.py
。从版本 1.64 开始,cloc
Python 也可以通过 shebang 来识别:
添加了 python、python2.6、python2.7、python3、python3.3、python3.4 作为脚本可执行文件,以识别不以 .py 结尾的 Python 文件。
至于最新开发。版本它寻找这些环境:
%{$rh_Language_by_Script} = ( # {{{1
'awk' => 'awk' ,
'bash' => 'Bourne Again Shell' ,
'bc' => 'bc' ,# calculator
'crystal' => 'Crystal' ,
'csh' => 'C Shell' ,
'dmd' => 'D' ,
'dtrace' => 'dtrace' ,
'idl' => 'IDL' ,
'kermit' => 'Kermit' ,
'ksh' => 'Korn Shell' ,
'lua' => 'Lua' ,
'make' => 'make' ,
'octave' => 'Octave' ,
'perl5' => 'Perl' ,
'perl6' => 'Perl' ,
'perl' => 'Perl' ,
'miniperl' => 'Perl' ,
'php' => 'PHP' ,
'php5' => 'PHP' ,
'python' => 'Python' ,
'python2.6'=> 'Python' ,
'python2.7'=> 'Python' ,
'python3' => 'Python' ,
'python3.3'=> 'Python' ,
'python3.4'=> 'Python' ,
'python3.5'=> 'Python' ,
'rexx' => 'Rexx' ,
'regina' => 'Rexx' ,
'ruby' => 'Ruby' ,
'sed' => 'sed' ,
'sh' => 'Bourne Shell' ,
'swipl' => 'Prolog' ,
'tcl' => 'Tcl/Tk' ,
'tclsh' => 'Tcl/Tk' ,
'tcsh' => 'C Shell' ,
'wish' => 'Tcl/Tk' ,
'zsh' => 'zsh' ,
);
# 1}}}