From b644137bfd30ad8379020bb25d40196113ac0840 Mon Sep 17 00:00:00 2001 From: Nate Long Date: Mon, 3 Dec 2012 21:39:49 -0800 Subject: [PATCH 1/2] Adding additional structure and CLI arg to allow the scanner to ignore all function parameters, since they're a common source of false positives --- README.md | 20 +++++++++++++++++--- bin/unused | 6 +++++- index.js | 9 +++++++-- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 758e707..a5e5c2e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# unused [![Build Status](https://secure.travis-ci.org/Kami/node-unused.png?branch=master)](https://travis-ci.org/Kami/node-unused) +# unused Identify unused variables in your javascript code. @@ -16,15 +16,29 @@ Comma separated list of function parameters to ignore during unused checks. You $ unused /path/to/file.js --ignore-params req,res,_ ``` +### --ignore-all-params + +A flag to ignore all function parameters during unused checks. If you're working in a large project, there are usually many unused function parameters that are simply placeholders to get to later parameters, so this options allows you to turn off this warning altogether. + +```shell +$ unused /path/to/file.js --ignore-all-params +``` + ## api -### unused(src) +### unused(src, options) > src is a javascript source string +> options is an object containing configuration. like the following: +```javascript +{ ignore_all_params: true } +``` + + Returns an array of objects specifying the name, location, and if the variable is a function parameter -``` +```javascript { name: 'foo', loc: { diff --git a/bin/unused b/bin/unused index 7436f2c..3ac0bd9 100755 --- a/bin/unused +++ b/bin/unused @@ -5,17 +5,21 @@ var fs = require('fs'); var argv = require('optimist') .usage('Usage: unused ') .describe('ignore-params', 'comma separated list of unused function parameters to ignore') + .describe('ignore-all-params', 'flag to ignore all function parameters') .argv; var unused = require('../'); var ignore_params = (argv['ignore-params'] || '').split(','); +var ignore_all_params = !!argv['ignore-all-params']; var errors = 0; argv._.forEach(function(path) { try { - var unused_vars = unused(fs.readFileSync(path, 'utf8')); + var unused_vars = unused(fs.readFileSync(path, 'utf8'), { + ignore_all_params: ignore_all_params + }); } catch (e) { return console.dir(e); diff --git a/index.js b/index.js index 0cd4325..cf62165 100644 --- a/index.js +++ b/index.js @@ -3,7 +3,10 @@ var esprima = require('esprima'); var Context = require('./lib/context'); // return a list of unused variables in the source -function unused(src) { +function unused(src, options) { + var options = options || {}; + var ignore_all_params = !!options.ignore_all_params; + var ast = esprima.parse(src, { loc: true }); @@ -38,7 +41,9 @@ function unused(src) { } function maybe_set_param(id, context) { - maybe_set_id(id, context, true); + if(!ignore_all_params) { + maybe_set_id(id, context, true); + } } var handlers = { From 9f5a30b0928000fd5441ea1c8e10118f27873c1a Mon Sep 17 00:00:00 2001 From: Nate Long Date: Mon, 3 Dec 2012 22:49:55 -0800 Subject: [PATCH 2/2] A couple minor changes based on pull request discussion --- README.md | 2 +- bin/unused | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a5e5c2e..2d60a98 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# unused +# unused [![Build Status](https://secure.travis-ci.org/Kami/node-unused.png?branch=master)](https://travis-ci.org/Kami/node-unused) Identify unused variables in your javascript code. diff --git a/bin/unused b/bin/unused index 3ac0bd9..7006e0a 100755 --- a/bin/unused +++ b/bin/unused @@ -6,6 +6,8 @@ var argv = require('optimist') .usage('Usage: unused ') .describe('ignore-params', 'comma separated list of unused function parameters to ignore') .describe('ignore-all-params', 'flag to ignore all function parameters') + .boolean('ignore-all-params') + .default('ignore-all-params', false) .argv; var unused = require('../');