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.
