eslint-plugin-no-unsafe-regex

ESLint rules to disallow unsafe regular expressions.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
eslint-plugin-no-unsafe-regex
1.0.08 years ago8 years agoMinified + gzip package size for eslint-plugin-no-unsafe-regex in KB

Readme

Rules: No Unsafe Regex
!NPM versionnpm-imagenpm-url !Build Statustravis-imagetravis-url !Coverage Statuscodecov-imagecodecov-url !Dependenciesdependencies-imagedependencies-url
ESLint rules to disallow unsafe regular expressions.

Installation

$ npm install eslint-plugin-no-unsafe-regex

Usage

Plugin

To use the plugin in an .eslintrc file,
{
	'plugins': [
		'no-unsafe-regex'
	]
}

where no-unsafe-regex is shorthand for eslint-plugin-no-unsafe-regex. To configure plugin rules,
{
	'plugins': [
		'no-unsafe-regex'
	],
	'rules': {
		'no-unsafe-regex/no-unsafe-regex': 2
	}
}

where a plugin rule must be prefixed with the plugin name and a /; e.g., no-unsafe-regex/<rule>.

Module

var plugin = require( 'eslint-plugin-no-unsafe-regex' );

plugin

ESLint rules to disallow unsafe regular expressions.
console.dir( plugin );
/*
	{
		'rules': {
			'no-unsafe-regex': <rule>
		},
		'rulesConfig': {
			'no-unsafe-regex': 2
		}
	}
*/

Notes

  • In order to use the plugin, the plugin must first be installed as a node_modules dependency.
  • The plugin only validates regular expression literals and regular expressions created using the RegExp constructor and literal arguments.
``` javascript
var re;

// Validated:
re = /beep/;

// Validated:
re = new RegExp( 'beep', 'i' );

// Not validated:
str = 'beep';
re = new RegExp( str, 'i' );

// Not validated:
re = new RegExp( new Array( 5 ).join( 'ab' ) );
```

Validating regular expressions created using non-literal arguments would require reconstructing an execution context, which is beyond the scope of this module. For example, consider

``` javascript
var getStr = require( './path/to/my/string' ),
	str = getStr();

var re = new RegExp( str );
```

If the return value of `getStr` is dynamic, validation is impossible.

Examples

module.exports = {
	'env': {
		'node': true
	},
	'plugins': [
		// Declare the plugin:
		'no-unsafe-regex'
	],
	'rules': {
		'no-path-concat': 2,
		'no-process-exit': 0,
		'no-sync': 1,
		'no-mixed-requires': [ 2, false ],

		// Prefix a plugin rule with `{{plugin_name}}/`:
		'no-unsafe-regex/no-unsafe-regex': 2
	}
};

To run the example code from the top-level application directory,
$ node ./examples/index.js

Tests

Unit

Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:
$ make test

All new feature development should have corresponding unit tests to validate correct functionality.

Test Coverage

This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:
$ make test-cov

Istanbul creates a ./reports/coverage directory. To access an HTML version of the report,
$ make view-cov

License

MIT license.

Copyright

Copyright © 2015. Athan Reines.