簡體   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