Repository: eslint/eslint
Pull request #10706 (2018-07-30 17:26:01)

Docs: remove links to terminated jscs.info domain
<!--
    ESLint adheres to the [JS Foundation Code of Conduct](https://js.foundation/community/code-of-conduct).
-->

**What is the purpose of this pull request? (put an "X" next to item)**

[X] Documentation update
[ ] Bug fix ([template](https://raw.githubusercontent.com/eslint/eslint/master/templates/bug-report.md))
[ ] New rule ([template](https://raw.githubusercontent.com/eslint/eslint/master/templates/rule-proposal.md))
[ ] Changes an existing rule ([template](https://raw.githubusercontent.com/eslint/eslint/master/templates/rule-change-proposal.md))
[ ] Add autofixing to a rule
[ ] Add a CLI option
[ ] Add something to the core
[ ] Other, please explain:

<!--
    If the item you've checked above has a template, please paste the template questions below and answer them. (If this pull request is addressing an issue, you can just paste a link to the issue here instead.)
-->

<!--
    Please ensure your pull request is ready:

    - Read the pull request guide (https://eslint.org/docs/developer-guide/contributing/pull-requests)
    - Include tests for this change
    - Update documentation for this change (if appropriate)
-->

<!--
    The following is required for all pull requests:
-->

**What changes did you make? (Give an overview)**

I removed links to `jscs.info` domain, as they all lead to a site with info

```
The domain jscs.info is for sale. To purchase, call BuyDomains.com at 781-373-6841 or 844-896-7299. Click here for more details.
```

**Is there anything you'd like reviewers to focus on?**

Nope

jsf-clabot: [![CLA assistant check](https://cla.js.foundation/pull/badge/not_signed)](https://cla.js.foundation/eslint/eslint?pullRequest=10706) <br/>Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our [Contributor License Agreement](https://cla.js.foundation/eslint/eslint?pullRequest=10706) before we can accept your contribution.<br/>

Patch:
diff --git a/docs/rules/array-bracket-newline.md b/docs/rules/array-bracket-newline.md
index 72e0041d8..fd5236076 100644
--- a/docs/rules/array-bracket-newline.md
+++ b/docs/rules/array-bracket-newline.md
@@ -274,7 +274,7 @@ If you don't want to enforce line breaks after opening and before closing array
 
 ## Compatibility
 
-* **JSCS:** [validateNewlineAfterArrayElements](http://jscs.info/rule/validateNewlineAfterArrayElements)
+* **JSCS:** `validateNewlineAfterArrayElements`
 
 ## Related Rules
 
diff --git a/docs/rules/array-element-newline.md b/docs/rules/array-element-newline.md
index 6a3a66e1d..0d8ec82cd 100644
--- a/docs/rules/array-element-newline.md
+++ b/docs/rules/array-element-newline.md
@@ -290,7 +290,7 @@ If you don't want to enforce linebreaks between array elements, don't enable thi
 
 ## Compatibility
 
-* **JSCS:** [validateNewlineAfterArrayElements](http://jscs.info/rule/validateNewlineAfterArrayElements)
+* **JSCS:** `validateNewlineAfterArrayElements`
 
 ## Related Rules
 
diff --git a/docs/rules/capitalized-comments.md b/docs/rules/capitalized-comments.md
index 70078fc97..9861db7e8 100644
--- a/docs/rules/capitalized-comments.md
+++ b/docs/rules/capitalized-comments.md
@@ -245,4 +245,5 @@ This rule can be disabled if you do not care about the grammatical style of comm
 
 ## Compatibility
 
-* **JSCS**: [requireCapitalizedComments](http://jscs.info/rule/requireCapitalizedComments) and [disallowCapitalizedComments](http://jscs.info/rule/disallowCapitalizedComments)
+* **JSCS**: `requireCapitalizedComments`
+* **JSCS**: `disallowCapitalizedComments`
diff --git a/docs/rules/func-call-spacing.md b/docs/rules/func-call-spacing.md
index b97c95d70..0469998c0 100644
--- a/docs/rules/func-call-spacing.md
+++ b/docs/rules/func-call-spacing.md
@@ -101,5 +101,5 @@ This rule can safely be turned off if your project does not care about enforcing
 
 ## Compatibility
 
-- **JSCS**: [disallowSpacesInCallExpression](http://jscs.info/rule/disallowSpacesInCallExpression)
-- **JSCS**: [requireSpacesInCallExpression](http://jscs.info/rule/requireSpacesInCallExpression)
+- **JSCS**: `disallowSpacesInCallExpression`
+- **JSCS**: `requireSpacesInCallExpression`
diff --git a/docs/rules/func-name-matching.md b/docs/rules/func-name-matching.md
index 4d502869c..58c4c4ba9 100644
--- a/docs/rules/func-name-matching.md
+++ b/docs/rules/func-name-matching.md
@@ -137,4 +137,4 @@ Do not use this rule if you want to allow named functions to have different name
 
 ## Compatibility
 
-* **JSCS**: [requireMatchingFunctionName](http://jscs.info/rule/requireMatchingFunctionName)
+* **JSCS**: `requireMatchingFunctionName`
diff --git a/docs/rules/func-names.md b/docs/rules/func-names.md
index 758abc13f..0e17faea2 100644
--- a/docs/rules/func-names.md
+++ b/docs/rules/func-names.md
@@ -107,5 +107,5 @@ Foo.prototype.bar = function() {};
 
 ## Compatibility
 
-* **JSCS**: [requireAnonymousFunctions](http://jscs.info/rule/requireAnonymousFunctions)
-* **JSCS**: [disallowAnonymousFunctions](http://jscs.info/rule/disallowAnonymousFunctions)
+* **JSCS**: `requireAnonymousFunctions`
+* **JSCS**: `disallowAnonymousFunctions`
diff --git a/docs/rules/indent-legacy.md b/docs/rules/indent-legacy.md
index 28208de5d..e866fbf80 100644
--- a/docs/rules/indent-legacy.md
+++ b/docs/rules/indent-legacy.md
@@ -530,4 +530,4 @@ var foo = { bar: 1,
 ## Compatibility
 
 * **JSHint**: `indent`
-* **JSCS**: [validateIndentation](http://jscs.info/rule/validateIndentation)
+* **JSCS**: `validateIndentation`
diff --git a/docs/rules/indent.md b/docs/rules/indent.md
index 37dcabbd3..24e16a972 100644
--- a/docs/rules/indent.md
+++ b/docs/rules/indent.md
@@ -661,4 +661,4 @@ if (foo) {
 ## Compatibility
 
 * **JSHint**: `indent`
-* **JSCS**: [validateIndentation](http://jscs.info/rule/validateIndentation)
+* **JSCS**: `validateIndentation`
diff --git a/docs/rules/line-comment-position.md b/docs/rules/line-comment-position.md
index 63561c831..993abc02c 100644
--- a/docs/rules/line-comment-position.md
+++ b/docs/rules/line-comment-position.md
@@ -103,4 +103,4 @@ If you aren't concerned about having different line comment styles, then you can
 
 ## Compatibility
 
-**JSCS**: [validateCommentPosition](http://jscs.info/rule/validateCommentPosition)
+**JSCS**: `validateCommentPosition`
diff --git a/docs/rules/linebreak-style.md b/docs/rules/linebreak-style.md
index 96f6c9f50..f8c2a05bd 100644
--- a/docs/rules/linebreak-style.md
+++ b/docs/rules/linebreak-style.md
@@ -83,4 +83,4 @@ If you aren't concerned about having different line endings within your code, th
 
 ## Compatibility
 
-* **JSCS**: [validateLineBreaks](http://jscs.info/rule/validateLineBreaks)
+* **JSCS**: `validateLineBreaks`
diff --git a/docs/rules/lines-around-directive.md b/docs/rules/lines-around-directive.md
index 3f9890bc4..eebf6d3c9 100644
--- a/docs/rules/lines-around-directive.md
+++ b/docs/rules/lines-around-directive.md
@@ -318,5 +318,5 @@ You can safely disable this rule if you do not have any strict conventions about
 
 ## Compatibility
 
-* **JSCS**: [requirePaddingNewLinesAfterUseStrict](http://jscs.info/rule/requirePaddingNewLinesAfterUseStrict)
-* **JSCS**: [disallowPaddingNewLinesAfterUseStrict](http://jscs.info/rule/disallowPaddingNewLinesAfterUseStrict)
+* **JSCS**: `requirePaddingNewLinesAfterUseStrict`
+* **JSCS**: `disallowPaddingNewLinesAfterUseStrict`
diff --git a/docs/rules/lines-between-class-members.md b/docs/rules/lines-between-class-members.md
index e0429fdf8..a287f997e 100644
--- a/docs/rules/lines-between-class-members.md
+++ b/docs/rules/lines-between-class-members.md
@@ -103,5 +103,8 @@ If you don't want to enforce empty lines between class members, you can disable
 
 * [padded-blocks](padded-blocks.md)
 * [padding-line-between-statements](padding-line-between-statements.md)
-* [requirePaddingNewLinesAfterBlocks](http://jscs.info/rule/requirePaddingNewLinesAfterBlocks)
-* [disallowPaddingNewLinesAfterBlocks](http://jscs.info/rule/disallowPaddingNewLinesAfterBlocks)
+
+## Compatibility
+
+* **JSCS**: `requirePaddingNewLinesAfterBlocks`
+* **JSCS**: `disallowPaddingNewLinesAfterBlocks`
diff --git a/docs/rules/max-lines.md b/docs/rules/max-lines.md
index 097804570..648852630 100644
--- a/docs/rules/max-lines.md
+++ b/docs/rules/max-lines.md
@@ -123,4 +123,4 @@ You can turn this rule off if you are not concerned with the number of lines in
 
 ## Compatibility
 
-* **JSCS**: [maximumNumberOfLines](http://jscs.info/rule/maximumNumberOfLines)
+* **JSCS**: `maximumNumberOfLines`
diff --git a/docs/rules/multiline-ternary.md b/docs/rules/multiline-ternary.md
index 0cb94643a..a1a8446bc 100644
--- a/docs/rules/multiline-ternary.md
+++ b/docs/rules/multiline-ternary.md
@@ -146,4 +146,4 @@ You can safely disable this rule if you do not have any strict conventions about
 
 ## Compatibility
 
-* **JSCS**: [requireMultiLineTernary](http://jscs.info/rule/requireMultiLineTernary)
+* **JSCS**: `requireMultiLineTernary`
diff --git a/docs/rules/no-tabs.md b/docs/rules/no-tabs.md
index 57921aa31..2ad52bb3e 100644
--- a/docs/rules/no-tabs.md
+++ b/docs/rules/no-tabs.md
@@ -38,4 +38,4 @@ If you have established a standard where having tabs is fine.
 
 ## Compatibility
 
-* **JSCS**: [disallowTabs](http://jscs.info/rule/disallowTabs)
+* **JSCS**: `disallowTabs`
diff --git a/docs/rules/no-useless-rename.md b/docs/rules/no-useless-rename.md
index f765fb390..d4f781582 100644
--- a/docs/rules/no-useless-rename.md
+++ b/docs/rules/no-useless-rename.md
@@ -117,4 +117,4 @@ You can safely disable this rule if you do not care about redundantly renaming i
 
 ## Compatibility
 
-* **JSCS**: [disallowIdenticalDestructuringNames](http://jscs.info/rule/disallowIdenticalDestructuringNames)
+* **JSCS**: `disallowIdenticalDestructuringNames`
diff --git a/docs/rules/nonblock-statement-body-position.md b/docs/rules/nonblock-statement-body-position.md
index 0a05d2945..3e05cce86 100644
--- a/docs/rules/nonblock-statement-body-position.md
+++ b/docs/rules/nonblock-statement-body-position.md
@@ -155,4 +155,4 @@ If you're not concerned about consistent locations of single-line statements, yo
 
 ## Further Reading
 
-* JSCS: [requireNewlineBeforeSingleStatementsInIf](http://jscs.info/rule/requireNewlineBeforeSingleStatementsInIf)
+* JSCS: `requireNewlineBeforeSingleStatementsInIf`
diff --git a/docs/rules/object-curly-newline.md b/docs/rules/object-curly-newline.md
index d62fdf996..6b99f72e7 100644
--- a/docs/rules/object-curly-newline.md
+++ b/docs/rules/object-curly-newline.md
@@ -511,7 +511,8 @@ export { foo as f, bar } from 'foo-bar';
 
 ## Compatibility
 
-* **JSCS**: [requirePaddingNewLinesInObjects](http://jscs.info/rule/requirePaddingNewLinesInObjects) and [disallowPaddingNewLinesInObjects](http://jscs.info/rule/disallowPaddingNewLinesInObjects)
+* **JSCS**: `requirePaddingNewLinesInObjects`
+* **JSCS**: `disallowPaddingNewLinesInObjects`
 
 ## When Not To Use It
 
diff --git a/docs/rules/object-property-newline.md b/docs/rules/object-property-newline.md
index 15d8ee0a0..963d6ee26 100644
--- a/docs/rules/object-property-newline.md
+++ b/docs/rules/object-property-newline.md
@@ -260,7 +260,7 @@ You can turn this rule off if you want to decide, case-by-case, whether to place
 
 ## Compatibility
 
-- **JSCS**: This rule provides partial compatibility with [requireObjectKeysOnNewLine](http://jscs.info/rule/requireObjectKeysOnNewLine).
+- **JSCS**: This rule provides partial compatibility with `requireObjectKeysOnNewLine`.
 
 ## Related Rules
 
diff --git a/docs/rules/one-var.md b/docs/rules/one-var.md
index 53851ab5b..447346d71 100644
--- a/docs/rules/one-var.md
+++ b/docs/rules/one-var.md
@@ -536,5 +536,5 @@ function foo() {
 ## Compatibility
 
 * **JSHint**: This rule maps to the `onevar` JSHint rule, but allows `let` and `const` to be configured separately.
-* **JSCS**: This rule roughly maps to [disallowMultipleVarDecl](http://jscs.info/rule/disallowMultipleVarDecl).
-* **JSCS**: This rule option `separateRequires` roughly maps to [requireMultipleVarDecl](http://jscs.info/rule/requireMultipleVarDecl).
+* **JSCS**: This rule roughly maps to `disallowMultipleVarDecl`.
+* **JSCS**: This rule option `separateRequires` roughly maps to `requireMultipleVarDecl`.
diff --git a/docs/rules/prefer-numeric-literals.md b/docs/rules/prefer-numeric-literals.md
index 965fd529b..13bc7a716 100644
--- a/docs/rules/prefer-numeric-literals.md
+++ b/docs/rules/prefer-numeric-literals.md
@@ -53,4 +53,4 @@ If you want to allow use of `parseInt()` or `Number.parseInt()` for binary, octa
 
 ## Compatibility
 
-* **JSCS**: [requireNumericLiterals](http://jscs.info/rule/requireNumericLiterals)
+* **JSCS**: `requireNumericLiterals`
diff --git a/docs/rules/sort-keys.md b/docs/rules/sort-keys.md
index d3f135a9e..5370210b7 100644
--- a/docs/rules/sort-keys.md
+++ b/docs/rules/sort-keys.md
@@ -178,4 +178,4 @@ If you don't want to notify about properties' order, then it's safe to disable t
 
 ## Compatibility
 
-* **JSCS:** [validateOrderInObjectKeys](http://jscs.info/rule/validateOrderInObjectKeys)
+* **JSCS:** `validateOrderInObjectKeys`
diff --git a/lib/cli-engine.js b/lib/cli-engine.js
index b0856bd8d..5f64a7a6d 100644
--- a/lib/cli-engine.js
+++ b/lib/cli-engine.js
@@ -518,18 +518,18 @@ class CLIEngine {
             }
 
             if (options.cache) {
-
-                /*
-                 * get the descriptor for this file
-                 * with the metadata and the flag that determines if
-                 * the file has changed
-                 */
                 const cachedLintResults = lintResultCache.getCachedLintResults(fileInfo.filename);
 
                 if (cachedLintResults) {
-                    debug(`Skipping file since it hasn't changed: ${fileInfo.filename}`);
+                    const resultHadMessages = cachedLintResults.messages && cachedLintResults.messages.length;
+
+                    if (resultHadMessages && options.fix) {
+                        debug(`Reprocessing cached file to allow autofix: ${fileInfo.filename}`);
+                    } else {
+                        debug(`Skipping file since it hasn't changed: ${fileInfo.filename}`);
 
-                    return cachedLintResults;
+                        return cachedLintResults;
+                    }
                 }
             }
 


Test patch:
diff --git a/tests/lib/cli-engine.js b/tests/lib/cli-engine.js
index 7643a241d..cac7671b1 100644
--- a/tests/lib/cli-engine.js
+++ b/tests/lib/cli-engine.js
@@ -1473,6 +1473,31 @@ describe("CLIEngine", () => {
                 });
             });
 
+            it("should run autofix even if files are cached without autofix results", () => {
+                const baseOptions = {
+                    cwd: path.join(fixtureDir, ".."),
+                    useEslintrc: false,
+                    rules: {
+                        semi: 2,
+                        quotes: [2, "double"],
+                        eqeqeq: 2,
+                        "no-undef": 2,
+                        "space-infix-ops": 2
+                    }
+                };
+
+                engine = new CLIEngine(Object.assign({}, baseOptions, { cache: true, fix: false }));
+
+                // Do initial lint run and populate the cache file
+                engine.executeOnFiles([path.resolve(fixtureDir, `${fixtureDir}/fixmode`)]);
+
+                engine = new CLIEngine(Object.assign({}, baseOptions, { cache: true, fix: true }));
+
+                const report = engine.executeOnFiles([path.resolve(fixtureDir, `${fixtureDir}/fixmode`)]);
+
+                assert.ok(report.results.some(result => result.output));
+            });
+
         });
 
         // These tests have to do with https://github.com/eslint/eslint/issues/963