sloc is a simple tool to count SLOC (source lines of code)
npm install slocCreate stats of your source code:
- physical lines
- lines of code (source)
- lines with comments
- lines with single-line comments
- lines with block comments
- lines mixed up with source and comments
- empty lines within block comments
- empty lines
- lines with TODO's



In addition to the default terminal output (see examples below), sloc provides an alternative set of output formatters:
- CSV
- JSON
- Command line table
To use sloc as an application install it globally:
``shell`
sudo npm install -g sloc
If you're going to use it as a Node.js module within your project:
`shell`
npm install --save sloc
You can also use sloc within your browser application.
Link sloc.js in your HTML file:
`html`
`shell`
sloc [option]
Options:
`shell`
-h, --help output usage information
-V, --version output the version number
-e, --exclude
-i, --include
-f, --format
--format-option [value] add formatter option
-k, --keys
-d, --details report stats of each analyzed file
-a, --alias
e.g.:
`shell
$ sloc src/
---------- Result ------------
Physical : 1202
Source : 751
Comment : 322
Single-line comment : 299
Block comment : 23
Mixed : 116
Empty : 245
Number of files read : 10
------------------------------
`
or
`shell
$ sloc --details \
--format cli-table \
--keys total,source,comment \
--exclude i18n*.\.coffee \
--format-option no-head src/
┌─────────────────────────────────┬──────────┬────────┬─────────┐
│ src/cli.coffee │ 98 │ 74 │ 7 │
├─────────────────────────────────┼──────────┼────────┼─────────┤
│ src/helpers.coffee │ 26 │ 20 │ 0 │
├─────────────────────────────────┼──────────┼────────┼─────────┤
│ src/sloc.coffee │ 196 │ 142 │ 20 │
├─────────────────────────────────┼──────────┼────────┼─────────┤
│ src/formatters/simple.coffee │ 44 │ 28 │ 7 │
├─────────────────────────────────┼──────────┼────────┼─────────┤
│ src/formatters/csv.coffee │ 25 │ 14 │ 5 │
├─────────────────────────────────┼──────────┼────────┼─────────┤
│ src/formatters/cli-table.coffee │ 22 │ 13 │ 0 │
└─────────────────────────────────┴──────────┴────────┴─────────┘
`
Or use it in your own node module
`javascript
var fs = require('fs');
var sloc = require('sloc');
fs.readFile("mySourceFile.coffee", "utf8", function(err, code){
if(err){ console.error(err); }
else{
var stats = sloc(code,"coffee");
for(i in sloc.keys){
var k = sloc.keys[i];
console.log(k + " : " + stats[k]);
}
}
});
`
`javascript
var sourceCode = "foo();\n / bar /\n baz();";
var stats = window.sloc(sourceCode,"javascript");
`
1. Fork this repo
2. add the new formatter into src/formatters/ that exports a
method with three arguments:
1. results (object)
2. global options (object)
3. formatter specific options (array)
3. add the formatter in src/cli.coffee
4. open a pull request
- Grunt
- grunt-sloc.
- grunt-sloccount
- grunt-maxlines
- grunt-file-sloc
- Gulp
- gulp-sloc:
- gulp-sloc2
- Atom
- atom-sloc
- line-count
- Jenkins
- sloc-for-jenkins
- sloccount
- Istanbul
- istanbul-reporter-clover-limits
- Codemetrics
- codemetrics-process-sloc
- Assembly
- Agda
- Brightscript
- C / C++
- C#
- Clojure / ClojureScript
- CoffeeScript / IcedCoffeeScript
- Crystal
- CSS / SCSS / SASS / LESS / Stylus
- Dart
- Erlang
- F#
- Fortran
- Go
- Groovy
- Handlebars
- Haskell
- Haxe
- Hilbert
- HTML
- hy
- Jade
- Java
- JavaScript
- JSX
- Julia
- Kotlin
- LaTeX
- LilyPond
- LiveScript
- Lua
- MJS
- Mochi
- Monkey
- Mustache
- Nim
- Nix
- Objective-C / Objective-C++
- OCaml
- Perl 5
- PHP
- PRQL
- Pug
- Python
- R
- Racket
- Ren'Py
- Ruby
- Rust
- Scala
- Squirrel
- SVG
- Swift
- Typescript
- Visual Basic
- XML
- Yaml
`shell`
npm test
`shell`
npm run prepublish
see CHANGELOG.md`
sloc is licensed under the MIT license