You can warn if someone is disabling a specific rule or set of rules. If
they disable all rules, then it won't work.

On Fri, Sep 26, 2014 at 10:00 AM, Peter deHaan <[email protected]>
wrote:

> So would there be any way to write a rule to check for eslint-disable
> blocks, or would the disabled rule always block me?
>
> On Thu, Sep 25, 2014 at 7:57 PM, Nicholas Zakas <
> [email protected]> wrote:
>
>> Oh yeah, this makes absolute sense. /*eslint-disable*/ disables all
>> rules, including your rule that finds the comments.
>> On Sep 25, 2014 2:18 PM, "Peter deHaan" <[email protected]> wrote:
>>
>>> Ah, OK, it only works when I specify a rule in the /* eslint-disable */
>>> block. Seems fishy:
>>>
>>>     /*eslint-disable */
>>>     var Baz = 3;
>>>     /* eslint-enable */
>>>
>>> Gives me this (which is bad):
>>>     $ eslint --rulesdir rules app.js; echo $?
>>>     0
>>>
>>>
>>> But...
>>>
>>>     /*eslint-disable no-unused-vars */
>>>     var Baz = 3;
>>>     /* eslint-enable */
>>>
>>> Gives me this (which is good):
>>>     $ eslint --rulesdir rules app.js; echo $?
>>>
>>>     app.js
>>>       12:0  error  Unexpected `eslint-disable` in content
>>>  no-eslint-disable
>>>       14:0  error  Unexpected `eslint-enable` in content
>>> no-eslint-disable
>>>
>>>     ✖ 2 problems
>>>
>>>     1
>>>
>>>
>>> On Thu, Sep 25, 2014 at 2:02 PM, Peter deHaan <[email protected]>
>>> wrote:
>>>
>>>> That gives me:
>>>>
>>>> $ DEBUG=eslint:* eslint --rulesdir rules app.js
>>>>   eslint:cli-engine Loading rules from rules +0ms
>>>>   eslint:cli-engine Processing app.js +8ms
>>>>   eslint:cli-engine Linting /Users/pdehaan/dev/tmp/eslint-custom/app.js
>>>> +0ms
>>>>   eslint:config Constructing config for
>>>> /Users/pdehaan/dev/tmp/eslint-custom/app.js +1ms
>>>>   eslint:config Using .eslintrc files +0ms
>>>>   eslint:config Using /Users/pdehaan/dev/tmp/eslint-custom/.eslintrc
>>>> +0ms
>>>>   eslint:config Merging command line environment settings +4ms
>>>> errata! `eslint-disable`
>>>> errata! `eslint-enable`
>>>>
>>>> app.js
>>>>   5:4  error  foo is defined but never used  no-unused-vars
>>>>
>>>> ✖ 1 problem
>>>>
>>>>
>>>> It's a bit perplexing.
>>>> My console log works, but not the context.report(). The
>>>> context.report() works if I move it outside of that `if` block, but then
>>>> obviously throws too many warnings (naturally)...
>>>>
>>>> OK, I think I sorted it out. It just doesn't work.
>>>> Changing my source code (and rule) from "eslint-disable" to
>>>> "fslint-disable" makes it work as expected, and now I get this:
>>>>
>>>>   12:0   error  Unexpected `eslint-disable` or `eslint-enable` in
>>>> content  no-eslint-disable
>>>>   14:0   error  Unexpected `eslint-disable` or `eslint-enable` in
>>>> content  no-eslint-disable
>>>>
>>>>
>>>> :shrug:
>>>>
>>>>
>>>> On Thu, Sep 25, 2014 at 1:41 PM, Nicholas Zakas <
>>>> [email protected]> wrote:
>>>>
>>>>> Try running with
>>>>>
>>>>> ```
>>>>> $ DEBUG=eslint:* eslint --rulesdir rules app.js
>>>>> ```
>>>>>
>>>>> And see what info you find.
>>>>>
>>>>> On Thu, Sep 25, 2014 at 12:37 PM, Peter deHaan <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I'm trying to create a custom ESLint rule (v0.8.2) which prevents the
>>>>>> use of /* eslint-disable */ comments, but for some reason my
>>>>>> context.report() is not reporting violations as errors/warnings.
>>>>>> Does anybody have a couple minutes to take a look?
>>>>>>
>>>>>> My .eslintrc file is pretty simple:
>>>>>>
>>>>>> env:
>>>>>>   node: true
>>>>>> rules:
>>>>>>   no-alert: 1
>>>>>>   no-eslint-disable: 2
>>>>>>
>>>>>>
>>>>>>
>>>>>> My rules/no-eslint-disable.js is:
>>>>>>
>>>>>> "use strict";
>>>>>> module.exports = function (context) {
>>>>>>   var eslintEnableDisable = /^eslint-(enable|disable)/;
>>>>>>
>>>>>>   function checkComment(node) {
>>>>>>     var value = node.value.trim();
>>>>>>     if (eslintEnableDisable.test(value)) {
>>>>>>       context.report(node, "Unexpected `eslint-disable` or 
>>>>>> `eslint-enable` in content.");
>>>>>>       console.error("errata!");
>>>>>>     }
>>>>>>   }
>>>>>>
>>>>>>   return {
>>>>>>     "BlockComment": checkComment,
>>>>>>     "LineComment": checkComment
>>>>>>   };};
>>>>>>
>>>>>>
>>>>>>
>>>>>> My app.js test case is:
>>>>>>
>>>>>> /** * This is a copyright header. */
>>>>>> var foo = "bar"; // nice var bro
>>>>>> /*and a regular doc comment which may span multiple lines or include 
>>>>>> commented out code.var bar = "foo"; // circular much? */
>>>>>> /* eslint-disable */var window = alert;/* eslint-enable */
>>>>>>
>>>>>>
>>>>>>
>>>>>> When I run ESLint with my custom rule, I see my console.error()s but
>>>>>> not the warnings/errors via context.report().
>>>>>>
>>>>>> $ eslint --rulesdir rules app.js
>>>>>> errata! `eslint-disable`
>>>>>> errata! `eslint-enable`
>>>>>>
>>>>>> app.js
>>>>>>   5:4  error  foo is defined but never used  no-unused-vars
>>>>>>
>>>>>> ✖ 1 problem
>>>>>>
>>>>>> $ eslint -v # v0.8.2
>>>>>>
>>>>>> --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "ESLint" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to [email protected].
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> ______________________________
>>>>> Nicholas C. Zakas
>>>>> @slicknet
>>>>>
>>>>> Author, Professional JavaScript for Web Developers
>>>>> Buy it at Amazon.com:
>>>>> http://www.amazon.com/Professional-JavaScript-Developers-Nicholas-Zakas/dp/1118026691/ref=sr_1_3
>>>>>
>>>>
>>>>
>>>
>


-- 

______________________________
Nicholas C. Zakas
@slicknet

Author, Professional JavaScript for Web Developers
Buy it at Amazon.com:
http://www.amazon.com/Professional-JavaScript-Developers-Nicholas-Zakas/dp/1118026691/ref=sr_1_3

-- 
You received this message because you are subscribed to the Google Groups 
"ESLint" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to