繁体   English   中英

如何让 Visual Studio Code 检查整个项目是否有错误?

[英]How to make Visual Studio Code check entire project for errors?

我正在使用 VS Code 进行 TypeScript/JavaScript 开发。 当我打开一个文件时,它会检查该文件是否有错误。 问题是如果我正在重构(比如我将一些共享代码移动到新位置或更改名称),它不会向我显示由此导致的错误,直到我打开有问题的文件。 ...因此,如果我想进行大量重构,我必须打开每个文件,让它扫描文件中的错误。

如何让 VS Code 扫描整个项目中的错误,而不必手动逐一打开每个文件?

VS Code (v1.44) 具有实验性功能,允许在 TS 中报告项目范围的错误 试试看:

// put this line in settings.json
"typescript.tsserver.experimental.enableProjectDiagnostics": true

弄清楚了。 请注意,此答案特定于我正在使用的 TypeScript。 这里是:

确保打字稿是全局安装的(我只是在本地安装了我的显然): npm install -g typescript

然后在 VS Code 中按Shift + Ctrl + B 如果您没有设置任务运行器,它会询问您想要什么。 我选择了打字稿,tasks.json 文件将如下所示:

{
    "version": "0.1.0",
    "command": "tsc",
    "isShellCommand": true,
    "args": ["-p", "."],
    "showOutput": "silent",
    "problemMatcher": "$tsc"
}

然后按Shift + Ctrl + B (或 macOS 中的Shift + Command + B )将检查整个项目是否存在问题,它们将在您的“问题”面板中报告。

如果不想全局安装 TypeScript,可以执行以下操作:

  1. 在项目本地安装 TypeScript,即yarn add --dev typescriptnpm install --save-dev typescript

  2. 将 check-types 运行脚本添加到./package.json --noEmit意味着编译器不会生成任何 JavaScript 文件。

{
  "scripts": {
    "check-types": "tsc --noEmit"
  }
}
  1. 让VSCode了解在运行脚本/.vscode/tasks.json
{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "npm",
      "script": "check-types",
      "problemMatcher": [
        "$tsc"
      ]
    }
  ]
}
  1. 要运行任务,请按 F1 键并选择“运行任务”,然后选择“npm: check-types”。

  2. 如果您将以下几行添加到任务中,按Ctrl+B将运行它。

    "group": { "kind": "build", "isDefault": true }

对于最新版本tasks.json这是正确的 json,遵循版本 1.14 中的弃用。 将其创建为/.vscode/tasks.json

{
    "version": "2.0.0",
    "command": "tsc",
    "type": "shell",
    "args": [
        "-p",
        "."
    ],
    "presentation": {
        "reveal": "silent"
    },
    "problemMatcher": "$tsc"
}

在 vs code 中打开项目后,打开 vs code 终端并运行:

node_modules/.bin/tsc --noEmit
  1. Go 查看菜单 > 扩展并确保安装了Microsoft VS Code ESLint 扩展
  2. 在设置中,搜索“ESLint > Lint 任务:启用”,并启用该设置 ( docs )。
  3. 在终端菜单中,选择 Run Task… > eslint: lint whole folder

其他解决方案都不适合我。 这是一个tasks.json ,它与 vscode 1.67+ 一起使用。 在 Linux 等上将命令设置为tsc ,在 Windows 上确保运行tsc.cmd ,因为单独的tsc将尝试运行 bash 脚本并产生以下错误:

The terminal process failed to launch: A native exception occurred during launch (Cannot create process, error code: 193)

"revealProblems": "always"presentation部分显示问题面板完成。

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "tsc: error check project",
      "command": "tsc.cmd",
      "args": [
        "-p",
        ".",
        "--noEmit"
      ],
      "isBackground": false,
      "problemMatcher": "$tsc",
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "presentation": {
        "revealProblems": "always",
      }
    }
  ]
}

它不是你所要求的 100%,但或者你可以在控制台中运行tsc并且所有错误都将在那里打印。 对我有用。

编辑:自从更新到 1.52.0 这不再有效。 它将用您选择的内容替换当前的项目文件...

===

我已经尝试了我能找到的所有解决方案,我认为可以肯定地说答案是:你不能*

我发现的最好的仍然是技术上手动打开每个文件,但至少它不是一个一个:

  1. 您不能拖/放目录,但可以选择多个文件(包括目录)并拖/放。 这些目录将被忽略,您选择的任何文件都将在选项卡中打开。
  2. 接下来,您需要为每个选项卡设置焦点,以便触发 eslint 运行。 (按住下一个选项卡键盘快捷键有效。)

这太可怕了,我恳求有人证明我是错的。

*我还没有找到一种与手动打开文件一样有效的方法。 每种方法——实验性 vscode 功能和 tsc 任务——都有其自身的缺点。 vscode 功能显然是解决方案,但无法忽略 node_modules 等。使用起来太痛苦了。

更新
我在下面的回答没有回答最初的问题,但如果你像我一样发现这个线程在 VSCode 中搜索如何打开// @ts-check project-wide 这样你就不需要添加// @ts-check到每个文件然后我下面的答案就是你所需要的。 我已经搜索并搜索并一直将此线程作为我的最佳结果,所以希望这也能帮助其他人


我使用的是 vscode 1.52.1 版,答案在 vscode 网站上非常简单且正确:

https://code.visualstudio.com/docs/nodejs/working-with-javascript#_type-checking-javascript

向下滚动到“使用 jsconfig 或 tsconfig ”部分

在你的项目根目录中添加一个 jsconfig.json 并添加"checkJs": true

{
  "compilerOptions": {
    "checkJs": true
  },
  "exclude": ["node_modules", "**/node_modules/*"]
}

添加后可能需要重新启动 vscode

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM