cloc(1) - Linux man page
Name
cloc - Count, and compute differences of, lines of source code and comments.
Synopsis
cloc [options] <FILE|DIR> ...
Description
Count, or compute differences of, physical lines of source code in the given files (may be archives such as compressed tarballs or zip files) and/or recursively below the given directories. It is written entirely in Perl, using only modules from the standard distribution.
Options
Input Options
- To count standard input, use the special filename -.
- --extract-with=<cmd>
- This option is only needed if cloc is unable to figure out how to extract the contents of the input file(s) by itself. Use <cmd> to extract binary
archive files (e.g.: .tar.gz, .zip, .Z). Use the literal '>FILE<' as a stand-in for the actual file(s) to be extracted. For example, to count lines of
code in the input files gcc-4.2.tar.gz perl-5.8.8.tar.gz on Unix use:
--extract-with='gzip -dc >FILE< | tar xf -
or, if you have GNU tar:--extract-with='tar zxf >FILE<'
and on Windows, use:--extract-with="\"c:\Program Files\WinZip\WinZip32.exe\" -e -o >FILE<
- --list-file=<file>
- Take the list of file and/or directory names to process from <file> which has one file/directory name per line. See also --exclude-list-file
- --unicode
- Check binary files to see if they contain Unicode expanded ASCII text. This causes performance to drop noticably.
Processing Options
- --autoconf
- Count .in files (as processed by GNU autoconf) of recognized languages.
- --by-file
- Report results for every source file encountered.
- --by-file-by-lang
- Report results for every source file encountered in addition to reporting by language.
- --diff <set1 <set2>>
- Compute differences in code and comments between source file(s) of <set1> and <set2>. The inputs may be pairs of files, directories, or archives. Use --diff-alignment to generate a list showing which file pairs where compared. See also --ignore-case, --ignore-whitespace.
- --follow-links
- [Unix only] Follow symbolic links to directories (sym links to files are always followed).
- --force-lang=<lang[,<ext>]>
- Process all files that have a <ext> extension with the counter for language <lang>. For example, to count all .f files with the Fortran 90
counter (which expects files to end with .f90) instead of the default Fortran 77 counter, use:
--force-lang="Fortran 90",f
If <ext> is omitted, every file will be counted with the <lang> counter. This option can be specified multiple times (but that is only useful when <ext> is given each time). See also --script-lang. - --ignore-whitespace
- Ignore horizontal white space when comparing files with --diff. See also --ignore-case.
- --ignore-case
- Ignore changes in case; consider upper- and lowercase letters equivalent when comparing files with --diff. See also --ignore-whitespace.
- --lang-no-ext=<lang>
- Count files without extensions using the <lang> counter. This option overrides internal logic for files without extensions (where such files are checked against known scripting languages by examining the first line for "#!"). See also --force-lang, --script-lang.
- --stdin-name=<file>
- Count lines streamed via STDIN as if they came from a file named <file>.
- --read-binary-files
- Process binary files in addition to text files. This is usually a bad idea and should only be attempted with text files that have embedded binary data.
- --read-lang-def=<file>
- Load from <file> the language processing filters. (see also --write-lang-def) then use these filters instead of the built-in filters.
- --script-lang=LANG,<s>
- Process all files that invoke <s> as a "#!" scripting language with the counter for language LANG . For example, files that
begin with "#!/usr/local/bin/perl5.8.8" will be counted with the Perl counter by using
--script-lang=Perl,perl5.8.8
The language name is case insensitive but the name of the script language executable, <s>, must have the right case. This option can be specified multiple times. See also --force-lang. - --sdir=<dir>
- Use <dir> as the scratch directory instead of letting File::Temp chose the location. Files written to this location are not removed at the end of the run (as they are with File::Temp).
- --skip-uniqueness
- Skip the file uniqueness check. This will give a performance boost at the expense of counting files with identical contents multiple times (if such duplicates exist).
- --strip-comments=<ext>
- For each file processed, write to the current directory a version of the file which has blank lines and comments removed. The name of each stripped file is the original file name with ".<ext"> appended to it. It is written to the current directory unless --original-dir is on.
- --original-dir
- Write the stripped files the same directory as the original files. Only effective in combination with --strip-comments.
- --sum-reports
- Input arguments are report files previously created with the --report-file option. Makes a cumulative set of results containing the sum of data from the individual report files.
- --unix
- Over-ride the operating system detection logic and run in UNIX mode. See also --windows, --show-os.
- --windows
- Over-ride the operating system detection logic and run in Microsoft Windows mode. See also --unix, --show-os.
Filter Options
- --exclude-dir=<dir[,<dir> ...]>
- Exclude the given comma separated directories from being scanned. For example:
--exclude-dir=.cache,test
will skip all files that match "/.cache/" or "/test/" as part of their path. Directories named ".bzr", ".cvs", ".hg", ".git", ".hg", and ".svn" are always excluded. - --exclude-lang=<L1[,<L2> ...]>
- Exclude the given comma separated languages from being counted.
- --exclude-list-file=<file>
- Ignore files whose names appear in <file>. <file> should have one entry per line. Relative path names will be resolved starting from the directory where cloc is invoked. See also --list-file.
- --match-d=<regex>
- Only count files in directories matching the Perl regex. For example
--match-d=/src/
only counts files in directories containing "src". - --not-match-d=<regex>
- Count all files except in directories matching the Perl regex.
- --match-f=<regex>
- Only count files whose basenames match the Perl regex. For example this only counts files at start with Widget or widget:
--match-f="^[Ww]idget"
- --not-match-f=<regex>
- Count all files except those whose basenames match the Perl regex.
- --skip-win-hidden
- On Windows, ignore hidden files.
Debug Options
- --categorized=<file>
- Save names of categorized files to <file>.
- --counted=<file>
- Save names of processed source files to <file>.
- --help
- Print this usage information and exit.
- --found=<file>
- Save names of every file found to <file>.
- --ignored=<file>
- Save names of ignored files and the reason they were ignored to <file>.
- --print-filter-stages
- Print to STDOUT processed source code before and after each filter is applied.
- --show-ext[=<ext]>
- Print information about all known (or just the given) file extensions and exit.
- --show-lang[=<lang]>
- Print information about all known (or just the given) languages and exit.
- --show-os]>
- Print the value of the operating system mode and exit. See also --unix, --windows.
- -v[=<number]>
- Turn on verbose with optional numeric value.
- --version
- Print the version of this program and exit.
- --write-lang-def=<file>
- Writes to <file> the language processing filters then exits. Useful as a first step to creating custom language definitions. See also --read-lang-def.
Output Options
- --3
Print third-generation language output. (This option can cause report summation to fail if some reports were produced with this option while others were produced without it.)
- --progress-rate=<number>
- Show progress update after every <n> files are processed (default <n>=100). Set <n> to 0 to suppress progress output; useful when redirecting output to STDOUT .
- --quiet
- Suppress all information messages except for the final report.
- --report-file=<file>
- Write the results to <file> instead of standard output.
- --out=<file>
- Synonym for --report-file=<file>.
- --csv
- Write the results as comma separated values.
- --csv-delimiter=<C>
- Use the character <C> as the delimiter for comma separated files instead of ,. This switch forces --csv to be on.
- --sql=<file>
- Write results as SQL CREATE and INSERT statements which can be read by a database program such as SQLite. If <file> is -, output is sent to STDOUT .
- --sql-project=<name>
- Use <name> as the project identifier for the current run. Only valid with the --sql option.
- --sql-append
- Append SQL insert statements to the file specified by --sql and do not generate table creation option.
- --sum-one
- For plain text reports, show the SUM: output line even if only one input file is processed.
- --xml
- Write the results in XML .
- --xsl[=<file]>
- Reference <file> as an XSL stylesheet within the XML output. If <file> is not given, writes a default stylesheet, cloc.xsl. This switch forces --xml to be on.
- --yaml
- Write the results in YAML .
Examples
Count the lines of code in the Perl 5.10.0 compressed tar file on a UNIX-like operating system:
cloc perl-5.10.0.tar.gzCount the changes in files, code, and comments between Python releases 2.6.6 and 2.7:
cloc --diff Python-2.6.6.tar.bz Python-2.7.tar.bz2To see how cloc aligns files for comparison between two code bases, use the --diff-alignment=<file> option. Here the alignment information is written to "align.txt":
cloc --diff-aligment=align.txt gcc-4.4.0.tar.bz2 gcc-4.5.0.tar.bz2Print the recognized languages
cloc --show-langRemove comments from "foo.c" and save the result in "foo.c.nc"
cloc --strip-comments=nc foo.cAdditional examples can be found at <http://cloc.sourceforge.net>.
Environment
None.
Files
None.
See Also
sloccount(1)
Authors
The cloc program was written by Al Danial <al.danial@gmail.com> and is Copyright © 2006-2012 Northrop Grumman Corporation.
The manual page was originaly written by Jari Aalto <jari.aalto@cante.net>.
Both the code and documentation is released under the GNU GPL version 2 or (at your option) any later version. For more information about license, visit <http://www.gnu.org/copyleft/gpl.html>.