Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Orion/ESLint"
(→Potential Programming Problems) |
(→Best Practices) |
||
Line 100: | Line 100: | ||
{| class="wikitable" border="1" cellpadding="5" cellspacing="0" style="width: 100%;" | {| class="wikitable" border="1" cellpadding="5" cellspacing="0" style="width: 100%;" | ||
− | ! | + | ! width=12% | Rule |
− | ! | + | ! width=6% | Default Severity |
− | ! | + | ! width=5% | Available Since |
− | ! | + | ! width=35%| Problem Message |
− | ! | + | ! width=40% | Details |
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=428433 block-scoped-var] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=428433 block-scoped-var] |
| Error | | Error | ||
− | | - | + | |style="text-align:center;" | - |
| '''{variable}' is already defined.'' | | '''{variable}' is already defined.'' | ||
| | | | ||
Line 115: | Line 115: | ||
* ESLint calls this error '{variable} used outside of binding context.' | * ESLint calls this error '{variable} used outside of binding context.' | ||
|- | |- | ||
− | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429722 curly] | |
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429722 curly] | + | |
| Ignore | | Ignore | ||
− | | 6.0 | + | |style="text-align:center;" | 6.0 |
| ''Statements should be enclosed in braces.'' | | ''Statements should be enclosed in braces.'' | ||
| Warns when statements should be enclosed in braces, for example <code>if(something) foo();</code> | | Warns when statements should be enclosed in braces, for example <code>if(something) foo();</code> | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=414779 eqeqeq] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=414779 eqeqeq] |
| Warning | | Warning | ||
− | | 5.0 | + | |style="text-align:center;" | 5.0 |
| | | | ||
* ''Expected '===' and saw '=='.'' | * ''Expected '===' and saw '=='.'' | ||
Line 130: | Line 129: | ||
| Warns when <code>==</code> or <code>!=</code> is used | | Warns when <code>==</code> or <code>!=</code> is used | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=424128 missing-doc] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=424128 missing-doc] |
| Ignore | | Ignore | ||
− | | 5.0 | + | |style="text-align:center;" | 5.0 |
| ''Missing documentation for function '{name}'.'' | | ''Missing documentation for function '{name}'.'' | ||
| Flags missing documentation nodes on function declarations and function expressions when they appear as object properties | | Flags missing documentation nodes on function declarations and function expressions when they appear as object properties | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=424204 missing-doc-items] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=424204 missing-doc-items] |
| Ignore | | Ignore | ||
− | | - | + | |style="text-align:center;" | - |
| ''Missing '{a}' tag for '{b}'.'' | | ''Missing '{a}' tag for '{b}'.'' | ||
| Flags missing documentation for parameters, returns, throws, etc on function declarations and function expressions when they appear as object properties | | Flags missing documentation for parameters, returns, throws, etc on function declarations and function expressions when they appear as object properties | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=460976 no-caller] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=460976 no-caller] |
| Error | | Error | ||
− | | 9.0 | + | |style="text-align:center;" | 9.0 |
| ''arguments.{callee, caller} is deprecated.'' | | ''arguments.{callee, caller} is deprecated.'' | ||
| Flags references to <code>arguments.callee</code> and <code>arguments.caller</code>. | | Flags references to <code>arguments.callee</code> and <code>arguments.caller</code>. | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429702 no-eval] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429702 no-eval] |
| Ignore | | Ignore | ||
− | | 6.0 | + | |style="text-align:center;" | 6.0 |
| '''eval' function calls are discouraged.'' | | '''eval' function calls are discouraged.'' | ||
| Warns when the <code>eval()</code> function is used | | Warns when the <code>eval()</code> function is used | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429815 no-fallthrough] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429815 no-fallthrough] |
| Error | | Error | ||
− | | 6.0 | + | |style="text-align:center;" | 6.0 |
| ''Switch case may be entered by falling through previous case. If intended, add a new comment //$FALL-THROUGH$ on the line above'' | | ''Switch case may be entered by falling through previous case. If intended, add a new comment //$FALL-THROUGH$ on the line above'' | ||
| Flags a fallthrough case within a <code>switch</code> statement, unless it is explicitly commented. | | Flags a fallthrough case within a <code>switch</code> statement, unless it is explicitly commented. | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429707 no-implied-eval] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429707 no-implied-eval] |
| Ignore | | Ignore | ||
− | | 6.0 | + | |style="text-align:center;" | 6.0 |
| ''Implicit 'eval' function calls are discouraged.'' | | ''Implicit 'eval' function calls are discouraged.'' | ||
| Flags calls to the string-argument form of <code>setTimeout</code> and <code>setInterval</code>, which implicitly perform <code>eval</code>. This rule logic was merged to be part of the <b>no-eval</b> rule. | | Flags calls to the string-argument form of <code>setTimeout</code> and <code>setInterval</code>, which implicitly perform <code>eval</code>. This rule logic was merged to be part of the <b>no-eval</b> rule. | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=455643 no-iterator] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=455643 no-iterator] |
| Error | | Error | ||
− | | 8.0 | + | |style="text-align:center;" | 8.0 |
| ''Discouraged __iterator__ property use.'' | | ''Discouraged __iterator__ property use.'' | ||
| Flags use of <code>__iterator__</code> as an identifier name or property key. | | Flags use of <code>__iterator__</code> as an identifier name or property key. | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429817 no-new-array] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429817 no-new-array] |
| Warning | | Warning | ||
− | | 6.0 | + | |style="text-align:center;" | 6.0 |
| ''Use the array literal notation [].'' | | ''Use the array literal notation [].'' | ||
| Flags <code>new Array()</code>. | | Flags <code>new Array()</code>. | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429817 no-new-func] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429817 no-new-func] |
| Warning | | Warning | ||
− | | 6.0 | + | |style="text-align:center;" | 6.0 |
| ''The Function constructor is eval.'' | | ''The Function constructor is eval.'' | ||
| Flags <code>new Function()</code>. | | Flags <code>new Function()</code>. | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429817 no-new-object] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429817 no-new-object] |
| Warning | | Warning | ||
− | | 6.0 | + | |style="text-align:center;" | 6.0 |
| ''Use the object literal notation {}.'' | | ''Use the object literal notation {}.'' | ||
| Flags <code>new Object()</code>. | | Flags <code>new Object()</code>. | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429817 no-new-wrappers] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=429817 no-new-wrappers] |
| Warning | | Warning | ||
− | | 6.0 | + | |style="text-align:center;" | 6.0 |
| ''Do not use {String, Number, Boolean, Math, JSON} as a constructor.'' | | ''Do not use {String, Number, Boolean, Math, JSON} as a constructor.'' | ||
| Flags <code>new</code> applied to any of those. | | Flags <code>new</code> applied to any of those. | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=461848 no-proto] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=461848 no-proto] |
| Error | | Error | ||
− | | - | + | |style="text-align:center;" | - |
| | | | ||
* ''Reserved name '__proto__' should not be assigned.'' | * ''Reserved name '__proto__' should not be assigned.'' | ||
Line 204: | Line 203: | ||
| Flags use of the property <code>__proto__</code> as object keys or in assignments | | Flags use of the property <code>__proto__</code> as object keys or in assignments | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=414779 no-redeclare] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=414779 no-redeclare] |
| Warning | | Warning | ||
− | | 5.0 | + | |style="text-align:center;" | 5.0 |
| '''{a}' is already defined.'' | | '''{a}' is already defined.'' | ||
| Usually results from having two <code>for</code> loops in the same function that share a loop variable declaration like <code>var i=...</code>. | | Usually results from having two <code>for</code> loops in the same function that share a loop variable declaration like <code>var i=...</code>. | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=461850 no-self-compare] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=461850 no-self-compare] |
| Error | | Error | ||
− | | - | + | |style="text-align:center;" | - |
| ''Comparing a value to itself has no effect.'' | | ''Comparing a value to itself has no effect.'' | ||
| Flags comparisons where the left- and right-hand sides are the same. | | Flags comparisons where the left- and right-hand sides are the same. | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=438319 no-shadow] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=438319 no-shadow] |
| Warning | | Warning | ||
− | | 8.0 | + | |style="text-align:center;" | 8.0 |
| '''{a}' is already declared in the upper scope.'' | | '''{a}' is already declared in the upper scope.'' | ||
| Flags variables that have the same name as a variable declared in an upper scope. | | Flags variables that have the same name as a variable declared in an upper scope. | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=461321 no-shadow-global] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=461321 no-shadow-global] |
| Warning | | Warning | ||
− | | 9.0 | + | |style="text-align:center;" | 9.0 |
| '''{a}' shadows a global member.'' | | '''{a}' shadows a global member.'' | ||
| Flags variables that have the same name as a variable declared in the global scope or specified environments. | | Flags variables that have the same name as a variable declared in the global scope or specified environments. | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=414779 no-undef] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=414779 no-undef] |
| Error | | Error | ||
− | | 5.0 | + | |style="text-align:center;" | 5.0 |
| '''{variable}' is not defined.'' | | '''{variable}' is not defined.'' | ||
| | | | ||
Line 236: | Line 235: | ||
* Predefined environments (eg. '''node''', '''browser''', '''amd''') can be set in a /*eslint-env */ block. | * Predefined environments (eg. '''node''', '''browser''', '''amd''') can be set in a /*eslint-env */ block. | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=427310 no-unused-params] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=427310 no-unused-params] |
| Warning | | Warning | ||
− | | 6.0 | + | |style="text-align:center;" | 6.0 |
| ''Parameter '{param}' is not used.'' | | ''Parameter '{param}' is not used.'' | ||
| Flags parameters in function declarations / expressions if they are not being used | | Flags parameters in function declarations / expressions if they are not being used | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=414779 no-unused-vars] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=414779 no-unused-vars] |
| Warning | | Warning | ||
− | | 5.0 | + | |style="text-align:center;" | 5.0 |
| | | | ||
*'''{a}' is not read.'' | *'''{a}' is not read.'' | ||
Line 250: | Line 249: | ||
| Warns when a variable is created and not used (read) or a variable that is read-only is assigned to. | | Warns when a variable is created and not used (read) or a variable that is read-only is assigned to. | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=414779 no-use-before-define] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=414779 no-use-before-define] |
| Warning | | Warning | ||
− | | 5.0 | + | |style="text-align:center;" | 5.0 |
| '''{a}' was used before it was defined.'' | | '''{a}' was used before it was defined.'' | ||
| Warns when a variable or function is used before it is defined | | Warns when a variable or function is used before it is defined | ||
|- | |- | ||
− | !| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=461854 no-with] | + | !style="text-align:left;"| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=461854 no-with] |
| Warning | | Warning | ||
− | | - | + | |style="text-align:center;" | - |
| ''Expected an identifier and instead saw 'with'.'' | | ''Expected an identifier and instead saw 'with'.'' | ||
| Treated as fatal parse error in JSLint. | | Treated as fatal parse error in JSLint. | ||
|- | |- | ||
− | !| [http://git.eclipse.org/c/orion/org.eclipse.orion.client.git/commit/?id=f61bdaf06ac2f40eaca4daed39520cd60c41f5f3 radix] | + | !style="text-align:left;"| [http://git.eclipse.org/c/orion/org.eclipse.orion.client.git/commit/?id=f61bdaf06ac2f40eaca4daed39520cd60c41f5f3 radix] |
| Warning | | Warning | ||
− | | 8.0 | + | |style="text-align:center;" | 8.0 |
| ''Missing radix parameter.'' | | ''Missing radix parameter.'' | ||
| Warns when parseInt() called without the 2nd parameter (radix). | | Warns when parseInt() called without the 2nd parameter (radix). | ||
|- | |- | ||
− | !| [http://git.eclipse.org/c/orion/org.eclipse.orion.client.git/commit/?id=6e517847ef0742b090130748fb9a0329d33e16bf throw-error] | + | !style="text-align:left;"| [http://git.eclipse.org/c/orion/org.eclipse.orion.client.git/commit/?id=6e517847ef0742b090130748fb9a0329d33e16bf throw-error] |
| Warning | | Warning | ||
− | | 7.0 | + | |style="text-align:center;" | 7.0 |
| ''Throw an Error instead.'' | | ''Throw an Error instead.'' | ||
| Flags code that throws a non-Error, eg. <code>throw "a problem occurred";</code> | | Flags code that throws a non-Error, eg. <code>throw "a problem occurred";</code> |
Revision as of 13:55, 10 March 2015
Orion 5.0 moved to ESLint as the validator that ships with Orion. This page captures ongoing issues.
Contents
Rules
The following sections describe all of the rules currently available in Orion and ones that we plan to add in the future.
Potential Programming Problems
These rules report about problems with your code that might have undesired or incorrect results. Warnings from these rules should be addressed.
Rule | Default Severity | Available Since | Problem Message | Details |
---|---|---|---|---|
no-comma-dangle | Ignore | 8.0 | Trailing commas in object expressions are discouraged. | Flags trailing commas in object expressions. |
no-cond-assign | Error | 8.0 | Expected a conditional expression and instead saw an assignment. | Flags assignment in an if/while/do..while/for condition.
|
no-console | Error | 8.0 | Discouraged use of console in browser-based code. | Flags the use of console in browser-based code |
no-constant-condition | Error | 8.0 | Discouraged use of constant as a conditional expression. | Flags the use of a constant as a conditional expression |
no-debugger | Warning | 6.0 | debugger' statement use is discouraged. | Warns when the debugger keyword is used
|
no-dupe-keys | Error | 6.0 | Duplicate object key '{key}'. | Flags object literals that contain the same key more than once. |
no-empty-block | Warning | 7.0 | Empty block should be removed or commented. | Flags an empty block like if (something) { } .
|
no-extra-semi | Warning | 5.0 | Unnecessary semicolon. | Warns when a semi colon is found where it is not needed |
no-regex-spaces | Error | 8.0 | Avoid using multiple spaces in regular expressions. Use ' {${0}}' instead. | Flags regular expressions that have two or more subsequent spaces. |
no-reserved-keys | Error | 8.0 | Reserved words should not be used as property keys. | Checks to see if a JavaScript reserved word is being used as a property key |
no-sparse-arrays | Warning | 8.0 | Sparse array declarations should be avoided. | Flags sparse arrays with null elements like var arr = [1, ,2]
|
no-unreachable | Error | 6.0 | Unreachable code. | Flags statements that occur after a return , throw , etc.
|
use-isnan | Error | 6.0 | Use the isNaN function to compare with NaN. | Warns when a comparison is done against NaN without using the isNaN function
|
Best Practices
These rules are not necessarily problem with your code, but are warnings that you might be doing something you probably should not be.
Rule | Default Severity | Available Since | Problem Message | Details |
---|---|---|---|---|
block-scoped-var | Error | - | '{variable}' is already defined. |
|
curly | Ignore | 6.0 | Statements should be enclosed in braces. | Warns when statements should be enclosed in braces, for example if(something) foo();
|
eqeqeq | Warning | 5.0 |
|
Warns when == or != is used
|
missing-doc | Ignore | 5.0 | Missing documentation for function '{name}'. | Flags missing documentation nodes on function declarations and function expressions when they appear as object properties |
missing-doc-items | Ignore | - | Missing '{a}' tag for '{b}'. | Flags missing documentation for parameters, returns, throws, etc on function declarations and function expressions when they appear as object properties |
no-caller | Error | 9.0 | arguments.{callee, caller} is deprecated. | Flags references to arguments.callee and arguments.caller .
|
no-eval | Ignore | 6.0 | 'eval' function calls are discouraged. | Warns when the eval() function is used
|
no-fallthrough | Error | 6.0 | Switch case may be entered by falling through previous case. If intended, add a new comment //$FALL-THROUGH$ on the line above | Flags a fallthrough case within a switch statement, unless it is explicitly commented.
|
no-implied-eval | Ignore | 6.0 | Implicit 'eval' function calls are discouraged. | Flags calls to the string-argument form of setTimeout and setInterval , which implicitly perform eval . This rule logic was merged to be part of the no-eval rule.
|
no-iterator | Error | 8.0 | Discouraged __iterator__ property use. | Flags use of __iterator__ as an identifier name or property key.
|
no-new-array | Warning | 6.0 | Use the array literal notation []. | Flags new Array() .
|
no-new-func | Warning | 6.0 | The Function constructor is eval. | Flags new Function() .
|
no-new-object | Warning | 6.0 | Use the object literal notation {}. | Flags new Object() .
|
no-new-wrappers | Warning | 6.0 | Do not use {String, Number, Boolean, Math, JSON} as a constructor. | Flags new applied to any of those.
|
no-proto | Error | - |
|
Flags use of the property __proto__ as object keys or in assignments
|
no-redeclare | Warning | 5.0 | '{a}' is already defined. | Usually results from having two for loops in the same function that share a loop variable declaration like var i=... .
|
no-self-compare | Error | - | Comparing a value to itself has no effect. | Flags comparisons where the left- and right-hand sides are the same. |
no-shadow | Warning | 8.0 | '{a}' is already declared in the upper scope. | Flags variables that have the same name as a variable declared in an upper scope. |
no-shadow-global | Warning | 9.0 | '{a}' shadows a global member. | Flags variables that have the same name as a variable declared in the global scope or specified environments. |
no-undef | Error | 5.0 | '{variable}' is not defined. |
|
no-unused-params | Warning | 6.0 | Parameter '{param}' is not used. | Flags parameters in function declarations / expressions if they are not being used |
no-unused-vars | Warning | 5.0 |
|
Warns when a variable is created and not used (read) or a variable that is read-only is assigned to. |
no-use-before-define | Warning | 5.0 | '{a}' was used before it was defined. | Warns when a variable or function is used before it is defined |
no-with | Warning | - | Expected an identifier and instead saw 'with'. | Treated as fatal parse error in JSLint. |
radix | Warning | 8.0 | Missing radix parameter. | Warns when parseInt() called without the 2nd parameter (radix). |
throw-error | Warning | 7.0 | Throw an Error instead. | Flags code that throws a non-Error, eg. throw "a problem occurred";
|
Code Style
These rules are not problems in any way but will warn based on certain accepted styles for coding.
Rule | Default Severity | Available Since | Problem Message | Details |
---|---|---|---|---|
missing-nls | Ignore | - | Non externalized string literal '{a}'. | Flags String literals that are not properly NLS'd |
new-parens | Error | 6.0 | Missing parentheses invoking constructor. | Flags new Whatever
|
no-jslint | warning | 7.0 | The 'jslint' directive is unsupported, please use eslint-env. | Flags use of the /* jslint */ directive |
no-mixed-returns | Error | - | Mixed return types should be avoided. | Flags functions that return more than one kind of item, for example returning String and Object |
no-undef-init | Warning | - | It is not necessary to initialize '{variable}' to 'undefined'. | Warns when an explicit assignment to undefined is done, for example var foo = undefined;
|
semi | Warning | 5.0 | Missing semicolon. | Warns when a semicolon should be used but is not |
Implementing a new rule
This section explains how to implement a new linting rule. For brevity, all paths are given relative to bundles/org.eclipse.orion.client.javascript/web/ in the client repo.
First, create the tests and rule:
- Create a new test file for the rule at: /eslint/tests/lib/rules/{rule-name}.js.
- Link your test to the suite in /eslint/tests/load-tests.js.
- Implement the actual logic for your rule in /eslint/lib/load-rules-async.js.
At this point you should run the JS bundle tests and ensure your rule works as intended. To get your rule running in the Orion product's validator, there are additional steps:
- Create strings for the validation message(s) generated by your rule in /javascript/nls/root/problems.js.
- Create a short string describing what your rule does in /javascript/nls/root/messages.js.
- Add an entry to the orion.core.setting declaration in /javascript/plugins/javascriptPlugin.js. This allows your rule to be configured from the JS validator settings page. Make sure it references the same nameKey used in messages.js.
- Add a config entry for your rule to the default ESLint config object in /javascript/validator.js.
- Add your rule to the #updated() handler in /javascript/validator.js.
Reload the JS plugin, and your rule should now be configurable from the Settings page, and properly set up for translation too.
Tests
- Every rule needs extensive unit tests.
- Unit tests should use Mocha.
Running the tests
- To run the ESLint tests as part of the main JavaScript tests suite load {orion-server-url}/javascript/js-tests/JsMochaSuite.html in your web browser.
- To run just the ESLint rule tests, load {orion-server-url}/js-tests/javascript/JsMochaSuite.html?grep=ESLint%20Rule%20Tests in your browser.
- To run just the ESLint core tests, load {orion-server-url}/js-tests/javascript/JsMochaSuite.html?grep=ESLint%20Core%20Tests in your browser.
- To run only a subset of the tests, add ?grep=ESLint%20Rule%20Tests onto the test page URL.
See Mocha usage options for more options.
User interface
-
Should we have a UI for configuring what rules are active?bug 424268. - Should we try to support
.eslintrc
? This would be an ideal project-scope setting. -
Should we try to honor equivalent JSLint/JSHint flags when possible? For example/*jslint eqeqeq:false */
could disable the eqeqeq rule on a per-file basis.- ESLint now has its own syntax for this:
/*eslint ..*/
, which we are using instead.
- ESLint now has its own syntax for this:
i18n
We need to support i18n. Pre-req is bug 422278 (orion.edit.validator support for i18n).