microsoft / microsoft/vscode-cpptools

Incomplete presentation of warnings in editor when build tasks are set to use 'shared' panels, reveal policy 'silent'.

Aperta
#11,950 1 commento 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Language Service tasks/build/debug
Lingua principale
TypeScript
Stelle
6.2k
Fork
1.7k
Merge medio
14h 46m
PR unite (30g)
61

Descrizione

Environment
  • OS and Version: Windows_NT x64 10.0.19045
  • VS Code Version: 1.86.1 (system setup)
  • C/C++ Extension Version: v1.18.5, also reproduced in many early versions, like v1.12.4.
  • If using SSH remote, specify OS of remote machine: Ubuntu 23.10. ONLY REPRODUCED VIA SSH REMOTE, not locally.
  • GCC Version: 13.2.0 (Ubuntu 13.2.0-4ubuntu3)
Bug Summary and Steps to Reproduce
Bug Summary

When I compile C++ code on remote machines (connected through 'Remote - SSH') multiple times, warnings thrown by GCC could not be displayed properly in editor. As number of times I compile the same piece of code increases, warnings shown correctly in editor vanish one by one.

Steps to reproduce
  1. Connect to a remote Ubuntu machine with 'C/C++' extension installed via 'Remote - SSH'.
  2. Insert the following content in .vscode/tasks.json:
{
	"version": "2.0.0",
	"tasks": [
		{
			"label": "sysGCC Compile - Debug",
			"type": "cppbuild",
			"command": "g++",
			"args": [
				"${file}",
				"-o",
				"${fileBasenameNoExtension}",
				"-Wall",
				"-Wconversion",
				"-Wshadow",
				"-Wextra",
				"-g",
				"-std=c++14"
			],
			"presentation": {
				"echo": true,
				"reveal": "silent",
				"focus": false,
				"panel": "shared",
				"showReuseMessage": false,
				"clear": true
			},
			"options": {
				"cwd": "${fileDirname}"
			}
		}
	]
}
  1. Add a new C++ source file. Here is an example. Its content doesn't matter — one may replace it with some other code that also triggers many warnings, but no errors.
  2. Run task 'sysGCC Compile - Debug' multiple times. Do not open the panel, as we set presention > reveal policy as silent. Pay attention to warnings shown in the editor at the first time the file is compiled. Then run the task again for a couple of times. Each time, only a subset of warnings shown are preserved; the others disappeared.
  3. Open the panel, take a look at the warnings thrown by GCC, output to shell. One may find that only a subset of them are shown in the editor.
  4. Press any key to terminate the shell, close the panel and run the task again. All warnings are shown correctly. One may goto step 4 and repeat the process above.
  5. Edit .vscode/tasks.json, replace section presentation with
"presentation": {
	"echo": true,
	"reveal": "always",
	"focus": false,
	"panel": "shared",
	"showReuseMessage": false,
	"clear": true
}

or whatever configuration that does not use a shared, unrevealed panel, for instance

"presentation": {
	"echo": true,
	"reveal": "silent",
	"focus": false,
	"panel": "new",
	"showReuseMessage": false,
	"clear": true
}
  1. Now run the task multiple times. The issue does not occur anymore.

This bug could not be reproduced on my local environments, neither on Windows 10 nor Ubuntu 23.10.

Expected behavior

Show all warnings correctly in editor, no matter how section presentation of a task is configured.

Configuration and Logs
c_cpp_properties.json
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c17",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

C/C++: Log Diagnostics
-------- Diagnostics - 2024/2/10 23:35:36
Version: 1.18.5
Current Configuration:
{
    "name": "Linux",
    "includePath": [
        "/Documents/OI/temp/**"
    ],
    "defines": [],
    "compilerPath": "/usr/bin/gcc",
    "cStandard": "c17",
    "cppStandard": "gnu++17",
    "intelliSenseMode": "linux-gcc-x64",
    "compilerPathIsExplicit": true,
    "cStandardIsExplicit": true,
    "cppStandardIsExplicit": true,
    "intelliSenseModeIsExplicit": true,
    "compilerPathInCppPropertiesJson": "/usr/bin/gcc",
    "mergeConfigurations": false,
    "browse": {
        "path": [
            "/Documents/OI/temp/**",
            "${workspaceFolder}"
        ],
        "limitSymbolsToIncludedHeaders": true
    }
}
cpptools version (native): 1.18.3.0
Translation Unit Mappings:
[ /Documents/OI/temp/a.cpp ]:
    /Documents/OI/temp/a.cpp
Translation Unit Configurations:
[ /Documents/OI/temp/a.cpp ]:
    Process ID: 213821
    Memory Usage: 235 MB
    Compiler Path: /usr/bin/gcc
    Includes:
        /usr/include/c++/13
        /usr/include/x86_64-linux-gnu/c++/13
        /usr/include/c++/13/backward
        /usr/lib/gcc/x86_64-linux-gnu/13/include
        /usr/local/include
        /usr/include/x86_64-linux-gnu
        /usr/include
    Standard Version: c++17
    IntelliSense Mode: linux-gcc-x64
    Other Flags:
        --g++
        --gnu_version=130200
Total Memory Usage: 235 MB

------- Workspace parsing diagnostics -------
Number of files discovered (not excluded): 3795

Logs from the language server logging
LSP: (received) textDocument/hover: file:///Documents/OI/temp/a.cpp (id: 182)
LSP: (invoked) textDocument/hover: file:///Documents/OI/temp/a.cpp (id: 182)
LSP: (received) textDocument/documentHighlight: file:///Documents/OI/temp/a.cpp (id: 183)
LSP: (invoked) textDocument/documentHighlight: file:///Documents/OI/temp/a.cpp (id: 183)
LSP: (received) cpptools/textEditorSelectionChange
LSP: (invoked) cpptools/textEditorSelectionChange
LSP: (received) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 184)
LSP: (invoked) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 184)
LSP: (received) cpptools/pauseCodeAnalysis
LSP: (invoked) cpptools/pauseCodeAnalysis
LSP: (received) cpptools/resumeCodeAnalysis
LSP: (invoked) cpptools/resumeCodeAnalysis
LSP: (received) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 185)
LSP: (invoked) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 185)
LSP: (received) cpptools/activeDocumentChange: file:///Documents/OI/temp/a.cpp
LSP: (received) cpptools/textEditorSelectionChange
LSP: (received) cpptools/textEditorSelectionChange
LSP: (invoked) cpptools/activeDocumentChange: file:///Documents/OI/temp/a.cpp
LSP: (invoked) cpptools/textEditorSelectionChange
LSP: (invoked) cpptools/textEditorSelectionChange
LSP: (received) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 186)
LSP: (invoked) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 186)
LSP: (received) cpptools/pauseCodeAnalysis
LSP: (invoked) cpptools/pauseCodeAnalysis
LSP: (received) cpptools/resumeCodeAnalysis
LSP: (invoked) cpptools/resumeCodeAnalysis
LSP: (received) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 187)
LSP: (invoked) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 187)
LSP: (received) cpptools/pauseCodeAnalysis
LSP: (invoked) cpptools/pauseCodeAnalysis
LSP: (received) cpptools/fileDeleted: file:///Documents/OI/temp/a
LSP: (invoked) cpptools/fileDeleted: file:///Documents/OI/temp/a
Checking for syntax errors: /Documents/OI/temp/a.cpp
Queueing IntelliSense update for files in translation unit of: /Documents/OI/temp/a.cpp
LSP: (received) cpptools/resumeCodeAnalysis
LSP: (invoked) cpptools/resumeCodeAnalysis
LSP: (received) cpptools/fileCreated: file:///Documents/OI/temp/a
LSP: (invoked) cpptools/fileCreated: file:///Documents/OI/temp/a
Checking for syntax errors: /Documents/OI/temp/a.cpp
Queueing IntelliSense update for files in translation unit of: /Documents/OI/temp/a.cpp
LSP: (received) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 188)
LSP: (invoked) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 188)
Error squiggle count: 0
Update IntelliSense time (sec): 0.559
LSP: (received) cpptools/getSemanticTokens: file:///Documents/OI/temp/a.cpp (id: 189)
LSP: (invoked) cpptools/getSemanticTokens: file:///Documents/OI/temp/a.cpp (id: 189)
LSP: (received) cpptools/getInlayHints: file:///Documents/OI/temp/a.cpp (id: 190)
LSP: (invoked) cpptools/getInlayHints: file:///Documents/OI/temp/a.cpp (id: 190)
LSP: (received) cpptools/getFoldingRanges: file:///Documents/OI/temp/a.cpp (id: 191)
LSP: (invoked) cpptools/getFoldingRanges: file:///Documents/OI/temp/a.cpp (id: 191)
LSP: (received) textDocument/hover: file:///Documents/OI/temp/a.cpp (id: 192)
LSP: (invoked) textDocument/hover: file:///Documents/OI/temp/a.cpp (id: 192)
LSP: (received) cpptools/pauseCodeAnalysis
LSP: (invoked) cpptools/pauseCodeAnalysis
LSP: (received) cpptools/resumeCodeAnalysis
LSP: (invoked) cpptools/resumeCodeAnalysis
LSP: (received) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 193)
LSP: (invoked) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 193)
LSP: (received) cpptools/pauseCodeAnalysis
LSP: (invoked) cpptools/pauseCodeAnalysis
LSP: (received) cpptools/resumeCodeAnalysis
LSP: (invoked) cpptools/resumeCodeAnalysis
LSP: (received) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 194)
LSP: (invoked) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 194)
LSP: (received) cpptools/pauseCodeAnalysis
LSP: (invoked) cpptools/pauseCodeAnalysis
LSP: (received) cpptools/resumeCodeAnalysis
LSP: (invoked) cpptools/resumeCodeAnalysis
LSP: (received) cpptools/fileDeleted: file:///Documents/OI/temp/a
LSP: (invoked) cpptools/fileDeleted: file:///Documents/OI/temp/a
Checking for syntax errors: /Documents/OI/temp/a.cpp
Queueing IntelliSense update for files in translation unit of: /Documents/OI/temp/a.cpp
LSP: (received) cpptools/fileCreated: file:///Documents/OI/temp/a
LSP: (invoked) cpptools/fileCreated: file:///Documents/OI/temp/a
Checking for syntax errors: /Documents/OI/temp/a.cpp
Queueing IntelliSense update for files in translation unit of: /Documents/OI/temp/a.cpp
LSP: (received) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 195)
LSP: (invoked) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 195)
Error squiggle count: 0
Update IntelliSense time (sec): 0.558
LSP: (received) cpptools/getSemanticTokens: file:///Documents/OI/temp/a.cpp (id: 196)
LSP: (invoked) cpptools/getSemanticTokens: file:///Documents/OI/temp/a.cpp (id: 196)
LSP: (received) cpptools/getInlayHints: file:///Documents/OI/temp/a.cpp (id: 197)
LSP: (invoked) cpptools/getInlayHints: file:///Documents/OI/temp/a.cpp (id: 197)
LSP: (received) cpptools/pauseCodeAnalysis
LSP: (invoked) cpptools/pauseCodeAnalysis
LSP: (received) cpptools/getFoldingRanges: file:///Documents/OI/temp/a.cpp (id: 198)
LSP: (invoked) cpptools/getFoldingRanges: file:///Documents/OI/temp/a.cpp (id: 198)
LSP: (received) cpptools/resumeCodeAnalysis
LSP: (invoked) cpptools/resumeCodeAnalysis
LSP: (received) cpptools/fileDeleted: file:///Documents/OI/temp/a
LSP: (invoked) cpptools/fileDeleted: file:///Documents/OI/temp/a
Checking for syntax errors: /Documents/OI/temp/a.cpp
Queueing IntelliSense update for files in translation unit of: /Documents/OI/temp/a.cpp
LSP: (received) cpptools/fileCreated: file:///Documents/OI/temp/a
LSP: (invoked) cpptools/fileCreated: file:///Documents/OI/temp/a
Checking for syntax errors: /Documents/OI/temp/a.cpp
Queueing IntelliSense update for files in translation unit of: /Documents/OI/temp/a.cpp
LSP: (received) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 199)
LSP: (invoked) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 199)
Error squiggle count: 0
Update IntelliSense time (sec): 0.558
LSP: (received) cpptools/getSemanticTokens: file:///Documents/OI/temp/a.cpp (id: 200)
LSP: (invoked) cpptools/getSemanticTokens: file:///Documents/OI/temp/a.cpp (id: 200)
LSP: (received) cpptools/getInlayHints: file:///Documents/OI/temp/a.cpp (id: 201)
LSP: (invoked) cpptools/getInlayHints: file:///Documents/OI/temp/a.cpp (id: 201)
LSP: (received) cpptools/getFoldingRanges: file:///Documents/OI/temp/a.cpp (id: 202)
LSP: (invoked) cpptools/getFoldingRanges: file:///Documents/OI/temp/a.cpp (id: 202)
LSP: (received) cpptools/pauseCodeAnalysis
LSP: (invoked) cpptools/pauseCodeAnalysis
LSP: (received) cpptools/fileDeleted: file:///Documents/OI/temp/a
LSP: (invoked) cpptools/fileDeleted: file:///Documents/OI/temp/a
Checking for syntax errors: /Documents/OI/temp/a.cpp
LSP: (received) cpptools/resumeCodeAnalysis
Queueing IntelliSense update for files in translation unit of: /Documents/OI/temp/a.cpp
LSP: (invoked) cpptools/resumeCodeAnalysis
LSP: (received) cpptools/fileCreated: file:///Documents/OI/temp/a
LSP: (invoked) cpptools/fileCreated: file:///Documents/OI/temp/a
Checking for syntax errors: /Documents/OI/temp/a.cpp
Queueing IntelliSense update for files in translation unit of: /Documents/OI/temp/a.cpp
LSP: (received) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 203)
LSP: (invoked) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 203)
Error squiggle count: 0
Update IntelliSense time (sec): 0.558
LSP: (received) cpptools/getSemanticTokens: file:///Documents/OI/temp/a.cpp (id: 204)
LSP: (invoked) cpptools/getSemanticTokens: file:///Documents/OI/temp/a.cpp (id: 204)
LSP: (received) cpptools/getInlayHints: file:///Documents/OI/temp/a.cpp (id: 205)
LSP: (invoked) cpptools/getInlayHints: file:///Documents/OI/temp/a.cpp (id: 205)
LSP: (received) cpptools/getFoldingRanges: file:///Documents/OI/temp/a.cpp (id: 206)
LSP: (invoked) cpptools/getFoldingRanges: file:///Documents/OI/temp/a.cpp (id: 206)
LSP: (received) cpptools/pauseCodeAnalysis
LSP: (invoked) cpptools/pauseCodeAnalysis
LSP: (received) cpptools/resumeCodeAnalysis
LSP: (invoked) cpptools/resumeCodeAnalysis
LSP: (received) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 207)
LSP: (invoked) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 207)
LSP: (received) cpptools/pauseCodeAnalysis
LSP: (invoked) cpptools/pauseCodeAnalysis
LSP: (received) cpptools/resumeCodeAnalysis
LSP: (invoked) cpptools/resumeCodeAnalysis
LSP: (received) textDocument/hover: file:///Documents/OI/temp/a.cpp (id: 208)
LSP: (invoked) textDocument/hover: file:///Documents/OI/temp/a.cpp (id: 208)
LSP: (received) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 209)
LSP: (invoked) cpptools/getCodeActions: file:///Documents/OI/temp/a.cpp (id: 209)
LSP: (received) textDocument/definition: file:///Documents/OI/temp/a.cpp (id: 210)
LSP: (invoked) textDocument/definition: file:///Documents/OI/temp/a.cpp (id: 210)
Other Extensions

Only a language pack and 'Remote - SSH' are activated, locally and remotely.

Additional context

No response

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Riprodurre il problema utilizzando le impostazioni di presentazione di .vscode/tasks.json, Remote - SSH, GCC e l'estensione C/C++; confrontare le esecuzioni ripetute delle attività con pannelli condivisi/silenziosi con quelle con pannelli nuovi o mostrati. Tracciare il modo in cui l'output dell'attività diventa diagnostica dell'editor, utilizzando c_cpp_properties.json e i log C/C++ forniti come contesto. Il lavoro è completato quando tutti gli avvisi del compilatore rimangono visibili nell'editor nelle esecuzioni ripetute.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
cpp, typescript, vscode
Ambito
developer-experience, devtools
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.