diff --git a/lib/cli.js b/lib/cli.js index a88928a6..7b391112 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -45,9 +45,7 @@ exports.exec = function(options, done) { platoOptions.jshint.options = jshintrc; } else if (exports.args.e) { - json = fs.readFileSync(exports.args.e.value).toString(); - jshintrc = JSON.parse(util.stripComments(json)); - platoOptions.eslint = jshintrc; + platoOptions.eslint = exports.args.e.value; } plato.inspect(files, outputDir, platoOptions, done); diff --git a/lib/reporters/eslint/index.js b/lib/reporters/eslint/index.js index c40275db..24ba101a 100644 --- a/lib/reporters/eslint/index.js +++ b/lib/reporters/eslint/index.js @@ -36,8 +36,13 @@ function lint(source, config) { // Remove potential Unicode BOM. source = source.replace(/^\uFEFF/, ""); - var messages = ESLINT.linter.verify(source, config); - results = results.concat(messages); + var cli = new ESLINT.CLIEngine({ + configFile: config + }); + var messages = cli.executeOnText(source); + + if(messages && messages.results && messages.results.length && messages.results[0].messages) + results = results.concat(messages.results[0].messages); return { results : results, diff --git a/lib/util.js b/lib/util.js index 31e638ae..c823405e 100644 --- a/lib/util.js +++ b/lib/util.js @@ -56,7 +56,7 @@ exports.stripComments = function (str) { /*jshint regexp:false */ str = str || ''; - var multiline = /\/\*(?:(?!\*\/)|.|\n)*?\*\//g; + var multiline = /^[\t\s]*\/\*\*?[^!][\s\S]*?\*\/[\r\n]/gm; var singleline = /\/\/.*/g; return str.replace(multiline, '').replace(singleline, ''); diff --git a/test/fixtures/.eslintrc.json b/test/fixtures/.eslintrc.json new file mode 100644 index 00000000..fada95e4 --- /dev/null +++ b/test/fixtures/.eslintrc.json @@ -0,0 +1,25 @@ +{ + "rules": { + "indent": [ + 2, + 4 + ], + "quotes": [ + 2, + "single" + ], + "linebreak-style": [ + 2, + "windows" + ], + "semi": [ + 2, + "always" + ], + "no-console": 0 + }, + "env": { + "node": true + }, + "extends": "eslint:recommended" +} \ No newline at end of file diff --git a/test/plato_test.js b/test/plato_test.js index c0cfaa0c..f1277498 100644 --- a/test/plato_test.js +++ b/test/plato_test.js @@ -130,5 +130,23 @@ exports['plato'] = { test.ok(overview.summary.total.jshint === 2, 'Should contain total jshint issues'); test.done(); }); + }, + + 'should run eslint with default config' : function(test) { + + var files = [ + 'test/fixtures/a.js', + 'test/fixtures/b.js' + ]; + + test.expect(1); + + plato.inspect(files, null, { + eslint: 'test/fixtures/.eslintrc.json' + }, function(reports) { + var overview = plato.getOverviewReport(reports); + test.ok(overview.summary.total.jshint === 8, 'Should contain total eslint issues'); + test.done(); + }); } };