防止在保存时自动格式化期间删除无效代码?

Prevent deleting dead code during Auto Format on Save?

允许文件在保存操作时自动格式化,但停止/禁用/防止VSCode删除死代码的神奇配置是什么?

有时我想故意在函数中间抛出一个异常,用于调试目的,但为了不被删除,我不得不注释掉所有后续代码。

更糟糕的是,有时我保存时,编辑器还没有从代码中的某个错误中恢复过来,认为代码仍然存在错误,导致删除代码,而这本来不应该发生的。我发现自己有太多次拉起 git 来恢复被错误删除的好代码。

是否有明确的“不删除死代码”选项可以打开?

更新:

  1. 运行 来自命令行的 Prettier(文件格式化程序)没有删除死代码。
  2. 尝试禁用所有扩展也无济于事。保存时死代码仍然被删除。

破案。

我无法确定导致它的确切包,但它似乎与 ESLintPrettier.

原来项目的 Github 存储库包含一个 .vscode 目录,其中 settings.json 包含以下配置:

{
  "editor.codeActionsOnSave": {
    "source.fixAll": true
  }
}

我已经看到帖子说要将 "source.fixAll": false 添加到 VSCode 的通用 settings.json 文件,但我这样做时没有效果。

将标志设置为 false 成功了

{
  "editor.codeActionsOnSave": {
    "source.fixAll": false
  }
}

注意:将上述块添加到常规 settings.json 也没有效果。我必须修改本地 .vscode/settings.json 文件才能使其正常工作。

我将在这里分享我在 Github 上找到的内容,

因此,如果您替换 codeActionsOnSave 并使用 eslint,它应该会阻止 vscode 从 运行 修复规则 eslint(no-unreachable) 并删除您的代码保存(可能是因为像 Prettier 这样的另一个格式化程序对其进行了修复)。

settings.json

{
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  }
}

"editor.formatOnSave": [bool] 没有必要。

同时检查您的工作区 settings.json 和您的用户 settings.json。

由于计算所有可能修复的复杂算法,您可能需要使用 "editor.codeActionsOnSaveTimeout": [number] (ms) 设置调整时间预算

{
  "editor.codeActionsOnSaveTimeout": 1200,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
}

来源:https://github.com/microsoft/vscode-eslint/issues/833