mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-29 10:12:41 +01:00
Check both UNIX- and Windows-style paths from linter output
Summary: Paths are passed into linters using UNIX-style slashes (/), as returned from the version control system; however, `Filesystem::readablePath` swaps them to Windows-style (\) on Windows when storing the names of the files with lint messages. This causes no lint message's path to match the set of changed files, and thus no lint warnings are ever produced. If a lint message's file is not found using the provided filename, also try looking up the UNIX-style filename, on Windows when determining if a lint mesage is "relevant." Fixes T11248. Test Plan: Ran `arc lint` on Windows. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley, #blessed_reviewers Subscribers: epriestley Maniphest Tasks: T11248 Differential Revision: https://secure.phabricator.com/D16579
This commit is contained in:
parent
9e82ef979e
commit
483e985d08
1 changed files with 12 additions and 1 deletions
|
@ -342,9 +342,20 @@ abstract class ArcanistLintEngine extends Phobject {
|
|||
foreach ($locations as $location) {
|
||||
$path = idx($location, 'path', $message->getPath());
|
||||
|
||||
if (!array_key_exists($path, $this->changedLines)) {
|
||||
if (phutil_is_windows()) {
|
||||
// We try checking the UNIX path form as well, on Windows. Linters
|
||||
// store noramlized paths, which use the Windows-style "\" as a
|
||||
// delimiter; as such, they don't match the UNIX-style paths stored
|
||||
// in changedLines, which come from the VCS.
|
||||
$path = str_replace('\\', '/', $path);
|
||||
if (!array_key_exists($path, $this->changedLines)) {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$changed = $this->getPathChangedLines($path);
|
||||
|
||||
|
|
Loading…
Reference in a new issue