Create stats of your source code:
- lines of code
- lines with comments
- lines with block comments
- lines with single-line comments
- lines mixed up with source and comments
- empty lines
- physical lines
sloc provides a set of output formatters:
- CSV
- JSON
- Commandline table
To use sloc as an application install it globally:
sudo npm install -g sloc
If you're going to use it as a Node.js module within your project:
npm install --save sloc
You can also use sloc within your browser application.
Link sloc.js
in your HTML file:
<script src="lib/sloc.js"></script>
sloc is also available via bower:
bower install sloc
sloc [option] <file>|<directory>
Options:
-h, --help output usage information
-V, --version output the version number
-e, --exclude <regex> regular expression to exclude files and folders
-f, --format <format> format output: json, csv, cli-table
--format-option [value] add formatter option
-k, --keys <keys> report only numbers of the given keys
-d, --details report stats of each analzed file
e.g.:
$ 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
$ 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
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]);
}
}
});
var sourceCode = "foo();\n /* bar */\n baz();";
var stats = window.sloc(sourceCode,"javascript");
-
Fork this repo
-
add the new formatter into
src/formatters/
that exports a method with three arguments:- results (object)
- global options (object)
- formatter specific options (array)
-
add the formatter in
src/cli.coffee
-
open a pull request
If you'd like to use sloc within your grunt process you can use grunt-sloc.
Install it:
npm install grunt-sloc --save-dev
and use it:
grunt.loadNpmTasks('grunt-sloc');
For more details navigate to the project site.
sloc is also available for gulp.
Install gulp-sloc:
npm install --save-dev gulp-sloc
and use it:
var sloc = require('gulp-sloc');
gulp.task('sloc', function(){
gulp.src(['scripts/*.js']).pipe(sloc());
});
You can use atom-sloc to display stats of the current file in the statusbar.
And there is another great atom package called line-count that gives you a more detailed report showing line counts broken down by file, directory, and file type for all files in the project.
- CoffeeScript
- C / C++
- C#
- Clojure / ClojureScript
- CSS / SCSS / LESS / Stylus
- Erlang
- Go
- Groovy
- HTML
- Handlebars
- Haskell
- Haxe
- Hilbert
- hy
- Java
- JavaScript
- Julia
- Lua
- LiveScript
- Nix
- Monkey
- Mustache
- Perl 5
- Python
- PHP
- R
- Racket
- Ruby
- Rust
- Scala
- SVG
- Swift
- Typescript
- Visual Basic
- Yaml
- XML
npm test
see CHANGELOG.md
sloc is licensed under the MIT license