Package Exports
- sloc
- sloc/lib/sloc.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (sloc) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
sloc
Create 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
Supported outputs
In addition to the default terminal output (see examples below), sloc provides an alternative set of output formatters:
- CSV
- JSON
- Command line table
Install
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
Browser
You can also use sloc within your browser application.
Link sloc.js
in your HTML file:
<script src="lib/sloc.js"></script>
Usage
CLI
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
-i, --include <regex> regular expression to include 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 analyzed file
-a, --alias <custom ext>=<standard ext> alias custom ext to act like standard ext (eg. php5=php,less=css)
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 │
└─────────────────────────────────┴──────────┴────────┴─────────┘
Node.js
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]);
}
}
});
Browser usage
var sourceCode = "foo();\n /* bar */\n baz();";
var stats = window.sloc(sourceCode,"javascript");
Contribute an new formatter
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
sloc adapters
Grunt
Gulp
Jenkins
Istanbul
Codemetrics
Supported languages
- 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
Run tests
npm test
Build
npm run prepublish
Changelog
see CHANGELOG.md
License
sloc is licensed under the MIT license