LuaLS / LuaLS/lua-language-server
Logic to sort diagnostics by cost doesn't work because of async processing
Nessuno ha ancora preso questa issue.
- Lingua principale
- Lua
- Stelle
- 4.4k
- Fork
- 442
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
I found some logic in diagnostics/init.lua that doesn't work as expected: https://github.com/LuaLS/lua-language-server/blob/87abc4245f2a24e1cc35851b6464af9588934286/script/core/diagnostics/init.lua#L158 tries to sort diagnostics by cost to run cheap diags first.
However, the code to measure to runtime at https://github.com/LuaLS/lua-language-server/blob/87abc4245f2a24e1cc35851b6464af9588934286/script/core/diagnostics/init.lua#L180 does to by calling os.clock() before and after invoking a given diagnostic.
This doesn't work if the diagnostic yields during execution, and most diagnostics do exactly that via await.delay(). The end result is that the order is pretty much random (which I confirmed by looking at the diagCost arrays with and without await.delay() enabled)
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 in script/core/diagnostics/init.lua, nella logica di ordinamento intorno alla riga 158 e nella misurazione del runtime intorno alla riga 180. Confronta gli array dei costi diagnostici con await.delay() abilitato e disabilitato per riprodurre il problema. Il lavoro è completato quando i diagnostici sono ordinati in base a un costo misurato significativo anche quando l’esecuzione della diagnostica effettua uno yield.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- lua
- Ambito
- tooling
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 45/100