microsoft / microsoft/vscode-cpptools
Incorrect Doxygen comments generated for certain C functions
Nessuno ha ancora preso questa issue.
- Lingua principale
- TypeScript
- Stelle
- 6.2k
- Fork
- 1.7k
- Merge medio
- 14h 46m
- PR unite (30g)
- 61
Descrizione
Environment
- OS and Version:
Windows 11 22H2 (x64) - VS Code Version:
1.80.2 - C/C++ Extension Version:
1.16.3
Bug Summary and Steps to Reproduce
Bug Summary:
- Auto-generation of Doxygen comments for C functions breaks whenever the return type contains
struct,enumor pointer to a forward-declaredunion. - Additionally, when a C function is of the form
return_type func(void), an extra@paramentry is generated.
Steps to reproduce:
- Create a new C file with the following content:
struct Bar {}; union Bar2; enum Bar3 { BAR }; typedef struct Bar *BarType; int *foo(int bar); struct Bar foo_broken(int bar); union Bar2 *foo_broken2(int bar); enum Bar3 foo_broken3(int bar); unsigned long long int foo2(void); BarType foo3(int bar); int foo_broken_param(void); - Type
///above each function (or just use the context menu) to generate Doxygen comments. - Obtain incorrect/truncated Doxygen comments:
/// @brief /// @param bar /// @return int *foo(int bar); // correct (normal function) /// @brief struct Bar foo_broken(int bar); // truncated /// @brief union Bar2 *foo_broken2(int bar); // truncated /// @brief enum Bar3 foo_broken3(int bar); // truncated /// @brief /// @param bar /// @return unsigned long long int foo2(int bar); // correct, despite having multiple tokens in the return type /// @brief /// @param bar /// @return BarType foo3(int bar); // correct, because `struct` is not present /// @brief /// @param /// @return int foo_broken_param(void); // incorrect, an extra unnamed parameter is generated
Expected behavior:
Having
/// @brief
/// @return
generated for foo_broken_param (which doesn't take any parameters), and
/// @brief
/// @param
/// @return
generated for every other function.
Configuration and Logs
c_cpp_properties.json: (Default Settings)
Other Extensions
No response
Additional context
No response
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia riproducendo il problema in un file C usando le dichiarazioni e i passaggi di generazione di Doxygen riportati nel report. Traccia la generazione dei commenti Doxygen dell’estensione C/C++ per i tipi restituiti che contengono struct, enum o una union dichiarata in avanti, e per le funzioni con parametri void. Il lavoro è completato quando i commenti generati omettono il parametro per func(void) e preservano le voci @param e @return previste per le altre funzioni.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- c, typescript, vscode
- Ambito
- tooling
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 45/100