ikappas / vscode-phpcs

PHP CodeSniffer for Visual Studio Code
MIT License
128 stars 56 forks source link

Bug in lint method of the PhpcsLinter class #128

Open Blake-C opened 6 years ago

Blake-C commented 6 years ago

If a user has <arg name="basepath" value="./"/> in their phpcs.xml file the dictionary look up on line 216 will lookup the wrong file.

if (filePath !== undefined && semver.gte(this.executableVersion, '2.0.0')) {
    const fileRealPath = extfs.realpathSync(filePath);
    if (!data.files[fileRealPath]) {
        return [];
    }
    ({ messages } = data.files[fileRealPath]);
}

File path given with <arg name="basepath" value="./"/>:

screen shot 2018-09-01 at 11 17 04 pm

File path being looked up:

screen shot 2018-09-01 at 11 17 40 pm

Meta: VSCode: Version 1.26.1 (1.26.1) macOS: 10.13.6 High Sierra PHP CodeSniffer: 3.2.3 vscode-phpcs: 1.0.5

shadyvb commented 4 years ago

For the lazy, and until the associated PR is fixed, this is a one-liner to fix this based on @Blake-C PR in #129 :

curl https://gist.githubusercontent.com/shadyvb/585ff8666f55f206c7fdbd11cee128d5/raw/f48e3fee4ce4f4d264f20e76a7e64429811ca9d2/vscode-phpcs-ext-basepath-fix.patch | patch ~/.vscode/extensions/ikappas.phpcs-1.0.5/server/src/linter.js

The patch being applied can be viewed at https://gist.githubusercontent.com/shadyvb/585ff8666f55f206c7fdbd11cee128d5/raw/f48e3fee4ce4f4d264f20e76a7e64429811ca9d2/vscode-phpcs-ext-basepath-fix.patch, given the extension is saved to ~/.vscode/extensions

Thanks @Blake-C !