J'utilise luacheck (dans l'éditeur Atom), mais ouvert à d'autres outils d'analyse statique.lua analyse statique: détection de champ de table non initialisé
Y at-il un moyen de vérifier que j'utilise un champ de table non initialisé? J'ai lu les docs (http://luacheck.readthedocs.io/en/stable/index.html) mais peut-être que j'ai manqué comment faire ceci?
Dans les trois cas dans le code ci-dessous, j'essaie de détecter que j'utilise (à tort) le champ 'y1'. Aucun d'entre eux ne le fait. (Au moment de l'exécution, il est détecté, mais j'essaie de l'attraper avant l'exécution).
local a = {}
a.x = 10
a.y = 20
print(a.x + a.y1) -- no warning about uninitialized field y1 !?
-- luacheck: globals b
b = {}
b.x = 10
b.y = 20
print(b.x + b.y1) -- no warning about uninitialized field y1 !?
-- No inline option for luacheck re: 'c', so plenty of complaints
-- about "non-standard global variable 'c'."
c = {} -- warning about setting
c.x = 10 -- warning about mutating
c.y = 20 -- " " "
print(c.x + c.y1) -- more warnings (but NOT about field y1)
Le point est ceci: que les projets se développent (fichiers grandir, et le nombre de modules & taille grandir), il serait bon d'éviter les erreurs simples comme celui-ci de se glisser dans
Merci..
https://github.com/mpeterv/luacheck/issues/46 https: // github .com/mpeterv/luacheck/issues/39 Tout simplement il n'est pas là. – Green
Merci - bon de savoir que je ne manquais pas quelque chose, et que peut-être il pourrait être adressé à luacheck. –
En effet, l'accès aux champs non initialisés ne figure pas dans la liste des problèmes détectés par luacheck: http://luacheck.readthedocs.io/en/stable/warnings.html. Je prévois de travailler là-dessus. – mpeterv