From 888ada2f380cb951d6fd3e94d1087643527f381b Mon Sep 17 00:00:00 2001 From: Joshua Spence Date: Thu, 25 Sep 2014 07:13:10 +1000 Subject: [PATCH] Improve `LINT_DOS_NEWLINE` behavior Summary: Improve the behavior of `ArcanistTextLinter` in dealing with `LINT_DOS_NEWLINE`. In particular, provide replacement text so that these linter issues can be autofixed. Test Plan: Added a unit test. Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: epriestley, Korvin Differential Revision: https://secure.phabricator.com/D10472 --- src/lint/linter/ArcanistTextLinter.php | 10 +++++++--- src/lint/linter/__tests__/text/dos-newline.lint-test | 7 +++++++ 2 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 src/lint/linter/__tests__/text/dos-newline.lint-test diff --git a/src/lint/linter/ArcanistTextLinter.php b/src/lint/linter/ArcanistTextLinter.php index f7d8206d..e1b9f6c2 100644 --- a/src/lint/linter/ArcanistTextLinter.php +++ b/src/lint/linter/ArcanistTextLinter.php @@ -123,13 +123,17 @@ final class ArcanistTextLinter extends ArcanistLinter { } protected function lintNewlines($path) { - $pos = strpos($this->getData($path), "\r"); + $data = $this->getData($path); + $pos = strpos($this->getData($path), "\r"); + if ($pos !== false) { $this->raiseLintAtOffset( - $pos, + 0, self::LINT_DOS_NEWLINE, pht('You must use ONLY Unix linebreaks ("%s") in source code.', '\n'), - "\r"); + $data, + str_replace("\r\n", "\n", $data)); + if ($this->isMessageEnabled(self::LINT_DOS_NEWLINE)) { $this->stopAllLinters(); } diff --git a/src/lint/linter/__tests__/text/dos-newline.lint-test b/src/lint/linter/__tests__/text/dos-newline.lint-test new file mode 100644 index 00000000..5ff143d0 --- /dev/null +++ b/src/lint/linter/__tests__/text/dos-newline.lint-test @@ -0,0 +1,7 @@ +The quick brown fox +jumps over the lazy dog. +~~~~~~~~~~ +error:1:1 +~~~~~~~~~~ +The quick brown fox +jumps over the lazy dog.