Skip to content

Latest commit

 

History

History
152 lines (108 loc) · 3.06 KB

File metadata and controls

152 lines (108 loc) · 3.06 KB

jsdoc-example-eslint

ESLint rule to lint JavaScript code in JSDoc example blocks.

Usage

var rule = require( '@stdlib/_tools/eslint/rules/jsdoc-example-eslint' );

rule

ESLint rule to lint JavaScript code in JSDoc example blocks. The rule extracts code from @example tags in JSDoc comments, lints it using a provided set of ESLint rules, and reports violations mapped back to the original source lines.

The rule accepts an options object with a rules property specifying which ESLint rules to apply to the extracted example code.

Bad (missing semicolon):

/**
* Squares a number.
*
* @example
* var y = square( 3.0 )
*/
function square( x ) {
    return x * x;
}

Good:

/**
* Squares a number.
*
* @example
* var y = square( 3.0 );
*/
function square( x ) {
    return x * x;
}

Examples

var Linter = require( 'eslint' ).Linter;
var rule = require( '@stdlib/_tools/eslint/rules/jsdoc-example-eslint' );

var linter = new Linter();
var result;
var code;

code = [
    '/**',
    '* Squares a number.',
    '*',
    '* @example',
    '* var y = square( 3.0 )',
    '* // returns 9.0',
    '*/',
    'function square( x ) {',
    '\treturn x * x;',
    '}'
].join( '\n' );

linter.defineRule( 'jsdoc-example-eslint', rule );

result = linter.verify( code, {
    'rules': {
        'jsdoc-example-eslint': [ 'error', {
            'rules': {
                'semi': 'error'
            }
        }]
    }
});
console.log( result );
/* =>
    [
        {
            'ruleId': 'jsdoc-example-eslint',
            'severity': 2,
            'message': 'Missing semicolon. (semi)',
            ...
        }
    ]
*/