loccount counts source lines of code (ignoring blank lines and comments) for many, many languages.
loccount started out as a re-implementation of David A. Wheeler’s sloccount tool in Go, but has since grown a lot more capability. It is faster, handles more different languages, can report LLOC as well as SLOC, and can do COCOMO II as well as COCOMO I estimates. Because it’s one source file in Go, it is easier to maintain and extend than the multi-file, multi-language implementation of the original.
The -t option also makes it useful for identifying the origin of alien source files; using a Go regular expression against language names and aliases, you can usually get a brief description of any language that appears in a loccount report. By default that report is plain text; add -H to emit HTML instead.
You can view a webified version of the language database at here.
Comparisons
Why use this counter rather than competitors like tokei, scc, or gocloc?
-
loccount has very, very broad coverage of programming languages, document markups. Here’s a comparison:
Languages Counters 725
Loccount
361
Scc
354
Cloc
329
Tokei
187
Gocloc
-
loccount reports LLOC as well as SLOC when possible.
-
loccount can do COCOMO II cost estimation.
-
loccount can report in self-describing JSON for postprocessing.
-
loccount can usually tell you what an unidentified source file is.
-
loccount is very fast, exploiting as many processors as you have.
Build instructions
To build it, have the Go compiler and Python 3 installed and do "make" in the top-level directory.
If you get a message about genericLanguages being undefined, you did "go build" which is not enough. The make production generates some Go from a JSON file; this is why you needed Python installed.
You can run a self-test with 'make check'. The sample sources are in the test/ subdirectory.
See hacking.adoc for information on how to add support for a language. You may also want to read the design notes in design-notes.adoc
Packages
This code is commonly packaged as "loccount".