Skip to content

Extension does not work with php-vs-fixer v3.88.1 and above #229

@MoritzLost

Description

@MoritzLost

When formatting any PHP file that is in any directory except the project root, the formatter doesn't work and throws an error. In the output tab, I can see the error:

In ComposerJsonReader.php line 69:
                                        
  Failed to read file "composer.json".  

I think the problem is the introduction of @auto rulesets in php-cs-fixer v3.88.0. Though the problem only manifests in 3.88.1 and above, looks like this one turned on the @auto ruleset by default.

This feature tries to read the composer.json in my project to determine some rules dynamically. The problem is that the extension seems to always set the cwd to the directory of the file being edited:

runAsync: spawn /Users/moritz/projects/myproject/vendor/bin/php-cs-fixer
[
  "fix",
  "--using-cache=no",
  "--format=json",
  "--config=/Users/moritz/projects/myproject/.php-cs-fixer.php",
  "--path-mode=override",
  "/var/folders/t7/y6pmk9ts1hj4pkbl4msm10mw0000gn/T/pcf-tmp0.8335527005692916/SiteModule.php"
]
{
  "cwd": "/Users/moritz/projects/myproject/modules/Site",
  "shell": false
}

In the case above, I'm formatting a file modules/Site/SiteModule.php. The cwd is set to /Users/moritz/projects/myproject/modules/Site. Looks like the ComposerJsonReader just tries to read the composer.json from the current working directory: https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/src/ComposerJsonReader.php#L62-L78

This fails, so we get an error.

I think to fix this, the extension needs to always set the working directory to the project/workspace root, instead of the path of the file being formatted.

I haven't found a workaround except downgrading. I've tried setting @auto and @auto:risky to false in my .php-cs-fixer.php config, but that doesn't help.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions