Aller au contenu
Aback Tools Logo

Meilleurs outils de vérification de syntaxe et d’erreurs Lua

Toutes les méthodes pratiques pour détecter les erreurs de syntaxe et les défaillances d’exécution Lua avant la production - validateurs navigateur, linters CLI et intégrations éditeur comparés.

DH
Tutorials & How-Tos13 min de lecture2,700 mots

La syntaxe minimale de Lua est une force jusqu’à ce qu’un end manquant, un crochet non apparié ou une chaîne non terminée casse silencieusement votre script à l’exécution. Contrairement aux langages compilés qui interceptent les erreurs avant l’exécution, Lua échoue souvent en cours d’exécution avec un numéro de ligne cryptique et sans contexte supplémentaire. Ce guide couvre toutes les méthodes pratiques pour détecter les erreurs de syntaxe et les défaillances d’exécution Lua avant qu’elles n’atteignent la production - des validateurs navigateur aux linters CLI en passant par les intégrations éditeur.

5.1-5.4Versions de Lua couvertesY compris LuaJIT et Luau
< 1 sTemps de vérification en ligneAucune installation requise
0 KoCode téléverséToutes les vérifications s’exécutent localement

Pourquoi la vérification d’erreurs Lua est importante

Lua est un langage de script interprété. Il n’y a pas d’étape de compilation qui interrompe l’exécution en cas de fichier cassé - l’interpréteur ne lève une erreur que lorsqu’il atteint la ligne fautive à l’exécution. Dans un script de jeu, un fichier de configuration ou un module de serveur web, cela signifie que les bugs peuvent se cacher dans des chemins de code rarement exécutés et surgir au pire moment.

Un vérificateur d’erreurs Lua dédié attrape ces problèmes avant l’exécution en analysant statiquement votre code source. Il recherche les blocs non fermés, les délimiteurs non appariés, les chaînes non terminées et les séquences de tokens invalides - des erreurs sur lesquelles le parseur Lua buterait immédiatement, quelles que soient les données traitées par votre script.

Les deux catégories d’erreurs Lua

  • Erreurs de syntaxe - problèmes structurels rejetés par le parseur avant l’exécution : end manquant, [[ non fermé, ( non apparié, littéral de chaîne non terminé. Elles produisent toujours un numéro de ligne.
  • Erreurs d’exécution - problèmes de logique qui n’apparaissent qu’à l’exécution : indexation nil, débordement de pile, incompatibilités de types et appels require() échoués. Elles exigent des tests ou un linter pour être détectées tôt.

Les vérificateurs de syntaxe traitent entièrement la première catégorie. La détection des erreurs d’exécution nécessite un analyseur statique plus avancé comme Luacheck, des tests dynamiques ou une revue de code attentive. Les outils de ce guide sont classés en conséquence - pour que vous puissiez choisir celui qui convient à votre flux de travail.

Note

Si vous travaillez avec des scripts Roblox Luau, les mêmes règles de syntaxe s’appliquent dans l’ensemble. Luau est un sur-ensemble de Lua 5.1 avec des annotations de type supplémentaires - les vérificateurs de syntaxe Lua standards couvrent le sous-ensemble commun, et l’éditeur Roblox Studio gère nativement les extensions spécifiques à Luau.

Erreurs de syntaxe Lua courantes et à quoi elles ressemblent

Avant de choisir un outil, il est utile de savoir quelles erreurs vous traquez. Les erreurs de syntaxe Lua se regroupent en un petit ensemble de motifs reconnaissables qui représentent la grande majorité des erreurs rencontrées en pratique par les développeurs.

Mots-clés end manquants ou superflus

Chaque bloc if, for, while, repeat, do et function en Lua exige un end correspondant. Oubliez-en un dans une structure imbriquée et le message d’erreur de Lua devient trompeur - il signale souvent l’erreur à la fin du fichier plutôt qu’à l’end manquant réel.

Chaînes longues et commentaires non fermés

La syntaxe des chaînes longues de Lua ([[ ... ]]) et les commentaires longs (--[[ ... ]]) sont puissants mais impitoyables. Un [[ ouvrant non apparié amène l’interpréteur à consommer le reste du fichier comme contenu de chaîne, transformant tout le code suivant en littéral - aucune erreur n’est levée avant que la fin du fichier soit atteinte sans ]] fermant.

Crochets et parenthèses non appariés

Les parenthèses, accolades ou crochets ouvrants non appariés sont détectés au moment du parse. C’est simple, mais difficile à repérer dans de longs constructeurs de tables ou des appels de fonction chaînés. Un validateur de syntaxe identifie la ligne exacte, ce que l’inspection manuelle d’un littéral de table de 200 lignes parvient rarement à faire rapidement.

Type d’erreurMessage LuaDétecté par le vérificateur de syntaxe ?
Mot-clé end manquant'<eof>' expected near '...'✓ Oui
Chaîne longue [[ non fermée']]' expected near '<eof>'✓ Oui
( non apparié')' expected near '...'✓ Oui
Chaîne non terminéeunfinished string near '...'✓ Oui
Index nil (exécution)attempt to index a nil value✗ Exécution uniquement
Débordement de pile (exécution)stack overflow✗ Exécution uniquement
Type d’argument erroné (exécution)bad argument #1✗ Exécution uniquement

Tip

Si votre message d’erreur mentionne eof expected ou near eof, le problème est presque toujours un bloc non fermé ou une chaîne longue quelque part au-dessus de la ligne signalée par Lua. Commencez à chercher depuis le début du fichier, pas depuis la fin.

Vérificateurs d’erreurs Lua en ligne : la façon la plus rapide de valider

Pour des vérifications ponctuelles rapides - un extrait collé, un fichier de configuration, un script reçu de quelqu’un d’autre - un vérificateur d’erreurs Lua en ligne est le chemin le plus rapide vers une réponse. Pas d’installation, pas de configuration, aucun paramétrage de projet requis. Collez votre code et obtenez un résultat en moins d’une seconde.

1

Utilisez le Lua Syntax Validator d’Aback Tools

Le Lua Syntax Validator d’Aback Tools vérifie le code source Lua à la recherche de problèmes au niveau du parseur entièrement dans votre navigateur. Collez n’importe quel script Lua - d’une simple fonction à un module complet - et il analyse les blocs non fermés, les crochets non appariés, les erreurs de terminaison de chaînes et de commentaires, et les avertissements au niveau des tokens. Les résultats incluent le numéro de ligne concernée et une description en langage clair de ce qui s’est mal passé. Votre code ne quitte jamais votre appareil.

2

Formatez le code pour révéler les problèmes de structure

Les erreurs d’indentation sont souvent invisibles dans du Lua mal formaté. Passer votre script par le Lua Formatter avant de vérifier les erreurs peut révéler des problèmes d’imbrication invisibles dans du code désaligné - un bloc qui semble imbriqué à l’écran mais qui est en réalité à la mauvaise profondeur devient évident après une ré-indentation cohérente.

3

Comparez les versions avant et après une correction

Lorsque vous avez corrigé une erreur de syntaxe et voulez confirmer exactement ce qui a changé, l’outil Lua Code Diff & Compare affiche un diff ligne par ligne entre deux fichiers Lua. C’est particulièrement utile lors d’une revue de code ou pour appliquer une correction suggérée par un membre de l’équipe.

Lua Syntax Validator

Collez n’importe quel script Lua pour détecter les blocs non fermés, les crochets non appariés, les chaînes non terminées et d’autres erreurs au niveau du parseur - entièrement dans votre navigateur, sans inscription.

Open tool

Vérificateurs d’erreurs Lua en CLI : Luacheck et l’interpréteur Lua

Pour les flux de production, les pipelines CI et les projets comportant plusieurs fichiers Lua, les outils en ligne de commande sont le bon choix. Ils s’intègrent à votre processus de build existant, produisent une sortie lisible par machine et peuvent bloquer un déploiement lorsque des erreurs sont détectées.

La vérification intégrée de l’interpréteur : luac

L’interpréteur Lua lui-même est le vérificateur de syntaxe le plus simple disponible. Exécuter luac -p script.lua (avec le compilateur Lua en mode parse seul) affichera toute erreur de syntaxe et quittera avec un code de statut non nul. Aucun outil supplémentaire n’est requis - juste une installation standard de Lua.

Luacheck - l’analyseur statique standard de l’industrie

Luacheck est le linter Lua le plus utilisé et va bien au-delà de la vérification de syntaxe. Il détecte les variables inutilisées, les globales non définies, les locales masquées, l’accès à des valeurs non initialisées et les problèmes de style. Il prend en charge Lua 5.1, 5.2, 5.3, 5.4 et LuaJIT, et se configure par projet via un fichier .luacheckrc.

La sortie de Luacheck inclut le nom du fichier, le numéro de ligne, la colonne, la sévérité (avertissement ou erreur) et une description. Il s’intègre proprement dans GitHub Actions, GitLab CI, Jenkins et tout autre système CI qui lit les codes de sortie.

Luacheck dans les pipelines CI

Tip

Le flag --globals de Luacheck permet de déclarer les variables globales fournies par votre environnement (API du moteur de jeu, globales du framework, etc.) pour qu’elles ne soient pas signalées comme non définies. Pour les scripts Roblox, déclarez game, workspace, script et les autres globales Roblox pour supprimer les faux positifs.

La vérification intégrée de LuaJIT

Si votre projet utilise LuaJIT, la commande luajit -bl compile un script en bytecode sans l’exécuter - un moyen rapide de détecter les erreurs de parse dans les environnements spécifiques à LuaJIT comme OpenResty ou Nginx+Lua. Les messages d’erreur de LuaJIT incluent le nom du fichier et le numéro de ligne et sont formatés comme en Lua standard.

Vérification d’erreurs Lua dans les éditeurs et IDE

Le meilleur moment pour attraper une erreur de syntaxe est l’instant où vous la tapez - avant d’enregistrer, avant d’exécuter, avant de déployer. Les intégrations éditeur modernes font exactement cela : soulignés rouges en ligne, messages d’erreur au survol et retour en temps réel pendant que vous écrivez.

VS Code - lua-language-server (sumneko)

L’extension Lua de facto pour VS Code est lua-language-server de sumneko, disponible sous le nom « Lua » sur le VS Code Marketplace. Elle fournit une vérification de syntaxe en temps réel, l’inférence de types, go-to-definition et des diagnostics compatibles Luacheck. Elle prend en charge Lua 5.1 à 5.4 et LuaJIT, et inclut une prise en charge spécifique de Roblox Luau lorsqu’elle est associée à l’extension Roblox LSP.

  • Installation - recherchez « Lua » de sumneko dans le panneau des extensions VS Code et cliquez sur Install. Aucun outil CLI supplémentaire requis.
  • Diagnostics - erreurs de syntaxe, globales non définies, code inatteignable et avertissements de type apparaissent en ligne pendant que vous tapez.
  • Configuration - créez un .luarc.json à la racine de votre projet pour définir la version de Lua, déclarer les globales et configurer les règles de diagnostic.
  • Support workspace - fonctionne avec des fichiers uniques et des projets multi-fichiers ; comprend require() entre fichiers d’un même dossier de workspace.

IntelliJ IDEA et Rider - plugin EmmyLua

Pour les IDE JetBrains, le plugin EmmyLua ajoute une prise en charge complète de Lua, incluant la vérification d’erreurs en temps réel, la complétion de code, la refactorisation et le débogage. Il est particulièrement populaire dans les studios de jeux vidéo qui utilisent des IDE basés sur IntelliJ pour leur langage principal, avec des couches de script Lua.

Neovim / Vim

Les utilisateurs de Neovim peuvent connecter lua-language-server via le client LSP intégré ou des plugins comme nvim-lspconfig. Les utilisateurs de Vim peuvent utiliser ALE (Asynchronous Lint Engine), qui prend en charge Luacheck comme backend de linting et affiche les erreurs dans la colonne de signes et la liste quickfix.

ÉditeurOutil recommandéMéthode d’installationTemps réel ?
VS Codelua-language-server (sumneko)VS Code Marketplace✓ Oui
Neovimlua-language-server + nvim-lspconfigGestionnaire de plugins✓ Oui
VimALE + LuacheckGestionnaire de plugins✓ Oui
IntelliJ / RiderPlugin EmmyLuaJetBrains Marketplace✓ Oui
Sublime TextSublimeLinter-luacheckPackage Control✓ Oui
Emacsflycheck + luacheckMELPA✓ Oui

Note

Toutes les intégrations éditeur listées ci-dessus sont gratuites et open source. lua-language-server est l’option la plus activement maintenue et le meilleur choix pour de nouvelles configurations dans VS Code ou Neovim.

Lire et décoder les messages d’erreur Lua

Même avec les meilleurs outils, vous finirez par voir un message d’erreur Lua brut dans un fichier de log ou un terminal. Savoir les lire rapidement est une compétence qui fait gagner un temps de débogage considérable - surtout dans des environnements d’exécution comme OpenResty, les moteurs de jeu ou les systèmes embarqués où la sortie des logs est votre seule visibilité.

Anatomie d’un message d’erreur Lua

Chaque erreur Lua suit ce schéma : le fichier source, la ligne où l’erreur a été détectée et un message décrivant ce que le parseur ou le runtime a trouvé. Pour les erreurs de syntaxe, le numéro de ligne est fiable. Pour les erreurs d’exécution impliquant des nil ou des incompatibilités de types, la ligne pointe vers l’endroit où l’erreur a été levée - qui peut se trouver dans une fonction de bibliothèque, et non dans votre propre code.

Stack traces en Lua

Lorsqu’une erreur se propage à travers plusieurs appels de fonction, la fonction debug.traceback() de Lua génère une pile d’appels complète. La plupart des frameworks (OpenResty, LÖVE2D, etc.) l’incluent automatiquement dans leur sortie d’erreurs. Lire une traceback de bas en haut vous donne la séquence d’appels qui a mené à l’erreur.

Les messages d’erreur sont généralement des chaînes, mais ils peuvent être n’importe quelle valeur - une table, un nombre, ou tout ce que votre code lève avec error().

- Manuel de référence Lua 5.4

Utiliser le Lua Deobfuscator Helper pour les traces d’erreurs minifiées

Si votre script a été minifié ou obfusqué (courant dans les modules Lua distribués et les plugins de jeu), les stack traces pointent vers des noms de variables dénués de sens et des lignes condensées. Le Lua Deobfuscator Helper peut restaurer la lisibilité des motifs d’obfuscation courants - vous aidant à ramener une trace d’erreur illisible vers la structure de code d’origine.

Warning

Ne vous fiez jamais uniquement au numéro de ligne d’un message d’erreur Lua lorsque le fichier a été minifié. Le minificateur condense plusieurs lignes logiques en une seule : la ligne 1 d’un fichier minifié peut correspondre à des centaines de lignes du code source original.

Vérification d’erreurs Lua par environnement

Lua s’exécute dans des contextes très différents - moteurs de jeu, serveurs web, systèmes embarqués, outils en ligne de commande. La bonne stratégie de vérification dépend de votre environnement d’exécution, car chacun possède des espaces de noms globaux différents, des bibliothèques runtime différentes et des formats de sortie d’erreur différents.

Roblox Studio (Luau)

L’éditeur de scripts intégré de Roblox Studio fournit une vérification de syntaxe en temps réel pour Luau. La fenêtre Output affiche les erreurs d’exécution avec numéros de ligne et pile d’appels complète. Pour une vérification hors ligne, les validateurs de syntaxe Lua standards fonctionnent pour le sous-ensemble compatible Lua 5.1. Si vous protégez des scripts Roblox, le Lua Obfuscator prend en charge la syntaxe Lua standard utilisée dans la plupart des scripts de jeux Roblox.

LÖVE2D (Love)

LÖVE2D affiche un écran d’erreur formaté lorsqu’une erreur de syntaxe ou d’exécution Lua est levée, montrant le message d’erreur, le nom du fichier, le numéro de ligne et une traceback. Le CLI luacheck avec le flag --std love ajoute les fonctions globales de LÖVE2D à la liste des globales connues, éliminant les faux positifs pour les appels love.*.

OpenResty / Nginx+Lua

Dans OpenResty, les erreurs Lua apparaissent dans le journal d’erreurs Nginx. Les erreurs de syntaxe empêchent le processus worker de démarrer ; les erreurs d’exécution apparaissent au niveau de log warn ou error pendant le traitement des requêtes. LuaJIT est le runtime Lua d’OpenResty, donc luajit -bl est la commande de vérification de parse appropriée pour les scripts OpenResty.

Lua embarqué (hôte C/C++)

Lorsque Lua est embarqué dans une application C ou C++, les erreurs remontent via la valeur de retour de lua_pcall et le message d’erreur sur la pile Lua. La vérification de syntaxe avant déploiement y est particulièrement importante car l’embarqué rend l’itération rapide plus difficile - une vérification luac -p dans votre script de build est la bonne protection.

Lua Formatter

Indente et formate automatiquement n’importe quel script Lua dans votre navigateur. Un formatage cohérent révèle les erreurs d’imbrication invisibles dans du code désaligné.

Open tool

Un flux de travail pratique de vérification d’erreurs Lua

L’approche la plus efficace combine plusieurs couches de vérification : un validateur en ligne rapide pour l’inspection ad hoc, une intégration éditeur pour un retour en temps réel pendant l’écriture, et un linter CLI dans votre pipeline CI pour prévenir les régressions. Voici comment mettre en place les trois sans introduire de friction dans votre flux de travail quotidien.

  1. Collez et validez en ligne d’abord - pour tout script dont vous n’êtes pas sûr, déposez-le dans le Lua Syntax Validator avant toute autre chose. Cela prend trois secondes et vous dit si le fichier est structurellement sain.
  2. Formatez avant de relire - exécutez le Lua Formatter pour normaliser l’indentation. Cela rend la profondeur d’imbrication immédiatement visible et fait gagner du temps lors de la revue de code.
  3. Installez lua-language-server dans votre éditeur - il attrape les erreurs pendant que vous tapez, avant même d’enregistrer le fichier. Il ne coûte rien et ne nécessite aucune configuration de projet pour démarrer.
  4. Ajoutez Luacheck à votre pipeline CI - une simple commande luacheck src/ dans votre configuration CI bloque les merges qui introduisent des globales non définies, des variables inutilisées ou des erreurs de syntaxe.
  5. Relisez les diffs avec l’outil de diff Lua - en appliquant un patch ou en relisant une PR, utilisez l’outil Lua Code Diff & Compare pour voir exactement ce qui a changé et confirmer qu’aucune erreur n’a été introduite.

Tip

Si vous découvrez un codebase Lua, exécutez d’abord Luacheck sur tout le répertoire src/. La sortie vous donne une carte instantanée de toutes les globales non définies, ce qui vous indique de quelles bibliothèques externes et API d’environnement dépend le projet - souvent plus vite que la lecture de la documentation.

Choisir l’outil selon la tâche

TâcheMeilleur outil
Vérification rapide par copier-coller (sans installation)Lua Syntax Validator (en ligne)
Vérification en temps réel pendant l’écriturelua-language-server dans VS Code/Neovim
Lint complet du projet + vérification des globales non définiesLuacheck CLI
Application dans un pipeline CI/CDLuacheck + luac -p
Analyse de code minifié ou obfusquéLua Deobfuscator Helper (en ligne)
Formater avant de relireLua Formatter (en ligne)
Diff entre deux versions d’un scriptLua Code Diff & Compare (en ligne)

Lua Code Diff & Compare

Collez deux versions d’un fichier Lua côte à côte et voyez un diff clair au niveau des lignes - utile après une correction de syntaxe ou la relecture d’un patch.

Open tool

Key takeaways

  • Les erreurs de syntaxe Lua (end manquant, [[ non fermé, crochets non appariés) sont détectées par les vérificateurs statiques avant l’exécution - inutile d’exécuter le script pour les trouver.
  • Le Lua Syntax Validator d’Aback Tools vérifie n’importe quel script dans votre navigateur en moins d’une seconde, sans installation ni téléversement.
  • Luacheck est l’option CLI la plus capable - il détecte les erreurs de syntaxe, les globales non définies, les variables inutilisées et plus encore, et s’intègre à tous les systèmes CI majeurs.
  • lua-language-server (sumneko) est la meilleure intégration pour VS Code et Neovim, fournissant des diagnostics en ligne en temps réel pendant que vous écrivez.
  • La lecture des messages d’erreur Lua suit un schéma constant : [fichier]:[ligne] : [message] - les erreurs d’exécution peuvent pointer dans du code de bibliothèque, lisez donc la traceback complète.
  • Le bon flux de travail superpose trois outils : un validateur en ligne pour les vérifications rapides, un LSP d’éditeur pour le retour en direct, et un linter CLI en CI pour garantir la qualité à chaque commit.
  • L’environnement compte - Roblox Luau, LÖVE2D, OpenResty et Lua embarqué ont tous des globales différentes ; configurez votre linter avec le bon standard pour éviter les faux positifs.

Questions fréquentes

The fastest option is the Lua Syntax Validator on Aback Tools. Paste your script and the tool reports every parser-level error - missing end keywords, unclosed brackets, unterminated strings - in under a second. No install, no account, and your code never leaves your browser. This is ideal for quick spot-checks on snippets, config files, and scripts received from other developers.

A Lua syntax checker detects parser-level errors: the structural problems that Lua's interpreter would reject before executing a single line of code. This includes missing or extra `end` keywords, unclosed long strings ([[...]] syntax), unmatched parentheses or brackets, and unterminated string literals. It does not detect runtime errors like nil indexing or type mismatches - those require either a more advanced static analyser (Luacheck) or actual execution.

Luacheck is a static analyser for Lua that goes beyond syntax checking. In addition to catching syntax errors, it identifies undefined global variables, unused local variables, values that are assigned but never read, shadowed locals, and stylistic issues. It supports Lua 5.1 through 5.4 and LuaJIT, and is configured via a .luacheckrc file. Luacheck is the standard choice for production Lua projects and CI pipelines.

Install the 'Lua' extension by sumneko from the VS Code Marketplace. This extension bundles the lua-language-server, which provides real-time syntax checking, undefined-global warnings, and type inference as you type. Errors appear as red underlines inline in the editor and in the Problems panel. No additional CLI tools are required - the language server runs automatically when you open a .lua file.

This is most commonly caused by an unclosed long string ([[...]]). When Lua encounters an opening [[ without a matching ]], it treats everything after it as string content - including all subsequent code. The parser does not see an error until it reaches the end of the file looking for ]] that never arrives. Check for unmatched [[ or --[[ above the line Lua reports, not below it.

Luacheck works for the Lua 5.1-compatible subset of Luau. Most Roblox game scripts use standard Lua syntax and are checked correctly. However, Luau-specific type annotations (a:Type syntax) and some newer Luau features may produce false errors in Luacheck. Declare Roblox globals like game, workspace, script, and Instance using the --globals flag or a .luacheckrc file to suppress false positives for built-in Roblox APIs.

Yes. OpenResty runs LuaJIT, which uses Lua 5.1-compatible syntax. The luajit -bl command checks any Lua file for syntax errors in parse-only mode without executing it - ideal for pre-deployment checks. Alternatively, luacheck with a .luacheckrc that declares OpenResty's ngx global and other nginx.* APIs catches both syntax errors and undefined-global warnings specific to the OpenResty environment.

A syntax error is detected by the Lua parser before any code runs - it means the source file is structurally invalid (malformed block, bad token, unterminated string). A runtime error occurs during execution when the code is syntactically valid but attempts an illegal operation - indexing nil, calling a non-function, passing the wrong type. Syntax checkers catch the first category; runtime errors require testing, defensive pcall() wrappers, or a more advanced type-aware static analyser.

ShareXLinkedIn