Skip to content

bug: phpcbf overwrites php-cs-fixer config with stats #289

Closed
@Rasmus-Bertell

Description

@Rasmus-Bertell

Neovim version (nvim -v)

0.9.5

Operating system/version

Archlinux 6.7.3-arch1-1

Add the debug logs

  • I have set log_level = vim.log.levels.DEBUG and pasted the log contents below.

Log file

14:16:10[DEBUG] Running formatters on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php: { "phpcbf", "php_cs_fixer", "typos", "trim_newlines", "trim_whitespace" }
14:16:10[INFO] Run phpcbf on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php
14:16:10[DEBUG] Run command: { "/home/rasmus/projects/wt-dev/vendor/bin/phpcbf", "-q", "--stdin-path=/home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php", "-" }
14:16:10[DEBUG] phpcbf exited with code 0
14:16:10[INFO] Run php_cs_fixer on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php
14:16:10[DEBUG] Creating temp file /home/rasmus/projects/wt-dev/.conform.2575698..php-cs-fixer.dist.php
14:16:10[DEBUG] Run command: { "/home/rasmus/projects/wt-dev/vendor/bin/php-cs-fixer", "fix", "/home/rasmus/projects/wt-dev/.conform.2575698..php-cs-fixer.dist.php" }
14:16:10[DEBUG] php_cs_fixer exited with code 0
14:16:10[DEBUG] Cleaning up temp file /home/rasmus/projects/wt-dev/.conform.2575698..php-cs-fixer.dist.php
14:16:10[INFO] Run typos on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php
14:16:10[DEBUG] Creating temp file /home/rasmus/projects/wt-dev/.conform.5625946..php-cs-fixer.dist.php
14:16:10[DEBUG] Run command: { "typos", "--write-changes", "--force-exclude", "/home/rasmus/projects/wt-dev/.conform.5625946..php-cs-fixer.dist.php" }
14:16:10[DEBUG] typos exited with code 0
14:16:10[DEBUG] Cleaning up temp file /home/rasmus/projects/wt-dev/.conform.5625946..php-cs-fixer.dist.php
14:16:10[INFO] Run trim_newlines on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php
14:16:10[DEBUG] Run command: { "awk", 'NF{print s $0; s=""; next} {s=s ORS}' }
14:16:10[DEBUG] trim_newlines exited with code 0
14:16:10[INFO] Run trim_whitespace on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php
14:16:10[DEBUG] Run command: { "awk", '{ sub(/[ \t]+$/, ""); print }' }
14:16:10[DEBUG] trim_whitespace exited with code 0
14:17:11[DEBUG] Running LSP formatter on /home/rasmus/.config/nvim/lua/plugins/conform-nvim/init.lua
14:17:11[DEBUG] Converting full-file LSP format to piecewise format
14:17:15[DEBUG] Running formatters on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php: { "phpcbf", "typos", "trim_newlines", "trim_whitespace" }
14:17:15[INFO] Run phpcbf on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php
14:17:15[DEBUG] Run command: { "/home/rasmus/projects/wt-dev/vendor/bin/phpcbf", "-q", "--stdin-path=/home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php", "-" }
14:17:15[DEBUG] phpcbf exited with code 0
14:17:15[INFO] Run typos on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php
14:17:15[DEBUG] Creating temp file /home/rasmus/projects/wt-dev/.conform.3044990..php-cs-fixer.dist.php
14:17:15[DEBUG] Run command: { "typos", "--write-changes", "--force-exclude", "/home/rasmus/projects/wt-dev/.conform.3044990..php-cs-fixer.dist.php" }
14:17:15[DEBUG] typos exited with code 0
14:17:15[DEBUG] Cleaning up temp file /home/rasmus/projects/wt-dev/.conform.3044990..php-cs-fixer.dist.php
14:17:15[INFO] Run trim_newlines on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php
14:17:15[DEBUG] Run command: { "awk", 'NF{print s $0; s=""; next} {s=s ORS}' }
14:17:15[DEBUG] trim_newlines exited with code 0
14:17:15[INFO] Run trim_whitespace on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php
14:17:15[DEBUG] Run command: { "awk", '{ sub(/[ \t]+$/, ""); print }' }
14:17:15[DEBUG] trim_whitespace exited with code 0
14:17:33[DEBUG] Running LSP formatter on /home/rasmus/.config/nvim/lua/plugins/conform-nvim/init.lua
14:17:37[DEBUG] Running formatters on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php: { "php_cs_fixer", "typos", "trim_newlines", "trim_whitespace" }
14:17:37[INFO] Run php_cs_fixer on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php
14:17:37[DEBUG] Creating temp file /home/rasmus/projects/wt-dev/.conform.7351072..php-cs-fixer.dist.php
14:17:37[DEBUG] Run command: { "/home/rasmus/projects/wt-dev/vendor/bin/php-cs-fixer", "fix", "/home/rasmus/projects/wt-dev/.conform.7351072..php-cs-fixer.dist.php" }
14:17:37[DEBUG] php_cs_fixer exited with code 0
14:17:37[DEBUG] Cleaning up temp file /home/rasmus/projects/wt-dev/.conform.7351072..php-cs-fixer.dist.php
14:17:37[INFO] Run typos on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php
14:17:37[DEBUG] Creating temp file /home/rasmus/projects/wt-dev/.conform.5358265..php-cs-fixer.dist.php
14:17:37[DEBUG] Run command: { "typos", "--write-changes", "--force-exclude", "/home/rasmus/projects/wt-dev/.conform.5358265..php-cs-fixer.dist.php" }
14:17:37[DEBUG] typos exited with code 0
14:17:37[DEBUG] Cleaning up temp file /home/rasmus/projects/wt-dev/.conform.5358265..php-cs-fixer.dist.php
14:17:37[INFO] Run trim_newlines on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php
14:17:37[DEBUG] Run command: { "awk", 'NF{print s $0; s=""; next} {s=s ORS}' }
14:17:38[DEBUG] trim_newlines exited with code 0
14:17:38[INFO] Run trim_whitespace on /home/rasmus/projects/wt-dev/.php-cs-fixer.dist.php
14:17:38[DEBUG] Run command: { "awk", '{ sub(/[ \t]+$/, ""); print }' }
14:17:38[DEBUG] trim_whitespace exited with code 0
14:18:15[DEBUG] Running LSP formatter on /home/rasmus/.config/nvim/lua/plugins/conform-nvim/init.lua
14:18:15[DEBUG] Converting full-file LSP format to piecewise format
14:22:35[DEBUG] Running formatters on /home/rasmus/projects/wt-dev/app/Models/Locale.php: { "phpcbf", "php_cs_fixer", "typos", "trim_newlines", "trim_whitespace" }
14:22:35[INFO] Run phpcbf on /home/rasmus/projects/wt-dev/app/Models/Locale.php
14:22:35[DEBUG] Run command: { "/home/rasmus/projects/wt-dev/vendor/bin/phpcbf", "-q", "--stdin-path=/home/rasmus/projects/wt-dev/app/Models/Locale.php", "-" }
14:22:35[DEBUG] phpcbf exited with code 1
14:22:35[INFO] Run php_cs_fixer on /home/rasmus/projects/wt-dev/app/Models/Locale.php
14:22:35[DEBUG] Creating temp file /home/rasmus/projects/wt-dev/app/Models/.conform.4922251.Locale.php
14:22:35[DEBUG] Run command: { "/home/rasmus/projects/wt-dev/vendor/bin/php-cs-fixer", "fix", "/home/rasmus/projects/wt-dev/app/Models/.conform.4922251.Locale.php" }
14:22:36[DEBUG] php_cs_fixer exited with code 0
14:22:36[DEBUG] Cleaning up temp file /home/rasmus/projects/wt-dev/app/Models/.conform.4922251.Locale.php
14:22:36[INFO] Run typos on /home/rasmus/projects/wt-dev/app/Models/Locale.php
14:22:36[DEBUG] Creating temp file /home/rasmus/projects/wt-dev/app/Models/.conform.4931772.Locale.php
14:22:36[DEBUG] Run command: { "typos", "--write-changes", "--force-exclude", "/home/rasmus/projects/wt-dev/app/Models/.conform.4931772.Locale.php" }
14:22:36[DEBUG] typos exited with code 0
14:22:36[DEBUG] Cleaning up temp file /home/rasmus/projects/wt-dev/app/Models/.conform.4931772.Locale.php
14:22:36[INFO] Run trim_newlines on /home/rasmus/projects/wt-dev/app/Models/Locale.php
14:22:36[DEBUG] Run command: { "awk", 'NF{print s $0; s=""; next} {s=s ORS}' }
14:22:36[DEBUG] trim_newlines exited with code 0
14:22:36[INFO] Run trim_whitespace on /home/rasmus/projects/wt-dev/app/Models/Locale.php
14:22:36[DEBUG] Run command: { "awk", '{ sub(/[ \t]+$/, ""); print }' }
14:22:36[DEBUG] trim_whitespace exited with code 0

Describe the bug

phpcbf formatter seems to overwrite the file whenever it runs successfully and for some reason the only file it seems to run successfully is .php-cs-fixer.dist.php.

It overwrites the file with


No fixable errors were found

Time: 22ms; Memory: 8MB

What is the severity of this bug?

breaking (some functionality is broken)

Steps To Reproduce

  1. nvim -u repro.lua .php-cs-fixer.dist.php
  2. :w

Expected Behavior

I expect it to format the file according to the rulesets I have defined or if no rulesets are defined by the defaults.

Minimal example file

.php-cs-fixer.dist.php (phpcbf exits with code 0 and overwrites)

<?php

declare(strict_types=1);

app/Models/Locale.php (phpcbf exits with code 1 and does nothing)

<?php

declare(strict_types=1);

Minimal init.lua

-- DO NOT change the paths and don't remove the colorscheme
local root = vim.fn.fnamemodify("./.repro", ":p")

-- set stdpaths to use .repro
for _, name in ipairs({ "config", "data", "state", "cache" }) do
  vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
end

-- bootstrap lazy
local lazypath = root .. "/plugins/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "--single-branch",
    "https://github.com/folke/lazy.nvim.git",
    lazypath,
  })
end
vim.opt.runtimepath:prepend(lazypath)

-- install plugins
local plugins = {
  "folke/tokyonight.nvim",
  {
    "stevearc/conform.nvim",
    config = function()
      require("conform").setup({
        log_level = vim.log.levels.DEBUG,
        formatters_by_ft = {
          php = { 'phpcbf', 'php_cs_fixer' },
          json = { 'jq' },
          ['*'] = { 'typos', 'trim_newlines', 'trim_whitespace' },
        },
        format_on_save = function()
          if not vim.g.enable_autoformat then return end

          return { timeout_ms = 500, lsp_fallback = true }
        end,
      })
    end,
    init = function()
      vim.g.enable_autoformat = true
      vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
    end,
  },
  -- add any other plugins here
}
require("lazy").setup(plugins, {
  root = root .. "/plugins",
})

vim.cmd.colorscheme("tokyonight")
-- add anything else here

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions