gpt4 book ai didi

lua静态分析: detecting uninitialized table field

转载 作者:行者123 更新时间:2023-12-03 18:35:40 28 4
gpt4 key购买 nike

我正在使用 luacheck(在 Atom 编辑器中),但对其他静态分析工具开放。

有没有办法检查我是否使用了未初始化的表字段?我阅读了文档( http://luacheck.readthedocs.io/en/stable/index.html )但也许我错过了如何做到这一点?

在下面代码中的所有三种情况下,我都试图检测到我(错误地)使用字段'y1'。他们都没有。 (在运行时它被检测到,但我试图在运行时之前捕捉它)。

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)

关键是:随着项目的增长(文件增长,模块的数量和大小增长),最好防止像这样的简单错误潜入。

谢谢。

最佳答案

lua-inspect应该能够检测和报告这些实例。我已将其集成到 ZeroBrane Studio IDE当使用 deep analysis 运行时它在此片段上报告以下内容:

unknown-field.lua:4: first use of unknown field 'y1' in 'a'
unknown-field.lua:7: first assignment to global variable 'b'
unknown-field.lua:10: first use of unknown field 'y1' in 'b'
unknown-field.lua:14: first assignment to global variable 'c'
unknown-field.lua:17: first use of unknown field 'y1' in 'c'

(请注意,集成代码仅报告这些错误的第一个实例,以尽量减少报告的实例数量;我还修复了一个仅报告字段的第一个未知实例的问题,因此您可能希望使用 repository 中的最新代码.)

关于lua静态分析: detecting uninitialized table field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39436747/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com