* [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua
@ 2020-04-03 9:39 Sergey Bronnikov
2020-04-03 10:13 ` lvasiliev
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: Sergey Bronnikov @ 2020-04-03 9:39 UTC (permalink / raw)
To: tarantool-patches, avtikhon, alexander.turenko, o.piskunov
GitHub branch: https://github.com/tarantool/tarantool/tree/ligurio/gh-4681-fix-luacheck-warnings
How-to check:
$ tarantoolctl rocks install luacheck
$ .rocks/bin/luacheck src/lua/*.lua
---
src/lua/argparse.lua | 6 ++--
src/lua/buffer.lua | 4 +--
src/lua/clock.lua | 2 +-
src/lua/crypto.lua | 18 +++++-----
src/lua/csv.lua | 5 ++-
src/lua/digest.lua | 6 ++--
src/lua/env.lua | 2 +-
src/lua/errno.lua | 2 +-
src/lua/fio.lua | 28 ++++++++--------
src/lua/help.lua | 24 +++++++-------
src/lua/httpc.lua | 3 --
src/lua/init.lua | 17 +++++-----
src/lua/msgpackffi.lua | 15 ++++-----
src/lua/socket.lua | 66 ++++++++++++++++++-------------------
src/lua/string.lua | 1 -
src/lua/swim.lua | 20 +++++------
src/lua/tap.lua | 75 ++++++++++++++++++++----------------------
src/lua/trigger.lua | 3 --
18 files changed, 142 insertions(+), 155 deletions(-)
diff --git a/src/lua/argparse.lua b/src/lua/argparse.lua
index faa0ae130..f58985425 100644
--- a/src/lua/argparse.lua
+++ b/src/lua/argparse.lua
@@ -90,8 +90,8 @@ local function convert_parameter(name, convert_from, convert_to)
return convert_from
end
-local function parameters_parse(t_in, options)
- local t_out, t_in = {}, t_in or {}
+local function parameters_parse(t__in, options)
+ local t_out, t_in = {}, t__in or {}
-- Prepare a lookup table for options. An option name -> a
-- type name to convert a parameter into or true (which means
@@ -145,7 +145,7 @@ local function parameters_parse(t_in, options)
if parameter_has_value(lookup[command]) then
-- in case next argument is value of this key (not --arg)
local next_arg = t_in[i + 1]
- local is_long, is_short, is_dash = parse_param_prefix(next_arg)
+ is_long, is_short, is_dash = parse_param_prefix(next_arg)
if is_dash then
skip_param = true
elseif is_long == false and not is_short and not is_dash then
diff --git a/src/lua/buffer.lua b/src/lua/buffer.lua
index 9aac82b39..5979980ed 100644
--- a/src/lua/buffer.lua
+++ b/src/lua/buffer.lua
@@ -182,7 +182,7 @@ local ibuf_methods = {
unused = ibuf_unused;
}
-local function ibuf_tostring(ibuf)
+local function ibuf_tostring(ibuf) -- luacheck: ignore 212
return '<ibuf>'
end
local ibuf_mt = {
@@ -193,7 +193,7 @@ local ibuf_mt = {
ffi.metatype(ibuf_t, ibuf_mt);
-local function ibuf_new(arg, arg2)
+local function ibuf_new(arg)
local buf = ffi.new(ibuf_t)
local slabc = builtin.tarantool_lua_slab_cache()
builtin.ibuf_create(buf, slabc, READAHEAD)
diff --git a/src/lua/clock.lua b/src/lua/clock.lua
index 60c78663c..fee43ccde 100644
--- a/src/lua/clock.lua
+++ b/src/lua/clock.lua
@@ -33,7 +33,7 @@ clock.bench = function(fun, ...)
overhead = clock.proc() - overhead
local start_time = clock.proc()
local res = {0, fun(...)}
- res[1] = clock.proc() - start_time - overhead, res
+ res[1] = clock.proc() - start_time - overhead
return res
end
diff --git a/src/lua/crypto.lua b/src/lua/crypto.lua
index bf3064c70..9929b93ba 100644
--- a/src/lua/crypto.lua
+++ b/src/lua/crypto.lua
@@ -75,7 +75,7 @@ local function openssl_err_str()
end
local digests = {}
-for class, name in pairs({
+for class, _ in pairs({
md2 = 'MD2', md4 = 'MD4', md5 = 'MD5',
sha1 = 'SHA1', sha224 = 'SHA224',
sha256 = 'SHA256', sha384 = 'SHA384', sha512 = 'SHA512',
@@ -318,7 +318,7 @@ for class, digest in pairs(digests) do
digest_api[class] = setmetatable({
new = function () return digest_new(digest) end
}, {
- __call = function (self, str)
+ __call = function (self, str) -- luacheck: ignore 212
if type(str) ~= 'string' then
error("Usage: digest."..class.."(string)")
end
@@ -332,7 +332,7 @@ for class, digest in pairs(digests) do
end
digest_api = setmetatable(digest_api,
- {__index = function(self, digest)
+ {__index = function(self, digest) -- luacheck: ignore 212
return error('Digest method "' .. digest .. '" is not supported')
end })
@@ -341,7 +341,7 @@ for class, digest in pairs(hmacs) do
hmac_api[class] = setmetatable({
new = function (key) return hmac_new(digest, key) end
}, {
- __call = function (self, key, str)
+ __call = function (self, key, str) -- luacheck: ignore 212
if type(str) ~= 'string' then
error("Usage: hmac."..class.."(key, string)")
end
@@ -361,7 +361,7 @@ for class, digest in pairs(hmacs) do
end
hmac_api = setmetatable(hmac_api,
- {__index = function(self, digest)
+ {__index = function(self, digest) -- luacheck: ignore 212
return error('HMAC method "' .. digest .. '" is not supported')
end })
@@ -384,12 +384,12 @@ local crypto_dirs = {
}
local algo_api_mt = {
- __index = function(self, mode)
+ __index = function(self, mode) -- luacheck: ignore 212
error('Cipher mode ' .. mode .. ' is not supported')
end
}
local crypto_api_mt = {
- __index = function(self, cipher)
+ __index = function(self, cipher) -- luacheck: ignore 212
return error('Cipher method "' .. cipher .. '" is not supported')
end
}
@@ -408,7 +408,7 @@ for algo_name, algo_value in pairs(crypto_algos) do
dir_value)
end
}, {
- __call = function(self, str, key, iv)
+ __call = function(self, str, key, iv) -- luacheck: ignore 212
local ctx = crypto_stream_new(algo_value, mode_value, key,
iv, dir_value)
local res = ctx:update(str)
@@ -428,7 +428,7 @@ local public_methods = {
}
local module_mt = {
- __serialize = function(s)
+ __serialize = function()
return public_methods
end,
__index = public_methods
diff --git a/src/lua/csv.lua b/src/lua/csv.lua
index 7dff2f213..de6726bb7 100644
--- a/src/lua/csv.lua
+++ b/src/lua/csv.lua
@@ -188,10 +188,10 @@ module.dump = function(t, opts, writable)
if type(writable) == 'nil' then
result_table = {}
end
- for k, line in pairs(t) do
+ for _, line in pairs(t) do
local first = true
local output_tuple = {}
- for k2, field in pairs(line) do
+ for _, field in pairs(line) do
local strf = tostring(field)
local buf_new_size = (strf:len() + 1) * 2
if buf_new_size > bufsz then
@@ -214,7 +214,6 @@ module.dump = function(t, opts, writable)
else
writable:write(table.concat(output_tuple))
end
- output_tuple = {}
end
ffi.C.csv_destroy(csv)
csv.realloc(buf, 0)
diff --git a/src/lua/digest.lua b/src/lua/digest.lua
index 6ed91cfa2..5c6eb2ae2 100644
--- a/src/lua/digest.lua
+++ b/src/lua/digest.lua
@@ -91,7 +91,7 @@ PMurHash = {
}
setmetatable(PMurHash, {
- __call = function(self, str)
+ __call = function(self, str) -- luacheck: ignore 212
if type(str) ~= 'string' then
error("Usage: digest.murhash(string)")
end
@@ -134,7 +134,7 @@ CRC32 = {
}
setmetatable(CRC32, {
- __call = function(self, str)
+ __call = function(self, str) -- luacheck: ignore 212
if type(str) ~= 'string' then
error("Usage digest.crc32(string)")
end
@@ -246,7 +246,7 @@ local m = {
end
}
-for digest, name in pairs(digest_shortcuts) do
+for digest, _ in pairs(digest_shortcuts) do
m[digest] = function (str)
return crypto.digest[digest](str)
end
diff --git a/src/lua/env.lua b/src/lua/env.lua
index dd1616a84..d851586f0 100644
--- a/src/lua/env.lua
+++ b/src/lua/env.lua
@@ -28,7 +28,7 @@ os.environ = function()
end
os.setenv = function(key, value)
- local rv = nil
+ local rv = nil -- luacheck: ignore 311
if value ~= nil then
rv = ffi.C.setenv(key, value, 1)
else
diff --git a/src/lua/errno.lua b/src/lua/errno.lua
index db800ce30..c91cad4b7 100644
--- a/src/lua/errno.lua
+++ b/src/lua/errno.lua
@@ -17,5 +17,5 @@ return setmetatable({
}, {
__index = errno_list,
__newindex = function() error("Can't create new errno constants") end,
- __call = function(self, ...) return ffi.errno(...) end
+ __call = function(self, ...) return ffi.errno(...) end -- luacheck: ignore 212
})
diff --git a/src/lua/fio.lua b/src/lua/fio.lua
index 4692e1026..dd71c6742 100644
--- a/src/lua/fio.lua
+++ b/src/lua/fio.lua
@@ -306,7 +306,7 @@ fio.abspath = function(path)
error("Usage: fio.abspath(path)")
end
path = path
- local joined_path = ''
+ local joined_path = '' -- luacheck: ignore 311
local path_tab = {}
if string.sub(path, 1, 1) == '/' then
joined_path = path
@@ -343,7 +343,7 @@ fio.listdir = function(path)
return t
end
local names = string.split(str, "\n")
- for i, name in ipairs(names) do
+ for _, name in ipairs(names) do
table.insert(t, name)
end
return t
@@ -355,15 +355,15 @@ fio.mktree = function(path, mode)
end
path = fio.abspath(path)
- local path = string.gsub(path, '^/', '')
+ path = string.gsub(path, '^/', '')
local dirs = string.split(path, "/")
local current_dir = "/"
- for i, dir in ipairs(dirs) do
+ for _, dir in ipairs(dirs) do
current_dir = fio.pathjoin(current_dir, dir)
local stat = fio.stat(current_dir)
if stat == nil then
- local st, err = fio.mkdir(current_dir, mode)
+ local _, err = fio.mkdir(current_dir, mode)
-- fio.stat() and fio.mkdir() above are separate calls
-- and a file system may be changed between them. So
-- if the error here is due to an existing directory,
@@ -384,20 +384,20 @@ fio.rmtree = function(path)
if type(path) ~= 'string' then
error("Usage: fio.rmtree(path)")
end
- local status, err
+ local status -- luacheck: ignore 231
path = fio.abspath(path)
local ls, err = fio.listdir(path)
if err ~= nil then
return nil, err
end
- for i, f in ipairs(ls) do
+ for _, f in ipairs(ls) do
local tmppath = fio.pathjoin(path, f)
local st = fio.lstat(tmppath)
if st then
if st:is_dir() then
- st, err = fio.rmtree(tmppath)
+ _, err = fio.rmtree(tmppath)
else
- st, err = fio.unlink(tmppath)
+ _, err = fio.unlink(tmppath)
end
if err ~= nil then
return nil, err
@@ -430,7 +430,6 @@ fio.copytree = function(from, to)
if type(from) ~= 'string' or type(to) ~= 'string' then
error('Usage: fio.copytree(from, to)')
end
- local status, reason
local st = fio.stat(from)
if not st then
return false, string.format("Directory %s does not exist", from)
@@ -444,14 +443,14 @@ fio.copytree = function(from, to)
end
-- create tree of destination
- status, reason = fio.mktree(to)
+ local status, reason = fio.mktree(to) -- luacheck: ignore 231
if reason ~= nil then
return false, reason
end
- for i, f in ipairs(ls) do
+ for _, f in ipairs(ls) do
local ffrom = fio.pathjoin(from, f)
local fto = fio.pathjoin(to, f)
- local st = fio.lstat(ffrom)
+ st = fio.lstat(ffrom)
if st and st:is_dir() then
status, reason = fio.copytree(ffrom, fto)
if reason ~= nil then
@@ -465,7 +464,8 @@ fio.copytree = function(from, to)
end
end
if st:is_link() then
- local link_to, reason = fio.readlink(ffrom)
+ local link_to
+ link_to, reason = fio.readlink(ffrom)
if reason ~= nil then
return false, reason
end
diff --git a/src/lua/help.lua b/src/lua/help.lua
index 54ff1b5d0..768f4dec4 100644
--- a/src/lua/help.lua
+++ b/src/lua/help.lua
@@ -7,22 +7,22 @@ local doc = require('help.en_US')
-- corresponds to a tarantool version a user runs.
local DOCUMENTATION_VERSION = '2.1'
-help = { doc.help }
-tutorial = {}
-tutorial[1] = help[1]
+help = { doc.help } -- luacheck: ignore 111
+tutorial = {} -- luacheck: ignore 111
+tutorial[1] = help[1] -- luacheck: ignore 112 113
-local help_function_data = {};
-local help_object_data = {}
+local help_function_data = {}; -- luacheck: ignore 211
+local help_object_data = {} -- luacheck: ignore 211
-local function help_call(table, param)
- return help
+local function help_call(table, param) -- luacheck: ignore 212
+ return help -- luacheck: ignore 113
end
-setmetatable(help, { __call = help_call })
+setmetatable(help, { __call = help_call }) -- luacheck: ignore 113
local screen_id = 1;
-local function tutorial_call(table, action)
+local function tutorial_call(table, action) -- luacheck: ignore 212
if action == 'start' then
screen_id = 1;
elseif action == 'next' or action == 'more' then
@@ -46,9 +46,9 @@ local function tutorial_call(table, action)
return (res:gsub('<version>', DOCUMENTATION_VERSION))
end
-setmetatable(tutorial, { __call = tutorial_call })
+setmetatable(tutorial, { __call = tutorial_call }) -- luacheck: ignore 113
return {
- help = help;
- tutorial = tutorial;
+ help = help; -- luacheck: ignore 113
+ tutorial = tutorial; -- luacheck: ignore 113
}
diff --git a/src/lua/httpc.lua b/src/lua/httpc.lua
index 6381c6a1a..9336dcee0 100644
--- a/src/lua/httpc.lua
+++ b/src/lua/httpc.lua
@@ -29,8 +29,6 @@
-- SUCH DAMAGE.
--
-local fiber = require('fiber')
-
local driver = package.loaded.http.client
package.loaded.http = nil
@@ -112,7 +110,6 @@ local special_characters = {
[']'] = true,
['<'] = true,
['>'] = true,
- ['>'] = true,
['@'] = true,
[','] = true,
[';'] = true,
diff --git a/src/lua/init.lua b/src/lua/init.lua
index ff3e74c3c..b075915a3 100644
--- a/src/lua/init.lua
+++ b/src/lua/init.lua
@@ -71,7 +71,7 @@ local function setsearchroot(path)
package_searchroot = path and fio.abspath(path)
end
-dostring = function(s, ...)
+dostring = function(s, ...) -- luacheck: ignore 121
local chunk, message = loadstring(s)
if chunk == nil then
error(message, 2)
@@ -80,7 +80,7 @@ dostring = function(s, ...)
end
local fiber = require("fiber")
-os.exit = function(code)
+os.exit = function(code) -- luacheck: ignore 122
code = (type(code) == 'number') and code or 0
ffi.C.tarantool_exit(code)
-- Make sure we yield even if the code after
@@ -144,9 +144,9 @@ local function gen_search_func(path_fn, templates, need_traverse)
local searchpaths = {}
- for _, path in ipairs(paths) do
+ for _, p in ipairs(paths) do
for _, template in pairs(templates) do
- table.insert(searchpaths, fio.pathjoin(path, template))
+ table.insert(searchpaths, fio.pathjoin(p, template))
end
end
@@ -176,7 +176,8 @@ local function gen_loader_func(search_fn, load_fn)
if not file then
return err
end
- local loaded, err = load_fn(file, name)
+ local loaded
+ loaded, err = load_fn(file, name)
if err == nil then
return loaded
else
@@ -221,9 +222,9 @@ table.insert(package.loaders, 5, gen_loader_func(search_rocks_lib, load_lib))
-- package.cpath 7
-- croot 8
-package.search = search
-package.searchroot = searchroot
-package.setsearchroot = setsearchroot
+package.search = search -- luacheck: ignore 122
+package.searchroot = searchroot -- luacheck: ignore 122
+package.setsearchroot = setsearchroot -- luacheck: ignore 122
return {
uptime = uptime;
diff --git a/src/lua/msgpackffi.lua b/src/lua/msgpackffi.lua
index f775f2d41..471b72c84 100644
--- a/src/lua/msgpackffi.lua
+++ b/src/lua/msgpackffi.lua
@@ -291,7 +291,7 @@ local function encode(obj)
return r
end
-local function encode_ibuf(obj, ibuf)
+local function encode_ibuf(obj, ibuf) -- luacheck: ignore 211
encode_r(ibuf, obj, 0)
end
@@ -320,7 +320,7 @@ local decode_r
-- See similar constants in utils.cc
local DBL_INT_MAX = 1e14 - 1
-local DBL_INT_MIN = -1e14 + 1
+local DBL_INT_MIN = -1e14 + 1 -- luacheck: ignore 211
local function decode_u8(data)
local num = ffi.cast(uint8_ptr_t, data[0])[0]
@@ -465,8 +465,7 @@ end
local function decode_array(data, size)
assert (type(size) == "number")
local arr = {}
- local i
- for i=1,size,1 do
+ for i=1,size,1 do -- luacheck: ignore 213
table.insert(arr, decode_r(data))
end
if not msgpack.cfg.decode_save_metatables then
@@ -478,8 +477,7 @@ end
local function decode_map(data, size)
assert (type(size) == "number")
local map = {}
- local i
- for i=1,size,1 do
+ for i=1,size,1 do -- luacheck: ignore 213
local key = decode_r(data);
local val = decode_r(data);
map[key] = val
@@ -492,7 +490,7 @@ end
local ext_decoder = {
-- MP_UNKNOWN_EXTENSION
- [0] = function(data, len) error("unsupported extension type") end,
+ [0] = function() error("unsupported extension type") end,
-- MP_DECIMAL
[1] = function(data, len) local num = ffi.new("decimal_t") builtin.decimal_unpack(data, len, num) return num end,
}
@@ -502,7 +500,6 @@ local function decode_ext(data)
-- mp_decode_extl and mp_decode_decimal
-- need type code
data[0] = data[0] - 1
- local old_data = data[0]
local len = builtin.mp_decode_extl(data, t)
local fun = ext_decoder[t[0]]
if type(fun) == 'function' then
@@ -589,7 +586,7 @@ local function check_offset(offset, len)
if offset == nil then
return 1
end
- local offset = ffi.cast('ptrdiff_t', offset)
+ offset = ffi.cast('ptrdiff_t', offset)
if offset < 1 or offset > len then
error(string.format("offset = %d is out of bounds [1..%d]",
tonumber(offset), len))
diff --git a/src/lua/socket.lua b/src/lua/socket.lua
index a334ad45b..c5691a425 100644
--- a/src/lua/socket.lua
+++ b/src/lua/socket.lua
@@ -172,7 +172,7 @@ local function get_iflags(table, flags)
if type(flags) ~= 'table' then
flags = { flags }
end
- for i, f in pairs(flags) do
+ for _, f in pairs(flags) do
if table[f] == nil then
return nil
end
@@ -660,7 +660,7 @@ local function check_delimiter(self, limit, eols)
end
local shortest
- for i, eol in ipairs(eols) do
+ for _, eol in ipairs(eols) do
local data = ffi.C.memmem(rbuf.rpos, rbuf:size(), eol, #eol)
if data ~= nil then
local len = ffi.cast('char *', data) - rbuf.rpos + #eol
@@ -706,16 +706,16 @@ local function read(self, limit, timeout, check, ...)
local res = sysread(self, data, rbuf:unused())
if res == 0 then -- eof
self._errno = nil
- local len = rbuf:size()
- local data = ffi.string(rbuf.rpos, len)
+ len = rbuf:size()
+ data = ffi.string(rbuf.rpos, len)
rbuf.rpos = rbuf.rpos + len
return data
elseif res ~= nil then
rbuf.wpos = rbuf.wpos + res
- local len = check(self, limit, ...)
+ len = check(self, limit, ...)
if len ~= nil then
self._errno = nil
- local data = ffi.string(rbuf.rpos, len)
+ data = ffi.string(rbuf.rpos, len)
rbuf.rpos = rbuf.rpos + len
return data
end
@@ -1039,7 +1039,7 @@ local function tcp_connect(host, port, timeout)
boxerrno(0)
return s
end
- local timeout = timeout or TIMEOUT_INFINITY
+ timeout = timeout or TIMEOUT_INFINITY
local stop = fiber.clock() + timeout
local dns = getaddrinfo(host, port, timeout, { type = 'SOCK_STREAM',
protocol = 'tcp' })
@@ -1047,7 +1047,7 @@ local function tcp_connect(host, port, timeout)
boxerrno(boxerrno.EINVAL)
return nil
end
- for i, remote in pairs(dns) do
+ for _, remote in pairs(dns) do
timeout = stop - fiber.clock()
if timeout <= 0 then
boxerrno(boxerrno.ETIMEDOUT)
@@ -1078,8 +1078,8 @@ local function tcp_server_handler(server, sc, from)
end
end
-local function tcp_server_loop(server, s, addr)
- fiber.name(format("%s/%s:%s", server.name, addr.host, addr.port), {truncate = true})
+local function tcp_server_loop(server, s, address)
+ fiber.name(format("%s/%s:%s", server.name, address.host, address.port), {truncate = true})
log.info("started")
while socket_readable(s) do
local sc, from = socket_accept(s)
@@ -1104,15 +1104,15 @@ local function tcp_server_usage()
error('Usage: socket.tcp_server(host, port, handler | opts)')
end
-local function tcp_server_do_bind(s, addr)
- if socket_bind(s, addr.host, addr.port) then
- if addr.family == 'AF_UNIX' then
+local function tcp_server_do_bind(s, address)
+ if socket_bind(s, address.host, address.port) then
+ if address.family == 'AF_UNIX' then
-- Make close() remove the unix socket file created
-- by bind(). Note, this must be done before closing
-- the socket fd so that no other tcp server can
-- reuse the same path before we remove the file.
s.close = function(self)
- fio.unlink(addr.port)
+ fio.unlink(address.port)
return socket_close(self)
end
end
@@ -1121,12 +1121,12 @@ local function tcp_server_do_bind(s, addr)
return false
end
-local function tcp_server_bind_addr(s, addr)
- if tcp_server_do_bind(s, addr) then
+local function tcp_server_bind_addr(s, address)
+ if tcp_server_do_bind(s, address) then
return true
end
- if addr.family ~= 'AF_UNIX' then
+ if address.family ~= 'AF_UNIX' then
return false
end
@@ -1136,7 +1136,7 @@ local function tcp_server_bind_addr(s, addr)
local save_errno = boxerrno()
- local sc = tcp_connect(addr.host, addr.port)
+ local sc = tcp_connect(address.host, address.port)
if sc ~= nil then
sc:close()
boxerrno(save_errno)
@@ -1148,13 +1148,13 @@ local function tcp_server_bind_addr(s, addr)
return false
end
- log.info("tcp_server: remove dead UNIX socket: %s", addr.port)
- if not fio.unlink(addr.port) then
+ log.info("tcp_server: remove dead UNIX socket: %s", address.port)
+ if not fio.unlink(address.port) then
log.warn("tcp_server: %s", boxerrno.strerror())
boxerrno(save_errno)
return false
end
- return tcp_server_do_bind(s, addr)
+ return tcp_server_do_bind(s, address)
end
@@ -1172,8 +1172,8 @@ local function tcp_server_bind(host, port, prepare, timeout)
end
end
- for _, addr in ipairs(dns) do
- local s = socket_new(addr.family, addr.type, addr.protocol)
+ for _, address in ipairs(dns) do
+ local s = socket_new(address.family, address.type, address.protocol)
if s ~= nil then
local backlog
if prepare then
@@ -1181,13 +1181,13 @@ local function tcp_server_bind(host, port, prepare, timeout)
else
socket_setsockopt(s, 'SOL_SOCKET', 'SO_REUSEADDR', 1) -- ignore error
end
- if not tcp_server_bind_addr(s, addr) or not s:listen(backlog) then
+ if not tcp_server_bind_addr(s, address) or not s:listen(backlog) then
local save_errno = boxerrno()
socket_close(s)
boxerrno(save_errno)
return nil
end
- return s, addr
+ return s, address
end
end
-- DNS resolved successfully, but addresss family is not supported
@@ -1211,12 +1211,12 @@ local function tcp_server(host, port, opts, timeout)
tcp_server_usage()
end
server.name = server.name or 'server'
- local s, addr = tcp_server_bind(host, port, server.prepare, timeout)
+ local s, address = tcp_server_bind(host, port, server.prepare, timeout)
if not s then
return nil
end
- fiber.create(tcp_server_loop, server, s, addr)
- return s, addr
+ fiber.create(tcp_server_loop, server, s, address)
+ return s, address
end
socket_mt = {
@@ -1311,7 +1311,7 @@ local function lsocket_tcp_getpeername(self)
return peer.host, tostring(peer.port), peer.family:match("AF_(.*)"):lower()
end
-local function lsocket_tcp_settimeout(self, value, mode)
+local function lsocket_tcp_settimeout(self, value, mode) -- luacheck: ignore 212
check_socket(self)
self.timeout = value
-- mode is effectively ignored
@@ -1467,7 +1467,7 @@ local function lsocket_tcp_receive(self, pattern, prefix)
local result = { prefix }
local deadline = fiber.clock() + (self.timeout or TIMEOUT_INFINITY)
repeat
- local data = read(self, LIMIT_INFINITY, timeout, check_infinity)
+ data = read(self, LIMIT_INFINITY, timeout, check_infinity)
if data == nil then
if not errno_is_transient[self._errno] then
return nil, socket_error(self)
@@ -1535,7 +1535,7 @@ lsocket_tcp_mt.__index.send = lsocket_tcp_send;
-- TCP Constructor and Shortcuts
--
-local function lsocket_tcp()
+local function lsocket_tcp(self)
local s = socket_new('AF_INET', 'SOCK_STREAM', 'tcp')
if not s then
return nil, socket_error(self)
@@ -1559,7 +1559,7 @@ local function lsocket_bind(host, port, backlog)
if host == nil or port == nil then
error("Usage: luasocket.bind(host, port [, backlog])")
end
- local function prepare(s) return backlog end
+ local function prepare() return backlog end
local s = tcp_server_bind(host, port, prepare)
if not s then
return nil, boxerrno.strerror()
@@ -1578,7 +1578,7 @@ return setmetatable({
iowait = internal.iowait,
internal = internal,
}, {
- __call = function(self, ...) return socket_new(...) end;
+ __call = function(self, ...) return socket_new(...) end; -- luacheck: ignore 212
__index = {
tcp = lsocket_tcp;
connect = lsocket_connect;
diff --git a/src/lua/string.lua b/src/lua/string.lua
index 6e12c59ae..d3a846645 100644
--- a/src/lua/string.lua
+++ b/src/lua/string.lua
@@ -233,7 +233,6 @@ local function string_startswith(inp, head, _start, _end)
return false
end
_start = _start - 1
- _end = _start + head_len - 1
return memcmp(c_char_ptr(inp) + _start, c_char_ptr(head), head_len) == 0
end
diff --git a/src/lua/swim.lua b/src/lua/swim.lua
index 01eeb7eae..7fd2e8250 100644
--- a/src/lua/swim.lua
+++ b/src/lua/swim.lua
@@ -1,5 +1,5 @@
local ffi = require('ffi')
-local uuid = require('uuid')
+local uuid_ = require('uuid')
local buffer = require('buffer')
local msgpack = require('msgpack')
local crypto = require('crypto')
@@ -239,7 +239,7 @@ local function swim_check_uuid(value, func_name)
end
return error(func_name..': expected string UUID or struct tt_uuid')
end
- value = uuid.fromstr(value)
+ value = uuid_.fromstr(value)
if not value then
return error(func_name..': invalid UUID')
end
@@ -370,7 +370,7 @@ end
--
local function swim_member_payload_str(m)
local ptr = swim_check_member(m, 'member:payload_str()')
- local cdata, size = swim_member_payload_raw(ptr)
+ local _, size = swim_member_payload_raw(ptr)
if size > 0 then
return ffi.string(swim_member_payload_raw(ptr))
end
@@ -461,7 +461,7 @@ local swim_member_mt = {
is_dropped = swim_member_is_dropped,
},
__serialize = swim_member_serialize,
- __newindex = function(m)
+ __newindex = function()
return error('swim_member is a read-only object')
end
}
@@ -781,20 +781,20 @@ local swim_member_event_mt = {
--
-- Create a closure function for preprocessing raw SWIM member
-- event trigger parameters.
--- @param s SWIM instance.
+-- @param instance SWIM instance.
-- @param callback User functions to call.
-- @param ctx An optional parameter for @a callback passed as is.
-- @return A function to set as a trigger.
--
-local function swim_on_member_event_new(s, callback, ctx)
+local function swim_on_member_event_new(instance, callback, ctx)
-- Do not keep a hard reference to a SWIM instance. Otherwise
-- it is a cyclic reference, and both the instance and the
-- trigger will never be GC-ed.
- s = setmetatable({s}, {__mode = 'v'})
+ instance = setmetatable({instance}, {__mode = 'v'})
return function(member_ptr, event_mask)
- local s = s[1]
- if s then
- local m = swim_wrap_member(s, member_ptr)
+ local i = instance[1]
+ if i then
+ local m = swim_wrap_member(i, member_ptr)
local event = setmetatable({event_mask}, swim_member_event_mt)
return callback(m, event, ctx)
end
diff --git a/src/lua/tap.lua b/src/lua/tap.lua
index 94b080d5a..04497386e 100644
--- a/src/lua/tap.lua
+++ b/src/lua/tap.lua
@@ -53,7 +53,7 @@ local function ok(test, cond, message, extra)
io.write(string.format("not ok - %s\n", message))
extra = extra or {}
if test.trace then
- local frame = debug.getinfo(3, "Sl")
+ debug.getinfo(3, "Sl")
extra.trace = traceback()
extra.filename = extra.trace[#extra.trace].filename
extra.line = extra.trace[#extra.trace].line
@@ -76,9 +76,6 @@ local function skip(test, message, extra)
ok(test, true, message.." # skip", extra)
end
-
-local nan = 0/0
-
local function cmpdeeply(got, expected, extra)
if type(expected) == "number" or type(got) == "number" then
extra.got = got
@@ -190,38 +187,38 @@ local function isboolean(test, v, message, extra)
return is(test, type(v), 'boolean', message, extra)
end
-local function isfunction(test, v, message, extra)
- return is(test, type(v), 'function', message, extra)
+local function isfunction(testcase, v, message, extra)
+ return is(testcase, type(v), 'function', message, extra)
end
-local function isudata(test, v, utype, message, extra)
+local function isudata(testcase, v, utype, message, extra)
extra = extra or {}
extra.expected = 'userdata<'..utype..'>'
if type(v) == 'userdata' then
extra.got = 'userdata<'..getmetatable(v)..'>'
- return ok(test, getmetatable(v) == utype, message, extra)
+ return ok(testcase, getmetatable(v) == utype, message, extra)
else
extra.got = type(v)
- return fail(test, message, extra)
+ return fail(testcase, message, extra)
end
end
-local function iscdata(test, v, ctype, message, extra)
+local function iscdata(testcase, v, ctype, message, extra)
extra = extra or {}
extra.expected = ffi.typeof(ctype)
if type(v) == 'cdata' then
extra.got = ffi.typeof(v)
- return ok(test, ffi.istype(ctype, v), message, extra)
+ return ok(testcase, ffi.istype(ctype, v), message, extra)
else
extra.got = type(v)
- return fail(test, message, extra)
+ return fail(testcase, message, extra)
end
end
local test_mt
local function test(parent, name, fun, ...)
local level = parent ~= nil and parent.level + 1 or 0
- local test = setmetatable({
+ local testcase = setmetatable({
parent = parent;
name = name;
level = level;
@@ -232,48 +229,48 @@ local function test(parent, name, fun, ...)
strict = false;
}, test_mt)
if fun ~= nil then
- test:diag('%s', test.name)
- fun(test, ...)
- test:diag('%s: end', test.name)
- return test:check()
+ testcase:diag('%s', testcase.name)
+ fun(testcase, ...)
+ testcase:diag('%s: end', testcase.name)
+ return testcase:check()
else
- return test
+ return testcase
end
end
-local function plan(test, planned)
- test.planned = planned
- io.write(string.rep(' ', 4 * test.level), string.format("1..%d\n", planned))
+local function plan(testcase, planned)
+ testcase.planned = planned
+ io.write(string.rep(' ', 4 * testcase.level), string.format("1..%d\n", planned))
end
-local function check(test)
- if test.checked then
+local function check(testcase)
+ if testcase.checked then
error('check called twice')
end
- test.checked = true
- if test.planned ~= test.total then
- if test.parent ~= nil then
- ok(test.parent, false, "bad plan", { planned = test.planned;
- run = test.total})
+ testcase.checked = true
+ if testcase.planned ~= testcase.total then
+ if testcase.parent ~= nil then
+ ok(testcase.parent, false, "bad plan", { planned = testcase.planned;
+ run = testcase.total})
else
- diag(test, string.format("bad plan: planned %d run %d",
- test.planned, test.total))
+ diag(testcase, string.format("bad plan: planned %d run %d",
+ testcase.planned, testcase.total))
end
- elseif test.failed > 0 then
- if test.parent ~= nil then
- ok(test.parent, false, "failed subtests", {
- failed = test.failed;
- planned = test.planned;
+ elseif testcase.failed > 0 then
+ if testcase.parent ~= nil then
+ ok(testcase.parent, false, "failed subtests", {
+ failed = testcase.failed;
+ planned = testcase.planned;
})
else
- diag(test, "failed subtest: %d", test.failed)
+ diag(testcase, "failed subtest: %d", testcase.failed)
end
else
- if test.parent ~= nil then
- ok(test.parent, true, test.name)
+ if testcase.parent ~= nil then
+ ok(testcase.parent, true, testcase.name)
end
end
- return test.planned == test.total and test.failed == 0
+ return testcase.planned == testcase.total and testcase.failed == 0
end
test_mt = {
diff --git a/src/lua/trigger.lua b/src/lua/trigger.lua
index 76a582c47..1330ecdd4 100644
--- a/src/lua/trigger.lua
+++ b/src/lua/trigger.lua
@@ -1,7 +1,4 @@
local fun = require('fun')
-local log = require('log')
-
-local table_clear = require('table.clear')
--
-- Checks that argument is a callable, i.e. a function or a table
--
2.23.0
--
sergeyb@
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua
2020-04-03 9:39 [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua Sergey Bronnikov
@ 2020-04-03 10:13 ` lvasiliev
2020-04-03 11:03 ` Sergey Bronnikov
2020-04-03 14:21 ` Oleg Babin
` (3 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: lvasiliev @ 2020-04-03 10:13 UTC (permalink / raw)
To: Sergey Bronnikov, tarantool-patches, avtikhon, alexander.turenko,
o.piskunov
My patch was died in maillist, I hope you will more lucky than me:)
https://lists.tarantool.org/pipermail/tarantool-patches/2019-November/012549.html
On 03.04.2020 12:39, Sergey Bronnikov wrote:
> GitHub branch: https://github.com/tarantool/tarantool/tree/ligurio/gh-4681-fix-luacheck-warnings
>
> How-to check:
>
> $ tarantoolctl rocks install luacheck
> $ .rocks/bin/luacheck src/lua/*.lua
>
> ---
> src/lua/argparse.lua | 6 ++--
> src/lua/buffer.lua | 4 +--
> src/lua/clock.lua | 2 +-
> src/lua/crypto.lua | 18 +++++-----
> src/lua/csv.lua | 5 ++-
> src/lua/digest.lua | 6 ++--
> src/lua/env.lua | 2 +-
> src/lua/errno.lua | 2 +-
> src/lua/fio.lua | 28 ++++++++--------
> src/lua/help.lua | 24 +++++++-------
> src/lua/httpc.lua | 3 --
> src/lua/init.lua | 17 +++++-----
> src/lua/msgpackffi.lua | 15 ++++-----
> src/lua/socket.lua | 66 ++++++++++++++++++-------------------
> src/lua/string.lua | 1 -
> src/lua/swim.lua | 20 +++++------
> src/lua/tap.lua | 75 ++++++++++++++++++++----------------------
> src/lua/trigger.lua | 3 --
> 18 files changed, 142 insertions(+), 155 deletions(-)
>
> diff --git a/src/lua/argparse.lua b/src/lua/argparse.lua
> index faa0ae130..f58985425 100644
> --- a/src/lua/argparse.lua
> +++ b/src/lua/argparse.lua
> @@ -90,8 +90,8 @@ local function convert_parameter(name, convert_from, convert_to)
> return convert_from
> end
>
> -local function parameters_parse(t_in, options)
> - local t_out, t_in = {}, t_in or {}
> +local function parameters_parse(t__in, options)
> + local t_out, t_in = {}, t__in or {}
>
> -- Prepare a lookup table for options. An option name -> a
> -- type name to convert a parameter into or true (which means
> @@ -145,7 +145,7 @@ local function parameters_parse(t_in, options)
> if parameter_has_value(lookup[command]) then
> -- in case next argument is value of this key (not --arg)
> local next_arg = t_in[i + 1]
> - local is_long, is_short, is_dash = parse_param_prefix(next_arg)
> + is_long, is_short, is_dash = parse_param_prefix(next_arg)
> if is_dash then
> skip_param = true
> elseif is_long == false and not is_short and not is_dash then
> diff --git a/src/lua/buffer.lua b/src/lua/buffer.lua
> index 9aac82b39..5979980ed 100644
> --- a/src/lua/buffer.lua
> +++ b/src/lua/buffer.lua
> @@ -182,7 +182,7 @@ local ibuf_methods = {
> unused = ibuf_unused;
> }
>
> -local function ibuf_tostring(ibuf)
> +local function ibuf_tostring(ibuf) -- luacheck: ignore 212
> return '<ibuf>'
> end
> local ibuf_mt = {
> @@ -193,7 +193,7 @@ local ibuf_mt = {
>
> ffi.metatype(ibuf_t, ibuf_mt);
>
> -local function ibuf_new(arg, arg2)
> +local function ibuf_new(arg)
> local buf = ffi.new(ibuf_t)
> local slabc = builtin.tarantool_lua_slab_cache()
> builtin.ibuf_create(buf, slabc, READAHEAD)
> diff --git a/src/lua/clock.lua b/src/lua/clock.lua
> index 60c78663c..fee43ccde 100644
> --- a/src/lua/clock.lua
> +++ b/src/lua/clock.lua
> @@ -33,7 +33,7 @@ clock.bench = function(fun, ...)
> overhead = clock.proc() - overhead
> local start_time = clock.proc()
> local res = {0, fun(...)}
> - res[1] = clock.proc() - start_time - overhead, res
> + res[1] = clock.proc() - start_time - overhead
> return res
> end
>
> diff --git a/src/lua/crypto.lua b/src/lua/crypto.lua
> index bf3064c70..9929b93ba 100644
> --- a/src/lua/crypto.lua
> +++ b/src/lua/crypto.lua
> @@ -75,7 +75,7 @@ local function openssl_err_str()
> end
>
> local digests = {}
> -for class, name in pairs({
> +for class, _ in pairs({
> md2 = 'MD2', md4 = 'MD4', md5 = 'MD5',
> sha1 = 'SHA1', sha224 = 'SHA224',
> sha256 = 'SHA256', sha384 = 'SHA384', sha512 = 'SHA512',
> @@ -318,7 +318,7 @@ for class, digest in pairs(digests) do
> digest_api[class] = setmetatable({
> new = function () return digest_new(digest) end
> }, {
> - __call = function (self, str)
> + __call = function (self, str) -- luacheck: ignore 212
> if type(str) ~= 'string' then
> error("Usage: digest."..class.."(string)")
> end
> @@ -332,7 +332,7 @@ for class, digest in pairs(digests) do
> end
>
> digest_api = setmetatable(digest_api,
> - {__index = function(self, digest)
> + {__index = function(self, digest) -- luacheck: ignore 212
> return error('Digest method "' .. digest .. '" is not supported')
> end })
>
> @@ -341,7 +341,7 @@ for class, digest in pairs(hmacs) do
> hmac_api[class] = setmetatable({
> new = function (key) return hmac_new(digest, key) end
> }, {
> - __call = function (self, key, str)
> + __call = function (self, key, str) -- luacheck: ignore 212
> if type(str) ~= 'string' then
> error("Usage: hmac."..class.."(key, string)")
> end
> @@ -361,7 +361,7 @@ for class, digest in pairs(hmacs) do
> end
>
> hmac_api = setmetatable(hmac_api,
> - {__index = function(self, digest)
> + {__index = function(self, digest) -- luacheck: ignore 212
> return error('HMAC method "' .. digest .. '" is not supported')
> end })
>
> @@ -384,12 +384,12 @@ local crypto_dirs = {
> }
>
> local algo_api_mt = {
> - __index = function(self, mode)
> + __index = function(self, mode) -- luacheck: ignore 212
> error('Cipher mode ' .. mode .. ' is not supported')
> end
> }
> local crypto_api_mt = {
> - __index = function(self, cipher)
> + __index = function(self, cipher) -- luacheck: ignore 212
> return error('Cipher method "' .. cipher .. '" is not supported')
> end
> }
> @@ -408,7 +408,7 @@ for algo_name, algo_value in pairs(crypto_algos) do
> dir_value)
> end
> }, {
> - __call = function(self, str, key, iv)
> + __call = function(self, str, key, iv) -- luacheck: ignore 212
> local ctx = crypto_stream_new(algo_value, mode_value, key,
> iv, dir_value)
> local res = ctx:update(str)
> @@ -428,7 +428,7 @@ local public_methods = {
> }
>
> local module_mt = {
> - __serialize = function(s)
> + __serialize = function()
> return public_methods
> end,
> __index = public_methods
> diff --git a/src/lua/csv.lua b/src/lua/csv.lua
> index 7dff2f213..de6726bb7 100644
> --- a/src/lua/csv.lua
> +++ b/src/lua/csv.lua
> @@ -188,10 +188,10 @@ module.dump = function(t, opts, writable)
> if type(writable) == 'nil' then
> result_table = {}
> end
> - for k, line in pairs(t) do
> + for _, line in pairs(t) do
> local first = true
> local output_tuple = {}
> - for k2, field in pairs(line) do
> + for _, field in pairs(line) do
> local strf = tostring(field)
> local buf_new_size = (strf:len() + 1) * 2
> if buf_new_size > bufsz then
> @@ -214,7 +214,6 @@ module.dump = function(t, opts, writable)
> else
> writable:write(table.concat(output_tuple))
> end
> - output_tuple = {}
> end
> ffi.C.csv_destroy(csv)
> csv.realloc(buf, 0)
> diff --git a/src/lua/digest.lua b/src/lua/digest.lua
> index 6ed91cfa2..5c6eb2ae2 100644
> --- a/src/lua/digest.lua
> +++ b/src/lua/digest.lua
> @@ -91,7 +91,7 @@ PMurHash = {
> }
>
> setmetatable(PMurHash, {
> - __call = function(self, str)
> + __call = function(self, str) -- luacheck: ignore 212
> if type(str) ~= 'string' then
> error("Usage: digest.murhash(string)")
> end
> @@ -134,7 +134,7 @@ CRC32 = {
> }
>
> setmetatable(CRC32, {
> - __call = function(self, str)
> + __call = function(self, str) -- luacheck: ignore 212
> if type(str) ~= 'string' then
> error("Usage digest.crc32(string)")
> end
> @@ -246,7 +246,7 @@ local m = {
> end
> }
>
> -for digest, name in pairs(digest_shortcuts) do
> +for digest, _ in pairs(digest_shortcuts) do
> m[digest] = function (str)
> return crypto.digest[digest](str)
> end
> diff --git a/src/lua/env.lua b/src/lua/env.lua
> index dd1616a84..d851586f0 100644
> --- a/src/lua/env.lua
> +++ b/src/lua/env.lua
> @@ -28,7 +28,7 @@ os.environ = function()
> end
>
> os.setenv = function(key, value)
> - local rv = nil
> + local rv = nil -- luacheck: ignore 311
> if value ~= nil then
> rv = ffi.C.setenv(key, value, 1)
> else
> diff --git a/src/lua/errno.lua b/src/lua/errno.lua
> index db800ce30..c91cad4b7 100644
> --- a/src/lua/errno.lua
> +++ b/src/lua/errno.lua
> @@ -17,5 +17,5 @@ return setmetatable({
> }, {
> __index = errno_list,
> __newindex = function() error("Can't create new errno constants") end,
> - __call = function(self, ...) return ffi.errno(...) end
> + __call = function(self, ...) return ffi.errno(...) end -- luacheck: ignore 212
> })
> diff --git a/src/lua/fio.lua b/src/lua/fio.lua
> index 4692e1026..dd71c6742 100644
> --- a/src/lua/fio.lua
> +++ b/src/lua/fio.lua
> @@ -306,7 +306,7 @@ fio.abspath = function(path)
> error("Usage: fio.abspath(path)")
> end
> path = path
> - local joined_path = ''
> + local joined_path = '' -- luacheck: ignore 311
> local path_tab = {}
> if string.sub(path, 1, 1) == '/' then
> joined_path = path
> @@ -343,7 +343,7 @@ fio.listdir = function(path)
> return t
> end
> local names = string.split(str, "\n")
> - for i, name in ipairs(names) do
> + for _, name in ipairs(names) do
> table.insert(t, name)
> end
> return t
> @@ -355,15 +355,15 @@ fio.mktree = function(path, mode)
> end
> path = fio.abspath(path)
>
> - local path = string.gsub(path, '^/', '')
> + path = string.gsub(path, '^/', '')
> local dirs = string.split(path, "/")
>
> local current_dir = "/"
> - for i, dir in ipairs(dirs) do
> + for _, dir in ipairs(dirs) do
> current_dir = fio.pathjoin(current_dir, dir)
> local stat = fio.stat(current_dir)
> if stat == nil then
> - local st, err = fio.mkdir(current_dir, mode)
> + local _, err = fio.mkdir(current_dir, mode)
> -- fio.stat() and fio.mkdir() above are separate calls
> -- and a file system may be changed between them. So
> -- if the error here is due to an existing directory,
> @@ -384,20 +384,20 @@ fio.rmtree = function(path)
> if type(path) ~= 'string' then
> error("Usage: fio.rmtree(path)")
> end
> - local status, err
> + local status -- luacheck: ignore 231
> path = fio.abspath(path)
> local ls, err = fio.listdir(path)
> if err ~= nil then
> return nil, err
> end
> - for i, f in ipairs(ls) do
> + for _, f in ipairs(ls) do
> local tmppath = fio.pathjoin(path, f)
> local st = fio.lstat(tmppath)
> if st then
> if st:is_dir() then
> - st, err = fio.rmtree(tmppath)
> + _, err = fio.rmtree(tmppath)
> else
> - st, err = fio.unlink(tmppath)
> + _, err = fio.unlink(tmppath)
> end
> if err ~= nil then
> return nil, err
> @@ -430,7 +430,6 @@ fio.copytree = function(from, to)
> if type(from) ~= 'string' or type(to) ~= 'string' then
> error('Usage: fio.copytree(from, to)')
> end
> - local status, reason
> local st = fio.stat(from)
> if not st then
> return false, string.format("Directory %s does not exist", from)
> @@ -444,14 +443,14 @@ fio.copytree = function(from, to)
> end
>
> -- create tree of destination
> - status, reason = fio.mktree(to)
> + local status, reason = fio.mktree(to) -- luacheck: ignore 231
> if reason ~= nil then
> return false, reason
> end
> - for i, f in ipairs(ls) do
> + for _, f in ipairs(ls) do
> local ffrom = fio.pathjoin(from, f)
> local fto = fio.pathjoin(to, f)
> - local st = fio.lstat(ffrom)
> + st = fio.lstat(ffrom)
> if st and st:is_dir() then
> status, reason = fio.copytree(ffrom, fto)
> if reason ~= nil then
> @@ -465,7 +464,8 @@ fio.copytree = function(from, to)
> end
> end
> if st:is_link() then
> - local link_to, reason = fio.readlink(ffrom)
> + local link_to
> + link_to, reason = fio.readlink(ffrom)
> if reason ~= nil then
> return false, reason
> end
> diff --git a/src/lua/help.lua b/src/lua/help.lua
> index 54ff1b5d0..768f4dec4 100644
> --- a/src/lua/help.lua
> +++ b/src/lua/help.lua
> @@ -7,22 +7,22 @@ local doc = require('help.en_US')
> -- corresponds to a tarantool version a user runs.
> local DOCUMENTATION_VERSION = '2.1'
>
> -help = { doc.help }
> -tutorial = {}
> -tutorial[1] = help[1]
> +help = { doc.help } -- luacheck: ignore 111
> +tutorial = {} -- luacheck: ignore 111
> +tutorial[1] = help[1] -- luacheck: ignore 112 113
>
> -local help_function_data = {};
> -local help_object_data = {}
> +local help_function_data = {}; -- luacheck: ignore 211
> +local help_object_data = {} -- luacheck: ignore 211
>
> -local function help_call(table, param)
> - return help
> +local function help_call(table, param) -- luacheck: ignore 212
> + return help -- luacheck: ignore 113
> end
>
> -setmetatable(help, { __call = help_call })
> +setmetatable(help, { __call = help_call }) -- luacheck: ignore 113
>
> local screen_id = 1;
>
> -local function tutorial_call(table, action)
> +local function tutorial_call(table, action) -- luacheck: ignore 212
> if action == 'start' then
> screen_id = 1;
> elseif action == 'next' or action == 'more' then
> @@ -46,9 +46,9 @@ local function tutorial_call(table, action)
> return (res:gsub('<version>', DOCUMENTATION_VERSION))
> end
>
> -setmetatable(tutorial, { __call = tutorial_call })
> +setmetatable(tutorial, { __call = tutorial_call }) -- luacheck: ignore 113
>
> return {
> - help = help;
> - tutorial = tutorial;
> + help = help; -- luacheck: ignore 113
> + tutorial = tutorial; -- luacheck: ignore 113
> }
> diff --git a/src/lua/httpc.lua b/src/lua/httpc.lua
> index 6381c6a1a..9336dcee0 100644
> --- a/src/lua/httpc.lua
> +++ b/src/lua/httpc.lua
> @@ -29,8 +29,6 @@
> -- SUCH DAMAGE.
> --
>
> -local fiber = require('fiber')
> -
> local driver = package.loaded.http.client
> package.loaded.http = nil
>
> @@ -112,7 +110,6 @@ local special_characters = {
> [']'] = true,
> ['<'] = true,
> ['>'] = true,
> - ['>'] = true,
> ['@'] = true,
> [','] = true,
> [';'] = true,
> diff --git a/src/lua/init.lua b/src/lua/init.lua
> index ff3e74c3c..b075915a3 100644
> --- a/src/lua/init.lua
> +++ b/src/lua/init.lua
> @@ -71,7 +71,7 @@ local function setsearchroot(path)
> package_searchroot = path and fio.abspath(path)
> end
>
> -dostring = function(s, ...)
> +dostring = function(s, ...) -- luacheck: ignore 121
> local chunk, message = loadstring(s)
> if chunk == nil then
> error(message, 2)
> @@ -80,7 +80,7 @@ dostring = function(s, ...)
> end
>
> local fiber = require("fiber")
> -os.exit = function(code)
> +os.exit = function(code) -- luacheck: ignore 122
> code = (type(code) == 'number') and code or 0
> ffi.C.tarantool_exit(code)
> -- Make sure we yield even if the code after
> @@ -144,9 +144,9 @@ local function gen_search_func(path_fn, templates, need_traverse)
>
> local searchpaths = {}
>
> - for _, path in ipairs(paths) do
> + for _, p in ipairs(paths) do
> for _, template in pairs(templates) do
> - table.insert(searchpaths, fio.pathjoin(path, template))
> + table.insert(searchpaths, fio.pathjoin(p, template))
> end
> end
>
> @@ -176,7 +176,8 @@ local function gen_loader_func(search_fn, load_fn)
> if not file then
> return err
> end
> - local loaded, err = load_fn(file, name)
> + local loaded
> + loaded, err = load_fn(file, name)
> if err == nil then
> return loaded
> else
> @@ -221,9 +222,9 @@ table.insert(package.loaders, 5, gen_loader_func(search_rocks_lib, load_lib))
> -- package.cpath 7
> -- croot 8
>
> -package.search = search
> -package.searchroot = searchroot
> -package.setsearchroot = setsearchroot
> +package.search = search -- luacheck: ignore 122
> +package.searchroot = searchroot -- luacheck: ignore 122
> +package.setsearchroot = setsearchroot -- luacheck: ignore 122
>
> return {
> uptime = uptime;
> diff --git a/src/lua/msgpackffi.lua b/src/lua/msgpackffi.lua
> index f775f2d41..471b72c84 100644
> --- a/src/lua/msgpackffi.lua
> +++ b/src/lua/msgpackffi.lua
> @@ -291,7 +291,7 @@ local function encode(obj)
> return r
> end
>
> -local function encode_ibuf(obj, ibuf)
> +local function encode_ibuf(obj, ibuf) -- luacheck: ignore 211
> encode_r(ibuf, obj, 0)
> end
>
> @@ -320,7 +320,7 @@ local decode_r
>
> -- See similar constants in utils.cc
> local DBL_INT_MAX = 1e14 - 1
> -local DBL_INT_MIN = -1e14 + 1
> +local DBL_INT_MIN = -1e14 + 1 -- luacheck: ignore 211
>
> local function decode_u8(data)
> local num = ffi.cast(uint8_ptr_t, data[0])[0]
> @@ -465,8 +465,7 @@ end
> local function decode_array(data, size)
> assert (type(size) == "number")
> local arr = {}
> - local i
> - for i=1,size,1 do
> + for i=1,size,1 do -- luacheck: ignore 213
> table.insert(arr, decode_r(data))
> end
> if not msgpack.cfg.decode_save_metatables then
> @@ -478,8 +477,7 @@ end
> local function decode_map(data, size)
> assert (type(size) == "number")
> local map = {}
> - local i
> - for i=1,size,1 do
> + for i=1,size,1 do -- luacheck: ignore 213
> local key = decode_r(data);
> local val = decode_r(data);
> map[key] = val
> @@ -492,7 +490,7 @@ end
>
> local ext_decoder = {
> -- MP_UNKNOWN_EXTENSION
> - [0] = function(data, len) error("unsupported extension type") end,
> + [0] = function() error("unsupported extension type") end,
> -- MP_DECIMAL
> [1] = function(data, len) local num = ffi.new("decimal_t") builtin.decimal_unpack(data, len, num) return num end,
> }
> @@ -502,7 +500,6 @@ local function decode_ext(data)
> -- mp_decode_extl and mp_decode_decimal
> -- need type code
> data[0] = data[0] - 1
> - local old_data = data[0]
> local len = builtin.mp_decode_extl(data, t)
> local fun = ext_decoder[t[0]]
> if type(fun) == 'function' then
> @@ -589,7 +586,7 @@ local function check_offset(offset, len)
> if offset == nil then
> return 1
> end
> - local offset = ffi.cast('ptrdiff_t', offset)
> + offset = ffi.cast('ptrdiff_t', offset)
> if offset < 1 or offset > len then
> error(string.format("offset = %d is out of bounds [1..%d]",
> tonumber(offset), len))
> diff --git a/src/lua/socket.lua b/src/lua/socket.lua
> index a334ad45b..c5691a425 100644
> --- a/src/lua/socket.lua
> +++ b/src/lua/socket.lua
> @@ -172,7 +172,7 @@ local function get_iflags(table, flags)
> if type(flags) ~= 'table' then
> flags = { flags }
> end
> - for i, f in pairs(flags) do
> + for _, f in pairs(flags) do
> if table[f] == nil then
> return nil
> end
> @@ -660,7 +660,7 @@ local function check_delimiter(self, limit, eols)
> end
>
> local shortest
> - for i, eol in ipairs(eols) do
> + for _, eol in ipairs(eols) do
> local data = ffi.C.memmem(rbuf.rpos, rbuf:size(), eol, #eol)
> if data ~= nil then
> local len = ffi.cast('char *', data) - rbuf.rpos + #eol
> @@ -706,16 +706,16 @@ local function read(self, limit, timeout, check, ...)
> local res = sysread(self, data, rbuf:unused())
> if res == 0 then -- eof
> self._errno = nil
> - local len = rbuf:size()
> - local data = ffi.string(rbuf.rpos, len)
> + len = rbuf:size()
> + data = ffi.string(rbuf.rpos, len)
> rbuf.rpos = rbuf.rpos + len
> return data
> elseif res ~= nil then
> rbuf.wpos = rbuf.wpos + res
> - local len = check(self, limit, ...)
> + len = check(self, limit, ...)
> if len ~= nil then
> self._errno = nil
> - local data = ffi.string(rbuf.rpos, len)
> + data = ffi.string(rbuf.rpos, len)
> rbuf.rpos = rbuf.rpos + len
> return data
> end
> @@ -1039,7 +1039,7 @@ local function tcp_connect(host, port, timeout)
> boxerrno(0)
> return s
> end
> - local timeout = timeout or TIMEOUT_INFINITY
> + timeout = timeout or TIMEOUT_INFINITY
> local stop = fiber.clock() + timeout
> local dns = getaddrinfo(host, port, timeout, { type = 'SOCK_STREAM',
> protocol = 'tcp' })
> @@ -1047,7 +1047,7 @@ local function tcp_connect(host, port, timeout)
> boxerrno(boxerrno.EINVAL)
> return nil
> end
> - for i, remote in pairs(dns) do
> + for _, remote in pairs(dns) do
> timeout = stop - fiber.clock()
> if timeout <= 0 then
> boxerrno(boxerrno.ETIMEDOUT)
> @@ -1078,8 +1078,8 @@ local function tcp_server_handler(server, sc, from)
> end
> end
>
> -local function tcp_server_loop(server, s, addr)
> - fiber.name(format("%s/%s:%s", server.name, addr.host, addr.port), {truncate = true})
> +local function tcp_server_loop(server, s, address)
> + fiber.name(format("%s/%s:%s", server.name, address.host, address.port), {truncate = true})
> log.info("started")
> while socket_readable(s) do
> local sc, from = socket_accept(s)
> @@ -1104,15 +1104,15 @@ local function tcp_server_usage()
> error('Usage: socket.tcp_server(host, port, handler | opts)')
> end
>
> -local function tcp_server_do_bind(s, addr)
> - if socket_bind(s, addr.host, addr.port) then
> - if addr.family == 'AF_UNIX' then
> +local function tcp_server_do_bind(s, address)
> + if socket_bind(s, address.host, address.port) then
> + if address.family == 'AF_UNIX' then
> -- Make close() remove the unix socket file created
> -- by bind(). Note, this must be done before closing
> -- the socket fd so that no other tcp server can
> -- reuse the same path before we remove the file.
> s.close = function(self)
> - fio.unlink(addr.port)
> + fio.unlink(address.port)
> return socket_close(self)
> end
> end
> @@ -1121,12 +1121,12 @@ local function tcp_server_do_bind(s, addr)
> return false
> end
>
> -local function tcp_server_bind_addr(s, addr)
> - if tcp_server_do_bind(s, addr) then
> +local function tcp_server_bind_addr(s, address)
> + if tcp_server_do_bind(s, address) then
> return true
> end
>
> - if addr.family ~= 'AF_UNIX' then
> + if address.family ~= 'AF_UNIX' then
> return false
> end
>
> @@ -1136,7 +1136,7 @@ local function tcp_server_bind_addr(s, addr)
>
> local save_errno = boxerrno()
>
> - local sc = tcp_connect(addr.host, addr.port)
> + local sc = tcp_connect(address.host, address.port)
> if sc ~= nil then
> sc:close()
> boxerrno(save_errno)
> @@ -1148,13 +1148,13 @@ local function tcp_server_bind_addr(s, addr)
> return false
> end
>
> - log.info("tcp_server: remove dead UNIX socket: %s", addr.port)
> - if not fio.unlink(addr.port) then
> + log.info("tcp_server: remove dead UNIX socket: %s", address.port)
> + if not fio.unlink(address.port) then
> log.warn("tcp_server: %s", boxerrno.strerror())
> boxerrno(save_errno)
> return false
> end
> - return tcp_server_do_bind(s, addr)
> + return tcp_server_do_bind(s, address)
> end
>
>
> @@ -1172,8 +1172,8 @@ local function tcp_server_bind(host, port, prepare, timeout)
> end
> end
>
> - for _, addr in ipairs(dns) do
> - local s = socket_new(addr.family, addr.type, addr.protocol)
> + for _, address in ipairs(dns) do
> + local s = socket_new(address.family, address.type, address.protocol)
> if s ~= nil then
> local backlog
> if prepare then
> @@ -1181,13 +1181,13 @@ local function tcp_server_bind(host, port, prepare, timeout)
> else
> socket_setsockopt(s, 'SOL_SOCKET', 'SO_REUSEADDR', 1) -- ignore error
> end
> - if not tcp_server_bind_addr(s, addr) or not s:listen(backlog) then
> + if not tcp_server_bind_addr(s, address) or not s:listen(backlog) then
> local save_errno = boxerrno()
> socket_close(s)
> boxerrno(save_errno)
> return nil
> end
> - return s, addr
> + return s, address
> end
> end
> -- DNS resolved successfully, but addresss family is not supported
> @@ -1211,12 +1211,12 @@ local function tcp_server(host, port, opts, timeout)
> tcp_server_usage()
> end
> server.name = server.name or 'server'
> - local s, addr = tcp_server_bind(host, port, server.prepare, timeout)
> + local s, address = tcp_server_bind(host, port, server.prepare, timeout)
> if not s then
> return nil
> end
> - fiber.create(tcp_server_loop, server, s, addr)
> - return s, addr
> + fiber.create(tcp_server_loop, server, s, address)
> + return s, address
> end
>
> socket_mt = {
> @@ -1311,7 +1311,7 @@ local function lsocket_tcp_getpeername(self)
> return peer.host, tostring(peer.port), peer.family:match("AF_(.*)"):lower()
> end
>
> -local function lsocket_tcp_settimeout(self, value, mode)
> +local function lsocket_tcp_settimeout(self, value, mode) -- luacheck: ignore 212
> check_socket(self)
> self.timeout = value
> -- mode is effectively ignored
> @@ -1467,7 +1467,7 @@ local function lsocket_tcp_receive(self, pattern, prefix)
> local result = { prefix }
> local deadline = fiber.clock() + (self.timeout or TIMEOUT_INFINITY)
> repeat
> - local data = read(self, LIMIT_INFINITY, timeout, check_infinity)
> + data = read(self, LIMIT_INFINITY, timeout, check_infinity)
> if data == nil then
> if not errno_is_transient[self._errno] then
> return nil, socket_error(self)
> @@ -1535,7 +1535,7 @@ lsocket_tcp_mt.__index.send = lsocket_tcp_send;
> -- TCP Constructor and Shortcuts
> --
>
> -local function lsocket_tcp()
> +local function lsocket_tcp(self)
> local s = socket_new('AF_INET', 'SOCK_STREAM', 'tcp')
> if not s then
> return nil, socket_error(self)
> @@ -1559,7 +1559,7 @@ local function lsocket_bind(host, port, backlog)
> if host == nil or port == nil then
> error("Usage: luasocket.bind(host, port [, backlog])")
> end
> - local function prepare(s) return backlog end
> + local function prepare() return backlog end
> local s = tcp_server_bind(host, port, prepare)
> if not s then
> return nil, boxerrno.strerror()
> @@ -1578,7 +1578,7 @@ return setmetatable({
> iowait = internal.iowait,
> internal = internal,
> }, {
> - __call = function(self, ...) return socket_new(...) end;
> + __call = function(self, ...) return socket_new(...) end; -- luacheck: ignore 212
> __index = {
> tcp = lsocket_tcp;
> connect = lsocket_connect;
> diff --git a/src/lua/string.lua b/src/lua/string.lua
> index 6e12c59ae..d3a846645 100644
> --- a/src/lua/string.lua
> +++ b/src/lua/string.lua
> @@ -233,7 +233,6 @@ local function string_startswith(inp, head, _start, _end)
> return false
> end
> _start = _start - 1
> - _end = _start + head_len - 1
> return memcmp(c_char_ptr(inp) + _start, c_char_ptr(head), head_len) == 0
> end
>
> diff --git a/src/lua/swim.lua b/src/lua/swim.lua
> index 01eeb7eae..7fd2e8250 100644
> --- a/src/lua/swim.lua
> +++ b/src/lua/swim.lua
> @@ -1,5 +1,5 @@
> local ffi = require('ffi')
> -local uuid = require('uuid')
> +local uuid_ = require('uuid')
> local buffer = require('buffer')
> local msgpack = require('msgpack')
> local crypto = require('crypto')
> @@ -239,7 +239,7 @@ local function swim_check_uuid(value, func_name)
> end
> return error(func_name..': expected string UUID or struct tt_uuid')
> end
> - value = uuid.fromstr(value)
> + value = uuid_.fromstr(value)
> if not value then
> return error(func_name..': invalid UUID')
> end
> @@ -370,7 +370,7 @@ end
> --
> local function swim_member_payload_str(m)
> local ptr = swim_check_member(m, 'member:payload_str()')
> - local cdata, size = swim_member_payload_raw(ptr)
> + local _, size = swim_member_payload_raw(ptr)
> if size > 0 then
> return ffi.string(swim_member_payload_raw(ptr))
> end
> @@ -461,7 +461,7 @@ local swim_member_mt = {
> is_dropped = swim_member_is_dropped,
> },
> __serialize = swim_member_serialize,
> - __newindex = function(m)
> + __newindex = function()
> return error('swim_member is a read-only object')
> end
> }
> @@ -781,20 +781,20 @@ local swim_member_event_mt = {
> --
> -- Create a closure function for preprocessing raw SWIM member
> -- event trigger parameters.
> --- @param s SWIM instance.
> +-- @param instance SWIM instance.
> -- @param callback User functions to call.
> -- @param ctx An optional parameter for @a callback passed as is.
> -- @return A function to set as a trigger.
> --
> -local function swim_on_member_event_new(s, callback, ctx)
> +local function swim_on_member_event_new(instance, callback, ctx)
> -- Do not keep a hard reference to a SWIM instance. Otherwise
> -- it is a cyclic reference, and both the instance and the
> -- trigger will never be GC-ed.
> - s = setmetatable({s}, {__mode = 'v'})
> + instance = setmetatable({instance}, {__mode = 'v'})
> return function(member_ptr, event_mask)
> - local s = s[1]
> - if s then
> - local m = swim_wrap_member(s, member_ptr)
> + local i = instance[1]
> + if i then
> + local m = swim_wrap_member(i, member_ptr)
> local event = setmetatable({event_mask}, swim_member_event_mt)
> return callback(m, event, ctx)
> end
> diff --git a/src/lua/tap.lua b/src/lua/tap.lua
> index 94b080d5a..04497386e 100644
> --- a/src/lua/tap.lua
> +++ b/src/lua/tap.lua
> @@ -53,7 +53,7 @@ local function ok(test, cond, message, extra)
> io.write(string.format("not ok - %s\n", message))
> extra = extra or {}
> if test.trace then
> - local frame = debug.getinfo(3, "Sl")
> + debug.getinfo(3, "Sl")
> extra.trace = traceback()
> extra.filename = extra.trace[#extra.trace].filename
> extra.line = extra.trace[#extra.trace].line
> @@ -76,9 +76,6 @@ local function skip(test, message, extra)
> ok(test, true, message.." # skip", extra)
> end
>
> -
> -local nan = 0/0
> -
> local function cmpdeeply(got, expected, extra)
> if type(expected) == "number" or type(got) == "number" then
> extra.got = got
> @@ -190,38 +187,38 @@ local function isboolean(test, v, message, extra)
> return is(test, type(v), 'boolean', message, extra)
> end
>
> -local function isfunction(test, v, message, extra)
> - return is(test, type(v), 'function', message, extra)
> +local function isfunction(testcase, v, message, extra)
> + return is(testcase, type(v), 'function', message, extra)
> end
>
> -local function isudata(test, v, utype, message, extra)
> +local function isudata(testcase, v, utype, message, extra)
> extra = extra or {}
> extra.expected = 'userdata<'..utype..'>'
> if type(v) == 'userdata' then
> extra.got = 'userdata<'..getmetatable(v)..'>'
> - return ok(test, getmetatable(v) == utype, message, extra)
> + return ok(testcase, getmetatable(v) == utype, message, extra)
> else
> extra.got = type(v)
> - return fail(test, message, extra)
> + return fail(testcase, message, extra)
> end
> end
>
> -local function iscdata(test, v, ctype, message, extra)
> +local function iscdata(testcase, v, ctype, message, extra)
> extra = extra or {}
> extra.expected = ffi.typeof(ctype)
> if type(v) == 'cdata' then
> extra.got = ffi.typeof(v)
> - return ok(test, ffi.istype(ctype, v), message, extra)
> + return ok(testcase, ffi.istype(ctype, v), message, extra)
> else
> extra.got = type(v)
> - return fail(test, message, extra)
> + return fail(testcase, message, extra)
> end
> end
>
> local test_mt
> local function test(parent, name, fun, ...)
> local level = parent ~= nil and parent.level + 1 or 0
> - local test = setmetatable({
> + local testcase = setmetatable({
> parent = parent;
> name = name;
> level = level;
> @@ -232,48 +229,48 @@ local function test(parent, name, fun, ...)
> strict = false;
> }, test_mt)
> if fun ~= nil then
> - test:diag('%s', test.name)
> - fun(test, ...)
> - test:diag('%s: end', test.name)
> - return test:check()
> + testcase:diag('%s', testcase.name)
> + fun(testcase, ...)
> + testcase:diag('%s: end', testcase.name)
> + return testcase:check()
> else
> - return test
> + return testcase
> end
> end
>
> -local function plan(test, planned)
> - test.planned = planned
> - io.write(string.rep(' ', 4 * test.level), string.format("1..%d\n", planned))
> +local function plan(testcase, planned)
> + testcase.planned = planned
> + io.write(string.rep(' ', 4 * testcase.level), string.format("1..%d\n", planned))
> end
>
> -local function check(test)
> - if test.checked then
> +local function check(testcase)
> + if testcase.checked then
> error('check called twice')
> end
> - test.checked = true
> - if test.planned ~= test.total then
> - if test.parent ~= nil then
> - ok(test.parent, false, "bad plan", { planned = test.planned;
> - run = test.total})
> + testcase.checked = true
> + if testcase.planned ~= testcase.total then
> + if testcase.parent ~= nil then
> + ok(testcase.parent, false, "bad plan", { planned = testcase.planned;
> + run = testcase.total})
> else
> - diag(test, string.format("bad plan: planned %d run %d",
> - test.planned, test.total))
> + diag(testcase, string.format("bad plan: planned %d run %d",
> + testcase.planned, testcase.total))
> end
> - elseif test.failed > 0 then
> - if test.parent ~= nil then
> - ok(test.parent, false, "failed subtests", {
> - failed = test.failed;
> - planned = test.planned;
> + elseif testcase.failed > 0 then
> + if testcase.parent ~= nil then
> + ok(testcase.parent, false, "failed subtests", {
> + failed = testcase.failed;
> + planned = testcase.planned;
> })
> else
> - diag(test, "failed subtest: %d", test.failed)
> + diag(testcase, "failed subtest: %d", testcase.failed)
> end
> else
> - if test.parent ~= nil then
> - ok(test.parent, true, test.name)
> + if testcase.parent ~= nil then
> + ok(testcase.parent, true, testcase.name)
> end
> end
> - return test.planned == test.total and test.failed == 0
> + return testcase.planned == testcase.total and testcase.failed == 0
> end
>
> test_mt = {
> diff --git a/src/lua/trigger.lua b/src/lua/trigger.lua
> index 76a582c47..1330ecdd4 100644
> --- a/src/lua/trigger.lua
> +++ b/src/lua/trigger.lua
> @@ -1,7 +1,4 @@
> local fun = require('fun')
> -local log = require('log')
> -
> -local table_clear = require('table.clear')
>
> --
> -- Checks that argument is a callable, i.e. a function or a table
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua
2020-04-03 10:13 ` lvasiliev
@ 2020-04-03 11:03 ` Sergey Bronnikov
0 siblings, 0 replies; 11+ messages in thread
From: Sergey Bronnikov @ 2020-04-03 11:03 UTC (permalink / raw)
To: lvasiliev, tarantool-patches, avtikhon, alexander.turenko, o.piskunov
You can help me with review and set one LGTM :)
On 13:13 Fri 03 Apr , lvasiliev wrote:
> My patch was died in maillist, I hope you will more lucky than me:)
> https://lists.tarantool.org/pipermail/tarantool-patches/2019-November/012549.html
>
> On 03.04.2020 12:39, Sergey Bronnikov wrote:
> > GitHub branch: https://github.com/tarantool/tarantool/tree/ligurio/gh-4681-fix-luacheck-warnings
> >
> > How-to check:
> >
> > $ tarantoolctl rocks install luacheck
> > $ .rocks/bin/luacheck src/lua/*.lua
> >
> > ---
> > src/lua/argparse.lua | 6 ++--
> > src/lua/buffer.lua | 4 +--
> > src/lua/clock.lua | 2 +-
> > src/lua/crypto.lua | 18 +++++-----
> > src/lua/csv.lua | 5 ++-
> > src/lua/digest.lua | 6 ++--
> > src/lua/env.lua | 2 +-
> > src/lua/errno.lua | 2 +-
> > src/lua/fio.lua | 28 ++++++++--------
> > src/lua/help.lua | 24 +++++++-------
> > src/lua/httpc.lua | 3 --
> > src/lua/init.lua | 17 +++++-----
> > src/lua/msgpackffi.lua | 15 ++++-----
> > src/lua/socket.lua | 66 ++++++++++++++++++-------------------
> > src/lua/string.lua | 1 -
> > src/lua/swim.lua | 20 +++++------
> > src/lua/tap.lua | 75 ++++++++++++++++++++----------------------
> > src/lua/trigger.lua | 3 --
> > 18 files changed, 142 insertions(+), 155 deletions(-)
> >
> > diff --git a/src/lua/argparse.lua b/src/lua/argparse.lua
> > index faa0ae130..f58985425 100644
> > --- a/src/lua/argparse.lua
> > +++ b/src/lua/argparse.lua
> > @@ -90,8 +90,8 @@ local function convert_parameter(name, convert_from, convert_to)
> > return convert_from
> > end
> > -local function parameters_parse(t_in, options)
> > - local t_out, t_in = {}, t_in or {}
> > +local function parameters_parse(t__in, options)
> > + local t_out, t_in = {}, t__in or {}
> > -- Prepare a lookup table for options. An option name -> a
> > -- type name to convert a parameter into or true (which means
> > @@ -145,7 +145,7 @@ local function parameters_parse(t_in, options)
> > if parameter_has_value(lookup[command]) then
> > -- in case next argument is value of this key (not --arg)
> > local next_arg = t_in[i + 1]
> > - local is_long, is_short, is_dash = parse_param_prefix(next_arg)
> > + is_long, is_short, is_dash = parse_param_prefix(next_arg)
> > if is_dash then
> > skip_param = true
> > elseif is_long == false and not is_short and not is_dash then
> > diff --git a/src/lua/buffer.lua b/src/lua/buffer.lua
> > index 9aac82b39..5979980ed 100644
> > --- a/src/lua/buffer.lua
> > +++ b/src/lua/buffer.lua
> > @@ -182,7 +182,7 @@ local ibuf_methods = {
> > unused = ibuf_unused;
> > }
> > -local function ibuf_tostring(ibuf)
> > +local function ibuf_tostring(ibuf) -- luacheck: ignore 212
> > return '<ibuf>'
> > end
> > local ibuf_mt = {
> > @@ -193,7 +193,7 @@ local ibuf_mt = {
> > ffi.metatype(ibuf_t, ibuf_mt);
> > -local function ibuf_new(arg, arg2)
> > +local function ibuf_new(arg)
> > local buf = ffi.new(ibuf_t)
> > local slabc = builtin.tarantool_lua_slab_cache()
> > builtin.ibuf_create(buf, slabc, READAHEAD)
> > diff --git a/src/lua/clock.lua b/src/lua/clock.lua
> > index 60c78663c..fee43ccde 100644
> > --- a/src/lua/clock.lua
> > +++ b/src/lua/clock.lua
> > @@ -33,7 +33,7 @@ clock.bench = function(fun, ...)
> > overhead = clock.proc() - overhead
> > local start_time = clock.proc()
> > local res = {0, fun(...)}
> > - res[1] = clock.proc() - start_time - overhead, res
> > + res[1] = clock.proc() - start_time - overhead
> > return res
> > end
> > diff --git a/src/lua/crypto.lua b/src/lua/crypto.lua
> > index bf3064c70..9929b93ba 100644
> > --- a/src/lua/crypto.lua
> > +++ b/src/lua/crypto.lua
> > @@ -75,7 +75,7 @@ local function openssl_err_str()
> > end
> > local digests = {}
> > -for class, name in pairs({
> > +for class, _ in pairs({
> > md2 = 'MD2', md4 = 'MD4', md5 = 'MD5',
> > sha1 = 'SHA1', sha224 = 'SHA224',
> > sha256 = 'SHA256', sha384 = 'SHA384', sha512 = 'SHA512',
> > @@ -318,7 +318,7 @@ for class, digest in pairs(digests) do
> > digest_api[class] = setmetatable({
> > new = function () return digest_new(digest) end
> > }, {
> > - __call = function (self, str)
> > + __call = function (self, str) -- luacheck: ignore 212
> > if type(str) ~= 'string' then
> > error("Usage: digest."..class.."(string)")
> > end
> > @@ -332,7 +332,7 @@ for class, digest in pairs(digests) do
> > end
> > digest_api = setmetatable(digest_api,
> > - {__index = function(self, digest)
> > + {__index = function(self, digest) -- luacheck: ignore 212
> > return error('Digest method "' .. digest .. '" is not supported')
> > end })
> > @@ -341,7 +341,7 @@ for class, digest in pairs(hmacs) do
> > hmac_api[class] = setmetatable({
> > new = function (key) return hmac_new(digest, key) end
> > }, {
> > - __call = function (self, key, str)
> > + __call = function (self, key, str) -- luacheck: ignore 212
> > if type(str) ~= 'string' then
> > error("Usage: hmac."..class.."(key, string)")
> > end
> > @@ -361,7 +361,7 @@ for class, digest in pairs(hmacs) do
> > end
> > hmac_api = setmetatable(hmac_api,
> > - {__index = function(self, digest)
> > + {__index = function(self, digest) -- luacheck: ignore 212
> > return error('HMAC method "' .. digest .. '" is not supported')
> > end })
> > @@ -384,12 +384,12 @@ local crypto_dirs = {
> > }
> > local algo_api_mt = {
> > - __index = function(self, mode)
> > + __index = function(self, mode) -- luacheck: ignore 212
> > error('Cipher mode ' .. mode .. ' is not supported')
> > end
> > }
> > local crypto_api_mt = {
> > - __index = function(self, cipher)
> > + __index = function(self, cipher) -- luacheck: ignore 212
> > return error('Cipher method "' .. cipher .. '" is not supported')
> > end
> > }
> > @@ -408,7 +408,7 @@ for algo_name, algo_value in pairs(crypto_algos) do
> > dir_value)
> > end
> > }, {
> > - __call = function(self, str, key, iv)
> > + __call = function(self, str, key, iv) -- luacheck: ignore 212
> > local ctx = crypto_stream_new(algo_value, mode_value, key,
> > iv, dir_value)
> > local res = ctx:update(str)
> > @@ -428,7 +428,7 @@ local public_methods = {
> > }
> > local module_mt = {
> > - __serialize = function(s)
> > + __serialize = function()
> > return public_methods
> > end,
> > __index = public_methods
> > diff --git a/src/lua/csv.lua b/src/lua/csv.lua
> > index 7dff2f213..de6726bb7 100644
> > --- a/src/lua/csv.lua
> > +++ b/src/lua/csv.lua
> > @@ -188,10 +188,10 @@ module.dump = function(t, opts, writable)
> > if type(writable) == 'nil' then
> > result_table = {}
> > end
> > - for k, line in pairs(t) do
> > + for _, line in pairs(t) do
> > local first = true
> > local output_tuple = {}
> > - for k2, field in pairs(line) do
> > + for _, field in pairs(line) do
> > local strf = tostring(field)
> > local buf_new_size = (strf:len() + 1) * 2
> > if buf_new_size > bufsz then
> > @@ -214,7 +214,6 @@ module.dump = function(t, opts, writable)
> > else
> > writable:write(table.concat(output_tuple))
> > end
> > - output_tuple = {}
> > end
> > ffi.C.csv_destroy(csv)
> > csv.realloc(buf, 0)
> > diff --git a/src/lua/digest.lua b/src/lua/digest.lua
> > index 6ed91cfa2..5c6eb2ae2 100644
> > --- a/src/lua/digest.lua
> > +++ b/src/lua/digest.lua
> > @@ -91,7 +91,7 @@ PMurHash = {
> > }
> > setmetatable(PMurHash, {
> > - __call = function(self, str)
> > + __call = function(self, str) -- luacheck: ignore 212
> > if type(str) ~= 'string' then
> > error("Usage: digest.murhash(string)")
> > end
> > @@ -134,7 +134,7 @@ CRC32 = {
> > }
> > setmetatable(CRC32, {
> > - __call = function(self, str)
> > + __call = function(self, str) -- luacheck: ignore 212
> > if type(str) ~= 'string' then
> > error("Usage digest.crc32(string)")
> > end
> > @@ -246,7 +246,7 @@ local m = {
> > end
> > }
> > -for digest, name in pairs(digest_shortcuts) do
> > +for digest, _ in pairs(digest_shortcuts) do
> > m[digest] = function (str)
> > return crypto.digest[digest](str)
> > end
> > diff --git a/src/lua/env.lua b/src/lua/env.lua
> > index dd1616a84..d851586f0 100644
> > --- a/src/lua/env.lua
> > +++ b/src/lua/env.lua
> > @@ -28,7 +28,7 @@ os.environ = function()
> > end
> > os.setenv = function(key, value)
> > - local rv = nil
> > + local rv = nil -- luacheck: ignore 311
> > if value ~= nil then
> > rv = ffi.C.setenv(key, value, 1)
> > else
> > diff --git a/src/lua/errno.lua b/src/lua/errno.lua
> > index db800ce30..c91cad4b7 100644
> > --- a/src/lua/errno.lua
> > +++ b/src/lua/errno.lua
> > @@ -17,5 +17,5 @@ return setmetatable({
> > }, {
> > __index = errno_list,
> > __newindex = function() error("Can't create new errno constants") end,
> > - __call = function(self, ...) return ffi.errno(...) end
> > + __call = function(self, ...) return ffi.errno(...) end -- luacheck: ignore 212
> > })
> > diff --git a/src/lua/fio.lua b/src/lua/fio.lua
> > index 4692e1026..dd71c6742 100644
> > --- a/src/lua/fio.lua
> > +++ b/src/lua/fio.lua
> > @@ -306,7 +306,7 @@ fio.abspath = function(path)
> > error("Usage: fio.abspath(path)")
> > end
> > path = path
> > - local joined_path = ''
> > + local joined_path = '' -- luacheck: ignore 311
> > local path_tab = {}
> > if string.sub(path, 1, 1) == '/' then
> > joined_path = path
> > @@ -343,7 +343,7 @@ fio.listdir = function(path)
> > return t
> > end
> > local names = string.split(str, "\n")
> > - for i, name in ipairs(names) do
> > + for _, name in ipairs(names) do
> > table.insert(t, name)
> > end
> > return t
> > @@ -355,15 +355,15 @@ fio.mktree = function(path, mode)
> > end
> > path = fio.abspath(path)
> > - local path = string.gsub(path, '^/', '')
> > + path = string.gsub(path, '^/', '')
> > local dirs = string.split(path, "/")
> > local current_dir = "/"
> > - for i, dir in ipairs(dirs) do
> > + for _, dir in ipairs(dirs) do
> > current_dir = fio.pathjoin(current_dir, dir)
> > local stat = fio.stat(current_dir)
> > if stat == nil then
> > - local st, err = fio.mkdir(current_dir, mode)
> > + local _, err = fio.mkdir(current_dir, mode)
> > -- fio.stat() and fio.mkdir() above are separate calls
> > -- and a file system may be changed between them. So
> > -- if the error here is due to an existing directory,
> > @@ -384,20 +384,20 @@ fio.rmtree = function(path)
> > if type(path) ~= 'string' then
> > error("Usage: fio.rmtree(path)")
> > end
> > - local status, err
> > + local status -- luacheck: ignore 231
> > path = fio.abspath(path)
> > local ls, err = fio.listdir(path)
> > if err ~= nil then
> > return nil, err
> > end
> > - for i, f in ipairs(ls) do
> > + for _, f in ipairs(ls) do
> > local tmppath = fio.pathjoin(path, f)
> > local st = fio.lstat(tmppath)
> > if st then
> > if st:is_dir() then
> > - st, err = fio.rmtree(tmppath)
> > + _, err = fio.rmtree(tmppath)
> > else
> > - st, err = fio.unlink(tmppath)
> > + _, err = fio.unlink(tmppath)
> > end
> > if err ~= nil then
> > return nil, err
> > @@ -430,7 +430,6 @@ fio.copytree = function(from, to)
> > if type(from) ~= 'string' or type(to) ~= 'string' then
> > error('Usage: fio.copytree(from, to)')
> > end
> > - local status, reason
> > local st = fio.stat(from)
> > if not st then
> > return false, string.format("Directory %s does not exist", from)
> > @@ -444,14 +443,14 @@ fio.copytree = function(from, to)
> > end
> > -- create tree of destination
> > - status, reason = fio.mktree(to)
> > + local status, reason = fio.mktree(to) -- luacheck: ignore 231
> > if reason ~= nil then
> > return false, reason
> > end
> > - for i, f in ipairs(ls) do
> > + for _, f in ipairs(ls) do
> > local ffrom = fio.pathjoin(from, f)
> > local fto = fio.pathjoin(to, f)
> > - local st = fio.lstat(ffrom)
> > + st = fio.lstat(ffrom)
> > if st and st:is_dir() then
> > status, reason = fio.copytree(ffrom, fto)
> > if reason ~= nil then
> > @@ -465,7 +464,8 @@ fio.copytree = function(from, to)
> > end
> > end
> > if st:is_link() then
> > - local link_to, reason = fio.readlink(ffrom)
> > + local link_to
> > + link_to, reason = fio.readlink(ffrom)
> > if reason ~= nil then
> > return false, reason
> > end
> > diff --git a/src/lua/help.lua b/src/lua/help.lua
> > index 54ff1b5d0..768f4dec4 100644
> > --- a/src/lua/help.lua
> > +++ b/src/lua/help.lua
> > @@ -7,22 +7,22 @@ local doc = require('help.en_US')
> > -- corresponds to a tarantool version a user runs.
> > local DOCUMENTATION_VERSION = '2.1'
> > -help = { doc.help }
> > -tutorial = {}
> > -tutorial[1] = help[1]
> > +help = { doc.help } -- luacheck: ignore 111
> > +tutorial = {} -- luacheck: ignore 111
> > +tutorial[1] = help[1] -- luacheck: ignore 112 113
> > -local help_function_data = {};
> > -local help_object_data = {}
> > +local help_function_data = {}; -- luacheck: ignore 211
> > +local help_object_data = {} -- luacheck: ignore 211
> > -local function help_call(table, param)
> > - return help
> > +local function help_call(table, param) -- luacheck: ignore 212
> > + return help -- luacheck: ignore 113
> > end
> > -setmetatable(help, { __call = help_call })
> > +setmetatable(help, { __call = help_call }) -- luacheck: ignore 113
> > local screen_id = 1;
> > -local function tutorial_call(table, action)
> > +local function tutorial_call(table, action) -- luacheck: ignore 212
> > if action == 'start' then
> > screen_id = 1;
> > elseif action == 'next' or action == 'more' then
> > @@ -46,9 +46,9 @@ local function tutorial_call(table, action)
> > return (res:gsub('<version>', DOCUMENTATION_VERSION))
> > end
> > -setmetatable(tutorial, { __call = tutorial_call })
> > +setmetatable(tutorial, { __call = tutorial_call }) -- luacheck: ignore 113
> > return {
> > - help = help;
> > - tutorial = tutorial;
> > + help = help; -- luacheck: ignore 113
> > + tutorial = tutorial; -- luacheck: ignore 113
> > }
> > diff --git a/src/lua/httpc.lua b/src/lua/httpc.lua
> > index 6381c6a1a..9336dcee0 100644
> > --- a/src/lua/httpc.lua
> > +++ b/src/lua/httpc.lua
> > @@ -29,8 +29,6 @@
> > -- SUCH DAMAGE.
> > --
> > -local fiber = require('fiber')
> > -
> > local driver = package.loaded.http.client
> > package.loaded.http = nil
> > @@ -112,7 +110,6 @@ local special_characters = {
> > [']'] = true,
> > ['<'] = true,
> > ['>'] = true,
> > - ['>'] = true,
> > ['@'] = true,
> > [','] = true,
> > [';'] = true,
> > diff --git a/src/lua/init.lua b/src/lua/init.lua
> > index ff3e74c3c..b075915a3 100644
> > --- a/src/lua/init.lua
> > +++ b/src/lua/init.lua
> > @@ -71,7 +71,7 @@ local function setsearchroot(path)
> > package_searchroot = path and fio.abspath(path)
> > end
> > -dostring = function(s, ...)
> > +dostring = function(s, ...) -- luacheck: ignore 121
> > local chunk, message = loadstring(s)
> > if chunk == nil then
> > error(message, 2)
> > @@ -80,7 +80,7 @@ dostring = function(s, ...)
> > end
> > local fiber = require("fiber")
> > -os.exit = function(code)
> > +os.exit = function(code) -- luacheck: ignore 122
> > code = (type(code) == 'number') and code or 0
> > ffi.C.tarantool_exit(code)
> > -- Make sure we yield even if the code after
> > @@ -144,9 +144,9 @@ local function gen_search_func(path_fn, templates, need_traverse)
> > local searchpaths = {}
> > - for _, path in ipairs(paths) do
> > + for _, p in ipairs(paths) do
> > for _, template in pairs(templates) do
> > - table.insert(searchpaths, fio.pathjoin(path, template))
> > + table.insert(searchpaths, fio.pathjoin(p, template))
> > end
> > end
> > @@ -176,7 +176,8 @@ local function gen_loader_func(search_fn, load_fn)
> > if not file then
> > return err
> > end
> > - local loaded, err = load_fn(file, name)
> > + local loaded
> > + loaded, err = load_fn(file, name)
> > if err == nil then
> > return loaded
> > else
> > @@ -221,9 +222,9 @@ table.insert(package.loaders, 5, gen_loader_func(search_rocks_lib, load_lib))
> > -- package.cpath 7
> > -- croot 8
> > -package.search = search
> > -package.searchroot = searchroot
> > -package.setsearchroot = setsearchroot
> > +package.search = search -- luacheck: ignore 122
> > +package.searchroot = searchroot -- luacheck: ignore 122
> > +package.setsearchroot = setsearchroot -- luacheck: ignore 122
> > return {
> > uptime = uptime;
> > diff --git a/src/lua/msgpackffi.lua b/src/lua/msgpackffi.lua
> > index f775f2d41..471b72c84 100644
> > --- a/src/lua/msgpackffi.lua
> > +++ b/src/lua/msgpackffi.lua
> > @@ -291,7 +291,7 @@ local function encode(obj)
> > return r
> > end
> > -local function encode_ibuf(obj, ibuf)
> > +local function encode_ibuf(obj, ibuf) -- luacheck: ignore 211
> > encode_r(ibuf, obj, 0)
> > end
> > @@ -320,7 +320,7 @@ local decode_r
> > -- See similar constants in utils.cc
> > local DBL_INT_MAX = 1e14 - 1
> > -local DBL_INT_MIN = -1e14 + 1
> > +local DBL_INT_MIN = -1e14 + 1 -- luacheck: ignore 211
> > local function decode_u8(data)
> > local num = ffi.cast(uint8_ptr_t, data[0])[0]
> > @@ -465,8 +465,7 @@ end
> > local function decode_array(data, size)
> > assert (type(size) == "number")
> > local arr = {}
> > - local i
> > - for i=1,size,1 do
> > + for i=1,size,1 do -- luacheck: ignore 213
> > table.insert(arr, decode_r(data))
> > end
> > if not msgpack.cfg.decode_save_metatables then
> > @@ -478,8 +477,7 @@ end
> > local function decode_map(data, size)
> > assert (type(size) == "number")
> > local map = {}
> > - local i
> > - for i=1,size,1 do
> > + for i=1,size,1 do -- luacheck: ignore 213
> > local key = decode_r(data);
> > local val = decode_r(data);
> > map[key] = val
> > @@ -492,7 +490,7 @@ end
> > local ext_decoder = {
> > -- MP_UNKNOWN_EXTENSION
> > - [0] = function(data, len) error("unsupported extension type") end,
> > + [0] = function() error("unsupported extension type") end,
> > -- MP_DECIMAL
> > [1] = function(data, len) local num = ffi.new("decimal_t") builtin.decimal_unpack(data, len, num) return num end,
> > }
> > @@ -502,7 +500,6 @@ local function decode_ext(data)
> > -- mp_decode_extl and mp_decode_decimal
> > -- need type code
> > data[0] = data[0] - 1
> > - local old_data = data[0]
> > local len = builtin.mp_decode_extl(data, t)
> > local fun = ext_decoder[t[0]]
> > if type(fun) == 'function' then
> > @@ -589,7 +586,7 @@ local function check_offset(offset, len)
> > if offset == nil then
> > return 1
> > end
> > - local offset = ffi.cast('ptrdiff_t', offset)
> > + offset = ffi.cast('ptrdiff_t', offset)
> > if offset < 1 or offset > len then
> > error(string.format("offset = %d is out of bounds [1..%d]",
> > tonumber(offset), len))
> > diff --git a/src/lua/socket.lua b/src/lua/socket.lua
> > index a334ad45b..c5691a425 100644
> > --- a/src/lua/socket.lua
> > +++ b/src/lua/socket.lua
> > @@ -172,7 +172,7 @@ local function get_iflags(table, flags)
> > if type(flags) ~= 'table' then
> > flags = { flags }
> > end
> > - for i, f in pairs(flags) do
> > + for _, f in pairs(flags) do
> > if table[f] == nil then
> > return nil
> > end
> > @@ -660,7 +660,7 @@ local function check_delimiter(self, limit, eols)
> > end
> > local shortest
> > - for i, eol in ipairs(eols) do
> > + for _, eol in ipairs(eols) do
> > local data = ffi.C.memmem(rbuf.rpos, rbuf:size(), eol, #eol)
> > if data ~= nil then
> > local len = ffi.cast('char *', data) - rbuf.rpos + #eol
> > @@ -706,16 +706,16 @@ local function read(self, limit, timeout, check, ...)
> > local res = sysread(self, data, rbuf:unused())
> > if res == 0 then -- eof
> > self._errno = nil
> > - local len = rbuf:size()
> > - local data = ffi.string(rbuf.rpos, len)
> > + len = rbuf:size()
> > + data = ffi.string(rbuf.rpos, len)
> > rbuf.rpos = rbuf.rpos + len
> > return data
> > elseif res ~= nil then
> > rbuf.wpos = rbuf.wpos + res
> > - local len = check(self, limit, ...)
> > + len = check(self, limit, ...)
> > if len ~= nil then
> > self._errno = nil
> > - local data = ffi.string(rbuf.rpos, len)
> > + data = ffi.string(rbuf.rpos, len)
> > rbuf.rpos = rbuf.rpos + len
> > return data
> > end
> > @@ -1039,7 +1039,7 @@ local function tcp_connect(host, port, timeout)
> > boxerrno(0)
> > return s
> > end
> > - local timeout = timeout or TIMEOUT_INFINITY
> > + timeout = timeout or TIMEOUT_INFINITY
> > local stop = fiber.clock() + timeout
> > local dns = getaddrinfo(host, port, timeout, { type = 'SOCK_STREAM',
> > protocol = 'tcp' })
> > @@ -1047,7 +1047,7 @@ local function tcp_connect(host, port, timeout)
> > boxerrno(boxerrno.EINVAL)
> > return nil
> > end
> > - for i, remote in pairs(dns) do
> > + for _, remote in pairs(dns) do
> > timeout = stop - fiber.clock()
> > if timeout <= 0 then
> > boxerrno(boxerrno.ETIMEDOUT)
> > @@ -1078,8 +1078,8 @@ local function tcp_server_handler(server, sc, from)
> > end
> > end
> > -local function tcp_server_loop(server, s, addr)
> > - fiber.name(format("%s/%s:%s", server.name, addr.host, addr.port), {truncate = true})
> > +local function tcp_server_loop(server, s, address)
> > + fiber.name(format("%s/%s:%s", server.name, address.host, address.port), {truncate = true})
> > log.info("started")
> > while socket_readable(s) do
> > local sc, from = socket_accept(s)
> > @@ -1104,15 +1104,15 @@ local function tcp_server_usage()
> > error('Usage: socket.tcp_server(host, port, handler | opts)')
> > end
> > -local function tcp_server_do_bind(s, addr)
> > - if socket_bind(s, addr.host, addr.port) then
> > - if addr.family == 'AF_UNIX' then
> > +local function tcp_server_do_bind(s, address)
> > + if socket_bind(s, address.host, address.port) then
> > + if address.family == 'AF_UNIX' then
> > -- Make close() remove the unix socket file created
> > -- by bind(). Note, this must be done before closing
> > -- the socket fd so that no other tcp server can
> > -- reuse the same path before we remove the file.
> > s.close = function(self)
> > - fio.unlink(addr.port)
> > + fio.unlink(address.port)
> > return socket_close(self)
> > end
> > end
> > @@ -1121,12 +1121,12 @@ local function tcp_server_do_bind(s, addr)
> > return false
> > end
> > -local function tcp_server_bind_addr(s, addr)
> > - if tcp_server_do_bind(s, addr) then
> > +local function tcp_server_bind_addr(s, address)
> > + if tcp_server_do_bind(s, address) then
> > return true
> > end
> > - if addr.family ~= 'AF_UNIX' then
> > + if address.family ~= 'AF_UNIX' then
> > return false
> > end
> > @@ -1136,7 +1136,7 @@ local function tcp_server_bind_addr(s, addr)
> > local save_errno = boxerrno()
> > - local sc = tcp_connect(addr.host, addr.port)
> > + local sc = tcp_connect(address.host, address.port)
> > if sc ~= nil then
> > sc:close()
> > boxerrno(save_errno)
> > @@ -1148,13 +1148,13 @@ local function tcp_server_bind_addr(s, addr)
> > return false
> > end
> > - log.info("tcp_server: remove dead UNIX socket: %s", addr.port)
> > - if not fio.unlink(addr.port) then
> > + log.info("tcp_server: remove dead UNIX socket: %s", address.port)
> > + if not fio.unlink(address.port) then
> > log.warn("tcp_server: %s", boxerrno.strerror())
> > boxerrno(save_errno)
> > return false
> > end
> > - return tcp_server_do_bind(s, addr)
> > + return tcp_server_do_bind(s, address)
> > end
> > @@ -1172,8 +1172,8 @@ local function tcp_server_bind(host, port, prepare, timeout)
> > end
> > end
> > - for _, addr in ipairs(dns) do
> > - local s = socket_new(addr.family, addr.type, addr.protocol)
> > + for _, address in ipairs(dns) do
> > + local s = socket_new(address.family, address.type, address.protocol)
> > if s ~= nil then
> > local backlog
> > if prepare then
> > @@ -1181,13 +1181,13 @@ local function tcp_server_bind(host, port, prepare, timeout)
> > else
> > socket_setsockopt(s, 'SOL_SOCKET', 'SO_REUSEADDR', 1) -- ignore error
> > end
> > - if not tcp_server_bind_addr(s, addr) or not s:listen(backlog) then
> > + if not tcp_server_bind_addr(s, address) or not s:listen(backlog) then
> > local save_errno = boxerrno()
> > socket_close(s)
> > boxerrno(save_errno)
> > return nil
> > end
> > - return s, addr
> > + return s, address
> > end
> > end
> > -- DNS resolved successfully, but addresss family is not supported
> > @@ -1211,12 +1211,12 @@ local function tcp_server(host, port, opts, timeout)
> > tcp_server_usage()
> > end
> > server.name = server.name or 'server'
> > - local s, addr = tcp_server_bind(host, port, server.prepare, timeout)
> > + local s, address = tcp_server_bind(host, port, server.prepare, timeout)
> > if not s then
> > return nil
> > end
> > - fiber.create(tcp_server_loop, server, s, addr)
> > - return s, addr
> > + fiber.create(tcp_server_loop, server, s, address)
> > + return s, address
> > end
> > socket_mt = {
> > @@ -1311,7 +1311,7 @@ local function lsocket_tcp_getpeername(self)
> > return peer.host, tostring(peer.port), peer.family:match("AF_(.*)"):lower()
> > end
> > -local function lsocket_tcp_settimeout(self, value, mode)
> > +local function lsocket_tcp_settimeout(self, value, mode) -- luacheck: ignore 212
> > check_socket(self)
> > self.timeout = value
> > -- mode is effectively ignored
> > @@ -1467,7 +1467,7 @@ local function lsocket_tcp_receive(self, pattern, prefix)
> > local result = { prefix }
> > local deadline = fiber.clock() + (self.timeout or TIMEOUT_INFINITY)
> > repeat
> > - local data = read(self, LIMIT_INFINITY, timeout, check_infinity)
> > + data = read(self, LIMIT_INFINITY, timeout, check_infinity)
> > if data == nil then
> > if not errno_is_transient[self._errno] then
> > return nil, socket_error(self)
> > @@ -1535,7 +1535,7 @@ lsocket_tcp_mt.__index.send = lsocket_tcp_send;
> > -- TCP Constructor and Shortcuts
> > --
> > -local function lsocket_tcp()
> > +local function lsocket_tcp(self)
> > local s = socket_new('AF_INET', 'SOCK_STREAM', 'tcp')
> > if not s then
> > return nil, socket_error(self)
> > @@ -1559,7 +1559,7 @@ local function lsocket_bind(host, port, backlog)
> > if host == nil or port == nil then
> > error("Usage: luasocket.bind(host, port [, backlog])")
> > end
> > - local function prepare(s) return backlog end
> > + local function prepare() return backlog end
> > local s = tcp_server_bind(host, port, prepare)
> > if not s then
> > return nil, boxerrno.strerror()
> > @@ -1578,7 +1578,7 @@ return setmetatable({
> > iowait = internal.iowait,
> > internal = internal,
> > }, {
> > - __call = function(self, ...) return socket_new(...) end;
> > + __call = function(self, ...) return socket_new(...) end; -- luacheck: ignore 212
> > __index = {
> > tcp = lsocket_tcp;
> > connect = lsocket_connect;
> > diff --git a/src/lua/string.lua b/src/lua/string.lua
> > index 6e12c59ae..d3a846645 100644
> > --- a/src/lua/string.lua
> > +++ b/src/lua/string.lua
> > @@ -233,7 +233,6 @@ local function string_startswith(inp, head, _start, _end)
> > return false
> > end
> > _start = _start - 1
> > - _end = _start + head_len - 1
> > return memcmp(c_char_ptr(inp) + _start, c_char_ptr(head), head_len) == 0
> > end
> > diff --git a/src/lua/swim.lua b/src/lua/swim.lua
> > index 01eeb7eae..7fd2e8250 100644
> > --- a/src/lua/swim.lua
> > +++ b/src/lua/swim.lua
> > @@ -1,5 +1,5 @@
> > local ffi = require('ffi')
> > -local uuid = require('uuid')
> > +local uuid_ = require('uuid')
> > local buffer = require('buffer')
> > local msgpack = require('msgpack')
> > local crypto = require('crypto')
> > @@ -239,7 +239,7 @@ local function swim_check_uuid(value, func_name)
> > end
> > return error(func_name..': expected string UUID or struct tt_uuid')
> > end
> > - value = uuid.fromstr(value)
> > + value = uuid_.fromstr(value)
> > if not value then
> > return error(func_name..': invalid UUID')
> > end
> > @@ -370,7 +370,7 @@ end
> > --
> > local function swim_member_payload_str(m)
> > local ptr = swim_check_member(m, 'member:payload_str()')
> > - local cdata, size = swim_member_payload_raw(ptr)
> > + local _, size = swim_member_payload_raw(ptr)
> > if size > 0 then
> > return ffi.string(swim_member_payload_raw(ptr))
> > end
> > @@ -461,7 +461,7 @@ local swim_member_mt = {
> > is_dropped = swim_member_is_dropped,
> > },
> > __serialize = swim_member_serialize,
> > - __newindex = function(m)
> > + __newindex = function()
> > return error('swim_member is a read-only object')
> > end
> > }
> > @@ -781,20 +781,20 @@ local swim_member_event_mt = {
> > --
> > -- Create a closure function for preprocessing raw SWIM member
> > -- event trigger parameters.
> > --- @param s SWIM instance.
> > +-- @param instance SWIM instance.
> > -- @param callback User functions to call.
> > -- @param ctx An optional parameter for @a callback passed as is.
> > -- @return A function to set as a trigger.
> > --
> > -local function swim_on_member_event_new(s, callback, ctx)
> > +local function swim_on_member_event_new(instance, callback, ctx)
> > -- Do not keep a hard reference to a SWIM instance. Otherwise
> > -- it is a cyclic reference, and both the instance and the
> > -- trigger will never be GC-ed.
> > - s = setmetatable({s}, {__mode = 'v'})
> > + instance = setmetatable({instance}, {__mode = 'v'})
> > return function(member_ptr, event_mask)
> > - local s = s[1]
> > - if s then
> > - local m = swim_wrap_member(s, member_ptr)
> > + local i = instance[1]
> > + if i then
> > + local m = swim_wrap_member(i, member_ptr)
> > local event = setmetatable({event_mask}, swim_member_event_mt)
> > return callback(m, event, ctx)
> > end
> > diff --git a/src/lua/tap.lua b/src/lua/tap.lua
> > index 94b080d5a..04497386e 100644
> > --- a/src/lua/tap.lua
> > +++ b/src/lua/tap.lua
> > @@ -53,7 +53,7 @@ local function ok(test, cond, message, extra)
> > io.write(string.format("not ok - %s\n", message))
> > extra = extra or {}
> > if test.trace then
> > - local frame = debug.getinfo(3, "Sl")
> > + debug.getinfo(3, "Sl")
> > extra.trace = traceback()
> > extra.filename = extra.trace[#extra.trace].filename
> > extra.line = extra.trace[#extra.trace].line
> > @@ -76,9 +76,6 @@ local function skip(test, message, extra)
> > ok(test, true, message.." # skip", extra)
> > end
> > -
> > -local nan = 0/0
> > -
> > local function cmpdeeply(got, expected, extra)
> > if type(expected) == "number" or type(got) == "number" then
> > extra.got = got
> > @@ -190,38 +187,38 @@ local function isboolean(test, v, message, extra)
> > return is(test, type(v), 'boolean', message, extra)
> > end
> > -local function isfunction(test, v, message, extra)
> > - return is(test, type(v), 'function', message, extra)
> > +local function isfunction(testcase, v, message, extra)
> > + return is(testcase, type(v), 'function', message, extra)
> > end
> > -local function isudata(test, v, utype, message, extra)
> > +local function isudata(testcase, v, utype, message, extra)
> > extra = extra or {}
> > extra.expected = 'userdata<'..utype..'>'
> > if type(v) == 'userdata' then
> > extra.got = 'userdata<'..getmetatable(v)..'>'
> > - return ok(test, getmetatable(v) == utype, message, extra)
> > + return ok(testcase, getmetatable(v) == utype, message, extra)
> > else
> > extra.got = type(v)
> > - return fail(test, message, extra)
> > + return fail(testcase, message, extra)
> > end
> > end
> > -local function iscdata(test, v, ctype, message, extra)
> > +local function iscdata(testcase, v, ctype, message, extra)
> > extra = extra or {}
> > extra.expected = ffi.typeof(ctype)
> > if type(v) == 'cdata' then
> > extra.got = ffi.typeof(v)
> > - return ok(test, ffi.istype(ctype, v), message, extra)
> > + return ok(testcase, ffi.istype(ctype, v), message, extra)
> > else
> > extra.got = type(v)
> > - return fail(test, message, extra)
> > + return fail(testcase, message, extra)
> > end
> > end
> > local test_mt
> > local function test(parent, name, fun, ...)
> > local level = parent ~= nil and parent.level + 1 or 0
> > - local test = setmetatable({
> > + local testcase = setmetatable({
> > parent = parent;
> > name = name;
> > level = level;
> > @@ -232,48 +229,48 @@ local function test(parent, name, fun, ...)
> > strict = false;
> > }, test_mt)
> > if fun ~= nil then
> > - test:diag('%s', test.name)
> > - fun(test, ...)
> > - test:diag('%s: end', test.name)
> > - return test:check()
> > + testcase:diag('%s', testcase.name)
> > + fun(testcase, ...)
> > + testcase:diag('%s: end', testcase.name)
> > + return testcase:check()
> > else
> > - return test
> > + return testcase
> > end
> > end
> > -local function plan(test, planned)
> > - test.planned = planned
> > - io.write(string.rep(' ', 4 * test.level), string.format("1..%d\n", planned))
> > +local function plan(testcase, planned)
> > + testcase.planned = planned
> > + io.write(string.rep(' ', 4 * testcase.level), string.format("1..%d\n", planned))
> > end
> > -local function check(test)
> > - if test.checked then
> > +local function check(testcase)
> > + if testcase.checked then
> > error('check called twice')
> > end
> > - test.checked = true
> > - if test.planned ~= test.total then
> > - if test.parent ~= nil then
> > - ok(test.parent, false, "bad plan", { planned = test.planned;
> > - run = test.total})
> > + testcase.checked = true
> > + if testcase.planned ~= testcase.total then
> > + if testcase.parent ~= nil then
> > + ok(testcase.parent, false, "bad plan", { planned = testcase.planned;
> > + run = testcase.total})
> > else
> > - diag(test, string.format("bad plan: planned %d run %d",
> > - test.planned, test.total))
> > + diag(testcase, string.format("bad plan: planned %d run %d",
> > + testcase.planned, testcase.total))
> > end
> > - elseif test.failed > 0 then
> > - if test.parent ~= nil then
> > - ok(test.parent, false, "failed subtests", {
> > - failed = test.failed;
> > - planned = test.planned;
> > + elseif testcase.failed > 0 then
> > + if testcase.parent ~= nil then
> > + ok(testcase.parent, false, "failed subtests", {
> > + failed = testcase.failed;
> > + planned = testcase.planned;
> > })
> > else
> > - diag(test, "failed subtest: %d", test.failed)
> > + diag(testcase, "failed subtest: %d", testcase.failed)
> > end
> > else
> > - if test.parent ~= nil then
> > - ok(test.parent, true, test.name)
> > + if testcase.parent ~= nil then
> > + ok(testcase.parent, true, testcase.name)
> > end
> > end
> > - return test.planned == test.total and test.failed == 0
> > + return testcase.planned == testcase.total and testcase.failed == 0
> > end
> > test_mt = {
> > diff --git a/src/lua/trigger.lua b/src/lua/trigger.lua
> > index 76a582c47..1330ecdd4 100644
> > --- a/src/lua/trigger.lua
> > +++ b/src/lua/trigger.lua
> > @@ -1,7 +1,4 @@
> > local fun = require('fun')
> > -local log = require('log')
> > -
> > -local table_clear = require('table.clear')
> > --
> > -- Checks that argument is a callable, i.e. a function or a table
> >
--
sergeyb@
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua
2020-04-03 9:39 [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua Sergey Bronnikov
2020-04-03 10:13 ` lvasiliev
@ 2020-04-03 14:21 ` Oleg Babin
2020-04-06 9:33 ` Sergey Bronnikov
2020-04-03 20:39 ` Vladislav Shpilevoy
` (2 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: Oleg Babin @ 2020-04-03 14:21 UTC (permalink / raw)
To: Sergey Bronnikov, tarantool-patches, avtikhon, alexander.turenko,
o.piskunov
Hi! Thanks for your patch!
I think not only "src/lua/*.lua" should be checked but also
"src/box/lua/*.lua".
Also see one comment.
On 03/04/2020 12:39, Sergey Bronnikov wrote:
> diff --git a/src/lua/tap.lua b/src/lua/tap.lua
> index 94b080d5a..04497386e 100644
> --- a/src/lua/tap.lua
> +++ b/src/lua/tap.lua
> @@ -53,7 +53,7 @@ local function ok(test, cond, message, extra)
> io.write(string.format("not ok - %s\n", message))
> extra = extra or {}
> if test.trace then
> - local frame = debug.getinfo(3, "Sl")
> + debug.getinfo(3, "Sl")
I think debug.getinfo() could be completely removed. It doesn't change
any state it only returns some debug information that is completely unused.
---
Oleg Babin
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua
2020-04-03 9:39 [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua Sergey Bronnikov
2020-04-03 10:13 ` lvasiliev
2020-04-03 14:21 ` Oleg Babin
@ 2020-04-03 20:39 ` Vladislav Shpilevoy
2020-04-03 22:39 ` Vladislav Shpilevoy
2020-04-04 9:34 ` Igor Munkin
4 siblings, 0 replies; 11+ messages in thread
From: Vladislav Shpilevoy @ 2020-04-03 20:39 UTC (permalink / raw)
To: Sergey Bronnikov, tarantool-patches, avtikhon, alexander.turenko,
o.piskunov
I am going to review this. Please, don't push before that.
On 03/04/2020 11:39, Sergey Bronnikov wrote:
> GitHub branch: https://github.com/tarantool/tarantool/tree/ligurio/gh-4681-fix-luacheck-warnings
>
> How-to check:
>
> $ tarantoolctl rocks install luacheck
> $ .rocks/bin/luacheck src/lua/*.lua
>
> ---
> src/lua/argparse.lua | 6 ++--
> src/lua/buffer.lua | 4 +--
> src/lua/clock.lua | 2 +-
> src/lua/crypto.lua | 18 +++++-----
> src/lua/csv.lua | 5 ++-
> src/lua/digest.lua | 6 ++--
> src/lua/env.lua | 2 +-
> src/lua/errno.lua | 2 +-
> src/lua/fio.lua | 28 ++++++++--------
> src/lua/help.lua | 24 +++++++-------
> src/lua/httpc.lua | 3 --
> src/lua/init.lua | 17 +++++-----
> src/lua/msgpackffi.lua | 15 ++++-----
> src/lua/socket.lua | 66 ++++++++++++++++++-------------------
> src/lua/string.lua | 1 -
> src/lua/swim.lua | 20 +++++------
> src/lua/tap.lua | 75 ++++++++++++++++++++----------------------
> src/lua/trigger.lua | 3 --
> 18 files changed, 142 insertions(+), 155 deletions(-)
>
> diff --git a/src/lua/argparse.lua b/src/lua/argparse.lua
> index faa0ae130..f58985425 100644
> --- a/src/lua/argparse.lua
> +++ b/src/lua/argparse.lua
> @@ -90,8 +90,8 @@ local function convert_parameter(name, convert_from, convert_to)
> return convert_from
> end
>
> -local function parameters_parse(t_in, options)
> - local t_out, t_in = {}, t_in or {}
> +local function parameters_parse(t__in, options)
> + local t_out, t_in = {}, t__in or {}
>
> -- Prepare a lookup table for options. An option name -> a
> -- type name to convert a parameter into or true (which means
> @@ -145,7 +145,7 @@ local function parameters_parse(t_in, options)
> if parameter_has_value(lookup[command]) then
> -- in case next argument is value of this key (not --arg)
> local next_arg = t_in[i + 1]
> - local is_long, is_short, is_dash = parse_param_prefix(next_arg)
> + is_long, is_short, is_dash = parse_param_prefix(next_arg)
> if is_dash then
> skip_param = true
> elseif is_long == false and not is_short and not is_dash then
> diff --git a/src/lua/buffer.lua b/src/lua/buffer.lua
> index 9aac82b39..5979980ed 100644
> --- a/src/lua/buffer.lua
> +++ b/src/lua/buffer.lua
> @@ -182,7 +182,7 @@ local ibuf_methods = {
> unused = ibuf_unused;
> }
>
> -local function ibuf_tostring(ibuf)
> +local function ibuf_tostring(ibuf) -- luacheck: ignore 212
> return '<ibuf>'
> end
> local ibuf_mt = {
> @@ -193,7 +193,7 @@ local ibuf_mt = {
>
> ffi.metatype(ibuf_t, ibuf_mt);
>
> -local function ibuf_new(arg, arg2)
> +local function ibuf_new(arg)
> local buf = ffi.new(ibuf_t)
> local slabc = builtin.tarantool_lua_slab_cache()
> builtin.ibuf_create(buf, slabc, READAHEAD)
> diff --git a/src/lua/clock.lua b/src/lua/clock.lua
> index 60c78663c..fee43ccde 100644
> --- a/src/lua/clock.lua
> +++ b/src/lua/clock.lua
> @@ -33,7 +33,7 @@ clock.bench = function(fun, ...)
> overhead = clock.proc() - overhead
> local start_time = clock.proc()
> local res = {0, fun(...)}
> - res[1] = clock.proc() - start_time - overhead, res
> + res[1] = clock.proc() - start_time - overhead
> return res
> end
>
> diff --git a/src/lua/crypto.lua b/src/lua/crypto.lua
> index bf3064c70..9929b93ba 100644
> --- a/src/lua/crypto.lua
> +++ b/src/lua/crypto.lua
> @@ -75,7 +75,7 @@ local function openssl_err_str()
> end
>
> local digests = {}
> -for class, name in pairs({
> +for class, _ in pairs({
> md2 = 'MD2', md4 = 'MD4', md5 = 'MD5',
> sha1 = 'SHA1', sha224 = 'SHA224',
> sha256 = 'SHA256', sha384 = 'SHA384', sha512 = 'SHA512',
> @@ -318,7 +318,7 @@ for class, digest in pairs(digests) do
> digest_api[class] = setmetatable({
> new = function () return digest_new(digest) end
> }, {
> - __call = function (self, str)
> + __call = function (self, str) -- luacheck: ignore 212
> if type(str) ~= 'string' then
> error("Usage: digest."..class.."(string)")
> end
> @@ -332,7 +332,7 @@ for class, digest in pairs(digests) do
> end
>
> digest_api = setmetatable(digest_api,
> - {__index = function(self, digest)
> + {__index = function(self, digest) -- luacheck: ignore 212
> return error('Digest method "' .. digest .. '" is not supported')
> end })
>
> @@ -341,7 +341,7 @@ for class, digest in pairs(hmacs) do
> hmac_api[class] = setmetatable({
> new = function (key) return hmac_new(digest, key) end
> }, {
> - __call = function (self, key, str)
> + __call = function (self, key, str) -- luacheck: ignore 212
> if type(str) ~= 'string' then
> error("Usage: hmac."..class.."(key, string)")
> end
> @@ -361,7 +361,7 @@ for class, digest in pairs(hmacs) do
> end
>
> hmac_api = setmetatable(hmac_api,
> - {__index = function(self, digest)
> + {__index = function(self, digest) -- luacheck: ignore 212
> return error('HMAC method "' .. digest .. '" is not supported')
> end })
>
> @@ -384,12 +384,12 @@ local crypto_dirs = {
> }
>
> local algo_api_mt = {
> - __index = function(self, mode)
> + __index = function(self, mode) -- luacheck: ignore 212
> error('Cipher mode ' .. mode .. ' is not supported')
> end
> }
> local crypto_api_mt = {
> - __index = function(self, cipher)
> + __index = function(self, cipher) -- luacheck: ignore 212
> return error('Cipher method "' .. cipher .. '" is not supported')
> end
> }
> @@ -408,7 +408,7 @@ for algo_name, algo_value in pairs(crypto_algos) do
> dir_value)
> end
> }, {
> - __call = function(self, str, key, iv)
> + __call = function(self, str, key, iv) -- luacheck: ignore 212
> local ctx = crypto_stream_new(algo_value, mode_value, key,
> iv, dir_value)
> local res = ctx:update(str)
> @@ -428,7 +428,7 @@ local public_methods = {
> }
>
> local module_mt = {
> - __serialize = function(s)
> + __serialize = function()
> return public_methods
> end,
> __index = public_methods
> diff --git a/src/lua/csv.lua b/src/lua/csv.lua
> index 7dff2f213..de6726bb7 100644
> --- a/src/lua/csv.lua
> +++ b/src/lua/csv.lua
> @@ -188,10 +188,10 @@ module.dump = function(t, opts, writable)
> if type(writable) == 'nil' then
> result_table = {}
> end
> - for k, line in pairs(t) do
> + for _, line in pairs(t) do
> local first = true
> local output_tuple = {}
> - for k2, field in pairs(line) do
> + for _, field in pairs(line) do
> local strf = tostring(field)
> local buf_new_size = (strf:len() + 1) * 2
> if buf_new_size > bufsz then
> @@ -214,7 +214,6 @@ module.dump = function(t, opts, writable)
> else
> writable:write(table.concat(output_tuple))
> end
> - output_tuple = {}
> end
> ffi.C.csv_destroy(csv)
> csv.realloc(buf, 0)
> diff --git a/src/lua/digest.lua b/src/lua/digest.lua
> index 6ed91cfa2..5c6eb2ae2 100644
> --- a/src/lua/digest.lua
> +++ b/src/lua/digest.lua
> @@ -91,7 +91,7 @@ PMurHash = {
> }
>
> setmetatable(PMurHash, {
> - __call = function(self, str)
> + __call = function(self, str) -- luacheck: ignore 212
> if type(str) ~= 'string' then
> error("Usage: digest.murhash(string)")
> end
> @@ -134,7 +134,7 @@ CRC32 = {
> }
>
> setmetatable(CRC32, {
> - __call = function(self, str)
> + __call = function(self, str) -- luacheck: ignore 212
> if type(str) ~= 'string' then
> error("Usage digest.crc32(string)")
> end
> @@ -246,7 +246,7 @@ local m = {
> end
> }
>
> -for digest, name in pairs(digest_shortcuts) do
> +for digest, _ in pairs(digest_shortcuts) do
> m[digest] = function (str)
> return crypto.digest[digest](str)
> end
> diff --git a/src/lua/env.lua b/src/lua/env.lua
> index dd1616a84..d851586f0 100644
> --- a/src/lua/env.lua
> +++ b/src/lua/env.lua
> @@ -28,7 +28,7 @@ os.environ = function()
> end
>
> os.setenv = function(key, value)
> - local rv = nil
> + local rv = nil -- luacheck: ignore 311
> if value ~= nil then
> rv = ffi.C.setenv(key, value, 1)
> else
> diff --git a/src/lua/errno.lua b/src/lua/errno.lua
> index db800ce30..c91cad4b7 100644
> --- a/src/lua/errno.lua
> +++ b/src/lua/errno.lua
> @@ -17,5 +17,5 @@ return setmetatable({
> }, {
> __index = errno_list,
> __newindex = function() error("Can't create new errno constants") end,
> - __call = function(self, ...) return ffi.errno(...) end
> + __call = function(self, ...) return ffi.errno(...) end -- luacheck: ignore 212
> })
> diff --git a/src/lua/fio.lua b/src/lua/fio.lua
> index 4692e1026..dd71c6742 100644
> --- a/src/lua/fio.lua
> +++ b/src/lua/fio.lua
> @@ -306,7 +306,7 @@ fio.abspath = function(path)
> error("Usage: fio.abspath(path)")
> end
> path = path
> - local joined_path = ''
> + local joined_path = '' -- luacheck: ignore 311
> local path_tab = {}
> if string.sub(path, 1, 1) == '/' then
> joined_path = path
> @@ -343,7 +343,7 @@ fio.listdir = function(path)
> return t
> end
> local names = string.split(str, "\n")
> - for i, name in ipairs(names) do
> + for _, name in ipairs(names) do
> table.insert(t, name)
> end
> return t
> @@ -355,15 +355,15 @@ fio.mktree = function(path, mode)
> end
> path = fio.abspath(path)
>
> - local path = string.gsub(path, '^/', '')
> + path = string.gsub(path, '^/', '')
> local dirs = string.split(path, "/")
>
> local current_dir = "/"
> - for i, dir in ipairs(dirs) do
> + for _, dir in ipairs(dirs) do
> current_dir = fio.pathjoin(current_dir, dir)
> local stat = fio.stat(current_dir)
> if stat == nil then
> - local st, err = fio.mkdir(current_dir, mode)
> + local _, err = fio.mkdir(current_dir, mode)
> -- fio.stat() and fio.mkdir() above are separate calls
> -- and a file system may be changed between them. So
> -- if the error here is due to an existing directory,
> @@ -384,20 +384,20 @@ fio.rmtree = function(path)
> if type(path) ~= 'string' then
> error("Usage: fio.rmtree(path)")
> end
> - local status, err
> + local status -- luacheck: ignore 231
> path = fio.abspath(path)
> local ls, err = fio.listdir(path)
> if err ~= nil then
> return nil, err
> end
> - for i, f in ipairs(ls) do
> + for _, f in ipairs(ls) do
> local tmppath = fio.pathjoin(path, f)
> local st = fio.lstat(tmppath)
> if st then
> if st:is_dir() then
> - st, err = fio.rmtree(tmppath)
> + _, err = fio.rmtree(tmppath)
> else
> - st, err = fio.unlink(tmppath)
> + _, err = fio.unlink(tmppath)
> end
> if err ~= nil then
> return nil, err
> @@ -430,7 +430,6 @@ fio.copytree = function(from, to)
> if type(from) ~= 'string' or type(to) ~= 'string' then
> error('Usage: fio.copytree(from, to)')
> end
> - local status, reason
> local st = fio.stat(from)
> if not st then
> return false, string.format("Directory %s does not exist", from)
> @@ -444,14 +443,14 @@ fio.copytree = function(from, to)
> end
>
> -- create tree of destination
> - status, reason = fio.mktree(to)
> + local status, reason = fio.mktree(to) -- luacheck: ignore 231
> if reason ~= nil then
> return false, reason
> end
> - for i, f in ipairs(ls) do
> + for _, f in ipairs(ls) do
> local ffrom = fio.pathjoin(from, f)
> local fto = fio.pathjoin(to, f)
> - local st = fio.lstat(ffrom)
> + st = fio.lstat(ffrom)
> if st and st:is_dir() then
> status, reason = fio.copytree(ffrom, fto)
> if reason ~= nil then
> @@ -465,7 +464,8 @@ fio.copytree = function(from, to)
> end
> end
> if st:is_link() then
> - local link_to, reason = fio.readlink(ffrom)
> + local link_to
> + link_to, reason = fio.readlink(ffrom)
> if reason ~= nil then
> return false, reason
> end
> diff --git a/src/lua/help.lua b/src/lua/help.lua
> index 54ff1b5d0..768f4dec4 100644
> --- a/src/lua/help.lua
> +++ b/src/lua/help.lua
> @@ -7,22 +7,22 @@ local doc = require('help.en_US')
> -- corresponds to a tarantool version a user runs.
> local DOCUMENTATION_VERSION = '2.1'
>
> -help = { doc.help }
> -tutorial = {}
> -tutorial[1] = help[1]
> +help = { doc.help } -- luacheck: ignore 111
> +tutorial = {} -- luacheck: ignore 111
> +tutorial[1] = help[1] -- luacheck: ignore 112 113
>
> -local help_function_data = {};
> -local help_object_data = {}
> +local help_function_data = {}; -- luacheck: ignore 211
> +local help_object_data = {} -- luacheck: ignore 211
>
> -local function help_call(table, param)
> - return help
> +local function help_call(table, param) -- luacheck: ignore 212
> + return help -- luacheck: ignore 113
> end
>
> -setmetatable(help, { __call = help_call })
> +setmetatable(help, { __call = help_call }) -- luacheck: ignore 113
>
> local screen_id = 1;
>
> -local function tutorial_call(table, action)
> +local function tutorial_call(table, action) -- luacheck: ignore 212
> if action == 'start' then
> screen_id = 1;
> elseif action == 'next' or action == 'more' then
> @@ -46,9 +46,9 @@ local function tutorial_call(table, action)
> return (res:gsub('<version>', DOCUMENTATION_VERSION))
> end
>
> -setmetatable(tutorial, { __call = tutorial_call })
> +setmetatable(tutorial, { __call = tutorial_call }) -- luacheck: ignore 113
>
> return {
> - help = help;
> - tutorial = tutorial;
> + help = help; -- luacheck: ignore 113
> + tutorial = tutorial; -- luacheck: ignore 113
> }
> diff --git a/src/lua/httpc.lua b/src/lua/httpc.lua
> index 6381c6a1a..9336dcee0 100644
> --- a/src/lua/httpc.lua
> +++ b/src/lua/httpc.lua
> @@ -29,8 +29,6 @@
> -- SUCH DAMAGE.
> --
>
> -local fiber = require('fiber')
> -
> local driver = package.loaded.http.client
> package.loaded.http = nil
>
> @@ -112,7 +110,6 @@ local special_characters = {
> [']'] = true,
> ['<'] = true,
> ['>'] = true,
> - ['>'] = true,
> ['@'] = true,
> [','] = true,
> [';'] = true,
> diff --git a/src/lua/init.lua b/src/lua/init.lua
> index ff3e74c3c..b075915a3 100644
> --- a/src/lua/init.lua
> +++ b/src/lua/init.lua
> @@ -71,7 +71,7 @@ local function setsearchroot(path)
> package_searchroot = path and fio.abspath(path)
> end
>
> -dostring = function(s, ...)
> +dostring = function(s, ...) -- luacheck: ignore 121
> local chunk, message = loadstring(s)
> if chunk == nil then
> error(message, 2)
> @@ -80,7 +80,7 @@ dostring = function(s, ...)
> end
>
> local fiber = require("fiber")
> -os.exit = function(code)
> +os.exit = function(code) -- luacheck: ignore 122
> code = (type(code) == 'number') and code or 0
> ffi.C.tarantool_exit(code)
> -- Make sure we yield even if the code after
> @@ -144,9 +144,9 @@ local function gen_search_func(path_fn, templates, need_traverse)
>
> local searchpaths = {}
>
> - for _, path in ipairs(paths) do
> + for _, p in ipairs(paths) do
> for _, template in pairs(templates) do
> - table.insert(searchpaths, fio.pathjoin(path, template))
> + table.insert(searchpaths, fio.pathjoin(p, template))
> end
> end
>
> @@ -176,7 +176,8 @@ local function gen_loader_func(search_fn, load_fn)
> if not file then
> return err
> end
> - local loaded, err = load_fn(file, name)
> + local loaded
> + loaded, err = load_fn(file, name)
> if err == nil then
> return loaded
> else
> @@ -221,9 +222,9 @@ table.insert(package.loaders, 5, gen_loader_func(search_rocks_lib, load_lib))
> -- package.cpath 7
> -- croot 8
>
> -package.search = search
> -package.searchroot = searchroot
> -package.setsearchroot = setsearchroot
> +package.search = search -- luacheck: ignore 122
> +package.searchroot = searchroot -- luacheck: ignore 122
> +package.setsearchroot = setsearchroot -- luacheck: ignore 122
>
> return {
> uptime = uptime;
> diff --git a/src/lua/msgpackffi.lua b/src/lua/msgpackffi.lua
> index f775f2d41..471b72c84 100644
> --- a/src/lua/msgpackffi.lua
> +++ b/src/lua/msgpackffi.lua
> @@ -291,7 +291,7 @@ local function encode(obj)
> return r
> end
>
> -local function encode_ibuf(obj, ibuf)
> +local function encode_ibuf(obj, ibuf) -- luacheck: ignore 211
> encode_r(ibuf, obj, 0)
> end
>
> @@ -320,7 +320,7 @@ local decode_r
>
> -- See similar constants in utils.cc
> local DBL_INT_MAX = 1e14 - 1
> -local DBL_INT_MIN = -1e14 + 1
> +local DBL_INT_MIN = -1e14 + 1 -- luacheck: ignore 211
>
> local function decode_u8(data)
> local num = ffi.cast(uint8_ptr_t, data[0])[0]
> @@ -465,8 +465,7 @@ end
> local function decode_array(data, size)
> assert (type(size) == "number")
> local arr = {}
> - local i
> - for i=1,size,1 do
> + for i=1,size,1 do -- luacheck: ignore 213
> table.insert(arr, decode_r(data))
> end
> if not msgpack.cfg.decode_save_metatables then
> @@ -478,8 +477,7 @@ end
> local function decode_map(data, size)
> assert (type(size) == "number")
> local map = {}
> - local i
> - for i=1,size,1 do
> + for i=1,size,1 do -- luacheck: ignore 213
> local key = decode_r(data);
> local val = decode_r(data);
> map[key] = val
> @@ -492,7 +490,7 @@ end
>
> local ext_decoder = {
> -- MP_UNKNOWN_EXTENSION
> - [0] = function(data, len) error("unsupported extension type") end,
> + [0] = function() error("unsupported extension type") end,
> -- MP_DECIMAL
> [1] = function(data, len) local num = ffi.new("decimal_t") builtin.decimal_unpack(data, len, num) return num end,
> }
> @@ -502,7 +500,6 @@ local function decode_ext(data)
> -- mp_decode_extl and mp_decode_decimal
> -- need type code
> data[0] = data[0] - 1
> - local old_data = data[0]
> local len = builtin.mp_decode_extl(data, t)
> local fun = ext_decoder[t[0]]
> if type(fun) == 'function' then
> @@ -589,7 +586,7 @@ local function check_offset(offset, len)
> if offset == nil then
> return 1
> end
> - local offset = ffi.cast('ptrdiff_t', offset)
> + offset = ffi.cast('ptrdiff_t', offset)
> if offset < 1 or offset > len then
> error(string.format("offset = %d is out of bounds [1..%d]",
> tonumber(offset), len))
> diff --git a/src/lua/socket.lua b/src/lua/socket.lua
> index a334ad45b..c5691a425 100644
> --- a/src/lua/socket.lua
> +++ b/src/lua/socket.lua
> @@ -172,7 +172,7 @@ local function get_iflags(table, flags)
> if type(flags) ~= 'table' then
> flags = { flags }
> end
> - for i, f in pairs(flags) do
> + for _, f in pairs(flags) do
> if table[f] == nil then
> return nil
> end
> @@ -660,7 +660,7 @@ local function check_delimiter(self, limit, eols)
> end
>
> local shortest
> - for i, eol in ipairs(eols) do
> + for _, eol in ipairs(eols) do
> local data = ffi.C.memmem(rbuf.rpos, rbuf:size(), eol, #eol)
> if data ~= nil then
> local len = ffi.cast('char *', data) - rbuf.rpos + #eol
> @@ -706,16 +706,16 @@ local function read(self, limit, timeout, check, ...)
> local res = sysread(self, data, rbuf:unused())
> if res == 0 then -- eof
> self._errno = nil
> - local len = rbuf:size()
> - local data = ffi.string(rbuf.rpos, len)
> + len = rbuf:size()
> + data = ffi.string(rbuf.rpos, len)
> rbuf.rpos = rbuf.rpos + len
> return data
> elseif res ~= nil then
> rbuf.wpos = rbuf.wpos + res
> - local len = check(self, limit, ...)
> + len = check(self, limit, ...)
> if len ~= nil then
> self._errno = nil
> - local data = ffi.string(rbuf.rpos, len)
> + data = ffi.string(rbuf.rpos, len)
> rbuf.rpos = rbuf.rpos + len
> return data
> end
> @@ -1039,7 +1039,7 @@ local function tcp_connect(host, port, timeout)
> boxerrno(0)
> return s
> end
> - local timeout = timeout or TIMEOUT_INFINITY
> + timeout = timeout or TIMEOUT_INFINITY
> local stop = fiber.clock() + timeout
> local dns = getaddrinfo(host, port, timeout, { type = 'SOCK_STREAM',
> protocol = 'tcp' })
> @@ -1047,7 +1047,7 @@ local function tcp_connect(host, port, timeout)
> boxerrno(boxerrno.EINVAL)
> return nil
> end
> - for i, remote in pairs(dns) do
> + for _, remote in pairs(dns) do
> timeout = stop - fiber.clock()
> if timeout <= 0 then
> boxerrno(boxerrno.ETIMEDOUT)
> @@ -1078,8 +1078,8 @@ local function tcp_server_handler(server, sc, from)
> end
> end
>
> -local function tcp_server_loop(server, s, addr)
> - fiber.name(format("%s/%s:%s", server.name, addr.host, addr.port), {truncate = true})
> +local function tcp_server_loop(server, s, address)
> + fiber.name(format("%s/%s:%s", server.name, address.host, address.port), {truncate = true})
> log.info("started")
> while socket_readable(s) do
> local sc, from = socket_accept(s)
> @@ -1104,15 +1104,15 @@ local function tcp_server_usage()
> error('Usage: socket.tcp_server(host, port, handler | opts)')
> end
>
> -local function tcp_server_do_bind(s, addr)
> - if socket_bind(s, addr.host, addr.port) then
> - if addr.family == 'AF_UNIX' then
> +local function tcp_server_do_bind(s, address)
> + if socket_bind(s, address.host, address.port) then
> + if address.family == 'AF_UNIX' then
> -- Make close() remove the unix socket file created
> -- by bind(). Note, this must be done before closing
> -- the socket fd so that no other tcp server can
> -- reuse the same path before we remove the file.
> s.close = function(self)
> - fio.unlink(addr.port)
> + fio.unlink(address.port)
> return socket_close(self)
> end
> end
> @@ -1121,12 +1121,12 @@ local function tcp_server_do_bind(s, addr)
> return false
> end
>
> -local function tcp_server_bind_addr(s, addr)
> - if tcp_server_do_bind(s, addr) then
> +local function tcp_server_bind_addr(s, address)
> + if tcp_server_do_bind(s, address) then
> return true
> end
>
> - if addr.family ~= 'AF_UNIX' then
> + if address.family ~= 'AF_UNIX' then
> return false
> end
>
> @@ -1136,7 +1136,7 @@ local function tcp_server_bind_addr(s, addr)
>
> local save_errno = boxerrno()
>
> - local sc = tcp_connect(addr.host, addr.port)
> + local sc = tcp_connect(address.host, address.port)
> if sc ~= nil then
> sc:close()
> boxerrno(save_errno)
> @@ -1148,13 +1148,13 @@ local function tcp_server_bind_addr(s, addr)
> return false
> end
>
> - log.info("tcp_server: remove dead UNIX socket: %s", addr.port)
> - if not fio.unlink(addr.port) then
> + log.info("tcp_server: remove dead UNIX socket: %s", address.port)
> + if not fio.unlink(address.port) then
> log.warn("tcp_server: %s", boxerrno.strerror())
> boxerrno(save_errno)
> return false
> end
> - return tcp_server_do_bind(s, addr)
> + return tcp_server_do_bind(s, address)
> end
>
>
> @@ -1172,8 +1172,8 @@ local function tcp_server_bind(host, port, prepare, timeout)
> end
> end
>
> - for _, addr in ipairs(dns) do
> - local s = socket_new(addr.family, addr.type, addr.protocol)
> + for _, address in ipairs(dns) do
> + local s = socket_new(address.family, address.type, address.protocol)
> if s ~= nil then
> local backlog
> if prepare then
> @@ -1181,13 +1181,13 @@ local function tcp_server_bind(host, port, prepare, timeout)
> else
> socket_setsockopt(s, 'SOL_SOCKET', 'SO_REUSEADDR', 1) -- ignore error
> end
> - if not tcp_server_bind_addr(s, addr) or not s:listen(backlog) then
> + if not tcp_server_bind_addr(s, address) or not s:listen(backlog) then
> local save_errno = boxerrno()
> socket_close(s)
> boxerrno(save_errno)
> return nil
> end
> - return s, addr
> + return s, address
> end
> end
> -- DNS resolved successfully, but addresss family is not supported
> @@ -1211,12 +1211,12 @@ local function tcp_server(host, port, opts, timeout)
> tcp_server_usage()
> end
> server.name = server.name or 'server'
> - local s, addr = tcp_server_bind(host, port, server.prepare, timeout)
> + local s, address = tcp_server_bind(host, port, server.prepare, timeout)
> if not s then
> return nil
> end
> - fiber.create(tcp_server_loop, server, s, addr)
> - return s, addr
> + fiber.create(tcp_server_loop, server, s, address)
> + return s, address
> end
>
> socket_mt = {
> @@ -1311,7 +1311,7 @@ local function lsocket_tcp_getpeername(self)
> return peer.host, tostring(peer.port), peer.family:match("AF_(.*)"):lower()
> end
>
> -local function lsocket_tcp_settimeout(self, value, mode)
> +local function lsocket_tcp_settimeout(self, value, mode) -- luacheck: ignore 212
> check_socket(self)
> self.timeout = value
> -- mode is effectively ignored
> @@ -1467,7 +1467,7 @@ local function lsocket_tcp_receive(self, pattern, prefix)
> local result = { prefix }
> local deadline = fiber.clock() + (self.timeout or TIMEOUT_INFINITY)
> repeat
> - local data = read(self, LIMIT_INFINITY, timeout, check_infinity)
> + data = read(self, LIMIT_INFINITY, timeout, check_infinity)
> if data == nil then
> if not errno_is_transient[self._errno] then
> return nil, socket_error(self)
> @@ -1535,7 +1535,7 @@ lsocket_tcp_mt.__index.send = lsocket_tcp_send;
> -- TCP Constructor and Shortcuts
> --
>
> -local function lsocket_tcp()
> +local function lsocket_tcp(self)
> local s = socket_new('AF_INET', 'SOCK_STREAM', 'tcp')
> if not s then
> return nil, socket_error(self)
> @@ -1559,7 +1559,7 @@ local function lsocket_bind(host, port, backlog)
> if host == nil or port == nil then
> error("Usage: luasocket.bind(host, port [, backlog])")
> end
> - local function prepare(s) return backlog end
> + local function prepare() return backlog end
> local s = tcp_server_bind(host, port, prepare)
> if not s then
> return nil, boxerrno.strerror()
> @@ -1578,7 +1578,7 @@ return setmetatable({
> iowait = internal.iowait,
> internal = internal,
> }, {
> - __call = function(self, ...) return socket_new(...) end;
> + __call = function(self, ...) return socket_new(...) end; -- luacheck: ignore 212
> __index = {
> tcp = lsocket_tcp;
> connect = lsocket_connect;
> diff --git a/src/lua/string.lua b/src/lua/string.lua
> index 6e12c59ae..d3a846645 100644
> --- a/src/lua/string.lua
> +++ b/src/lua/string.lua
> @@ -233,7 +233,6 @@ local function string_startswith(inp, head, _start, _end)
> return false
> end
> _start = _start - 1
> - _end = _start + head_len - 1
> return memcmp(c_char_ptr(inp) + _start, c_char_ptr(head), head_len) == 0
> end
>
> diff --git a/src/lua/swim.lua b/src/lua/swim.lua
> index 01eeb7eae..7fd2e8250 100644
> --- a/src/lua/swim.lua
> +++ b/src/lua/swim.lua
> @@ -1,5 +1,5 @@
> local ffi = require('ffi')
> -local uuid = require('uuid')
> +local uuid_ = require('uuid')
> local buffer = require('buffer')
> local msgpack = require('msgpack')
> local crypto = require('crypto')
> @@ -239,7 +239,7 @@ local function swim_check_uuid(value, func_name)
> end
> return error(func_name..': expected string UUID or struct tt_uuid')
> end
> - value = uuid.fromstr(value)
> + value = uuid_.fromstr(value)
> if not value then
> return error(func_name..': invalid UUID')
> end
> @@ -370,7 +370,7 @@ end
> --
> local function swim_member_payload_str(m)
> local ptr = swim_check_member(m, 'member:payload_str()')
> - local cdata, size = swim_member_payload_raw(ptr)
> + local _, size = swim_member_payload_raw(ptr)
> if size > 0 then
> return ffi.string(swim_member_payload_raw(ptr))
> end
> @@ -461,7 +461,7 @@ local swim_member_mt = {
> is_dropped = swim_member_is_dropped,
> },
> __serialize = swim_member_serialize,
> - __newindex = function(m)
> + __newindex = function()
> return error('swim_member is a read-only object')
> end
> }
> @@ -781,20 +781,20 @@ local swim_member_event_mt = {
> --
> -- Create a closure function for preprocessing raw SWIM member
> -- event trigger parameters.
> --- @param s SWIM instance.
> +-- @param instance SWIM instance.
> -- @param callback User functions to call.
> -- @param ctx An optional parameter for @a callback passed as is.
> -- @return A function to set as a trigger.
> --
> -local function swim_on_member_event_new(s, callback, ctx)
> +local function swim_on_member_event_new(instance, callback, ctx)
> -- Do not keep a hard reference to a SWIM instance. Otherwise
> -- it is a cyclic reference, and both the instance and the
> -- trigger will never be GC-ed.
> - s = setmetatable({s}, {__mode = 'v'})
> + instance = setmetatable({instance}, {__mode = 'v'})
> return function(member_ptr, event_mask)
> - local s = s[1]
> - if s then
> - local m = swim_wrap_member(s, member_ptr)
> + local i = instance[1]
> + if i then
> + local m = swim_wrap_member(i, member_ptr)
> local event = setmetatable({event_mask}, swim_member_event_mt)
> return callback(m, event, ctx)
> end
> diff --git a/src/lua/tap.lua b/src/lua/tap.lua
> index 94b080d5a..04497386e 100644
> --- a/src/lua/tap.lua
> +++ b/src/lua/tap.lua
> @@ -53,7 +53,7 @@ local function ok(test, cond, message, extra)
> io.write(string.format("not ok - %s\n", message))
> extra = extra or {}
> if test.trace then
> - local frame = debug.getinfo(3, "Sl")
> + debug.getinfo(3, "Sl")
> extra.trace = traceback()
> extra.filename = extra.trace[#extra.trace].filename
> extra.line = extra.trace[#extra.trace].line
> @@ -76,9 +76,6 @@ local function skip(test, message, extra)
> ok(test, true, message.." # skip", extra)
> end
>
> -
> -local nan = 0/0
> -
> local function cmpdeeply(got, expected, extra)
> if type(expected) == "number" or type(got) == "number" then
> extra.got = got
> @@ -190,38 +187,38 @@ local function isboolean(test, v, message, extra)
> return is(test, type(v), 'boolean', message, extra)
> end
>
> -local function isfunction(test, v, message, extra)
> - return is(test, type(v), 'function', message, extra)
> +local function isfunction(testcase, v, message, extra)
> + return is(testcase, type(v), 'function', message, extra)
> end
>
> -local function isudata(test, v, utype, message, extra)
> +local function isudata(testcase, v, utype, message, extra)
> extra = extra or {}
> extra.expected = 'userdata<'..utype..'>'
> if type(v) == 'userdata' then
> extra.got = 'userdata<'..getmetatable(v)..'>'
> - return ok(test, getmetatable(v) == utype, message, extra)
> + return ok(testcase, getmetatable(v) == utype, message, extra)
> else
> extra.got = type(v)
> - return fail(test, message, extra)
> + return fail(testcase, message, extra)
> end
> end
>
> -local function iscdata(test, v, ctype, message, extra)
> +local function iscdata(testcase, v, ctype, message, extra)
> extra = extra or {}
> extra.expected = ffi.typeof(ctype)
> if type(v) == 'cdata' then
> extra.got = ffi.typeof(v)
> - return ok(test, ffi.istype(ctype, v), message, extra)
> + return ok(testcase, ffi.istype(ctype, v), message, extra)
> else
> extra.got = type(v)
> - return fail(test, message, extra)
> + return fail(testcase, message, extra)
> end
> end
>
> local test_mt
> local function test(parent, name, fun, ...)
> local level = parent ~= nil and parent.level + 1 or 0
> - local test = setmetatable({
> + local testcase = setmetatable({
> parent = parent;
> name = name;
> level = level;
> @@ -232,48 +229,48 @@ local function test(parent, name, fun, ...)
> strict = false;
> }, test_mt)
> if fun ~= nil then
> - test:diag('%s', test.name)
> - fun(test, ...)
> - test:diag('%s: end', test.name)
> - return test:check()
> + testcase:diag('%s', testcase.name)
> + fun(testcase, ...)
> + testcase:diag('%s: end', testcase.name)
> + return testcase:check()
> else
> - return test
> + return testcase
> end
> end
>
> -local function plan(test, planned)
> - test.planned = planned
> - io.write(string.rep(' ', 4 * test.level), string.format("1..%d\n", planned))
> +local function plan(testcase, planned)
> + testcase.planned = planned
> + io.write(string.rep(' ', 4 * testcase.level), string.format("1..%d\n", planned))
> end
>
> -local function check(test)
> - if test.checked then
> +local function check(testcase)
> + if testcase.checked then
> error('check called twice')
> end
> - test.checked = true
> - if test.planned ~= test.total then
> - if test.parent ~= nil then
> - ok(test.parent, false, "bad plan", { planned = test.planned;
> - run = test.total})
> + testcase.checked = true
> + if testcase.planned ~= testcase.total then
> + if testcase.parent ~= nil then
> + ok(testcase.parent, false, "bad plan", { planned = testcase.planned;
> + run = testcase.total})
> else
> - diag(test, string.format("bad plan: planned %d run %d",
> - test.planned, test.total))
> + diag(testcase, string.format("bad plan: planned %d run %d",
> + testcase.planned, testcase.total))
> end
> - elseif test.failed > 0 then
> - if test.parent ~= nil then
> - ok(test.parent, false, "failed subtests", {
> - failed = test.failed;
> - planned = test.planned;
> + elseif testcase.failed > 0 then
> + if testcase.parent ~= nil then
> + ok(testcase.parent, false, "failed subtests", {
> + failed = testcase.failed;
> + planned = testcase.planned;
> })
> else
> - diag(test, "failed subtest: %d", test.failed)
> + diag(testcase, "failed subtest: %d", testcase.failed)
> end
> else
> - if test.parent ~= nil then
> - ok(test.parent, true, test.name)
> + if testcase.parent ~= nil then
> + ok(testcase.parent, true, testcase.name)
> end
> end
> - return test.planned == test.total and test.failed == 0
> + return testcase.planned == testcase.total and testcase.failed == 0
> end
>
> test_mt = {
> diff --git a/src/lua/trigger.lua b/src/lua/trigger.lua
> index 76a582c47..1330ecdd4 100644
> --- a/src/lua/trigger.lua
> +++ b/src/lua/trigger.lua
> @@ -1,7 +1,4 @@
> local fun = require('fun')
> -local log = require('log')
> -
> -local table_clear = require('table.clear')
>
> --
> -- Checks that argument is a callable, i.e. a function or a table
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua
2020-04-03 9:39 [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua Sergey Bronnikov
` (2 preceding siblings ...)
2020-04-03 20:39 ` Vladislav Shpilevoy
@ 2020-04-03 22:39 ` Vladislav Shpilevoy
2020-04-07 15:35 ` Sergey Bronnikov
2020-04-04 9:34 ` Igor Munkin
4 siblings, 1 reply; 11+ messages in thread
From: Vladislav Shpilevoy @ 2020-04-03 22:39 UTC (permalink / raw)
To: Sergey Bronnikov, tarantool-patches, avtikhon, alexander.turenko,
o.piskunov
Hi! Thanks for the patch!
See 14 comments below, diff in the end of the email,
and on top of the branch in a separate commit.
On 03/04/2020 11:39, Sergey Bronnikov wrote:
> GitHub branch: https://github.com/tarantool/tarantool/tree/ligurio/gh-4681-fix-luacheck-warnings
>
> How-to check:
>
> $ tarantoolctl rocks install luacheck
> $ .rocks/bin/luacheck src/lua/*.lua
1. This patch clearly relates to 4681. Please, add a reference
to it. As
'Part of #4681'
2. I am still getting warnings, when run the check:
Checking src/lua/load_ffi_defs.lua 9 warnings
src/lua/load_ffi_defs.lua:8:1: setting non-standard global variable ffi
src/lua/load_ffi_defs.lua:10:1: accessing undefined variable ffi
src/lua/load_ffi_defs.lua:1607:4: accessing undefined variable ffi
src/lua/load_ffi_defs.lua:1607:23: accessing undefined variable ffi
src/lua/load_ffi_defs.lua:1608:5: accessing undefined variable ffi
src/lua/load_ffi_defs.lua:1624:5: accessing undefined variable ffi
src/lua/load_ffi_defs.lua:1639:1: accessing undefined variable ffi
src/lua/load_ffi_defs.lua:1701:1: accessing undefined variable ffi
src/lua/load_ffi_defs.lua:1730:1: accessing undefined variable ffi
> ---
> src/lua/argparse.lua | 6 ++--
> src/lua/buffer.lua | 4 +--
> src/lua/clock.lua | 2 +-
> src/lua/crypto.lua | 18 +++++-----
> src/lua/csv.lua | 5 ++-
> src/lua/digest.lua | 6 ++--
> src/lua/env.lua | 2 +-
> src/lua/errno.lua | 2 +-
> src/lua/fio.lua | 28 ++++++++--------
> src/lua/help.lua | 24 +++++++-------
> src/lua/httpc.lua | 3 --
> src/lua/init.lua | 17 +++++-----
> src/lua/msgpackffi.lua | 15 ++++-----
> src/lua/socket.lua | 66 ++++++++++++++++++-------------------
> src/lua/string.lua | 1 -
> src/lua/swim.lua | 20 +++++------
> src/lua/tap.lua | 75 ++++++++++++++++++++----------------------
> src/lua/trigger.lua | 3 --
> 18 files changed, 142 insertions(+), 155 deletions(-)
>
> diff --git a/src/lua/buffer.lua b/src/lua/buffer.lua
> index 9aac82b39..5979980ed 100644
> --- a/src/lua/buffer.lua
> +++ b/src/lua/buffer.lua
> @@ -182,7 +182,7 @@ local ibuf_methods = {
> unused = ibuf_unused;
> }
>
> -local function ibuf_tostring(ibuf)
> +local function ibuf_tostring(ibuf) -- luacheck: ignore 212
3. You can remove this argument. In Lua it is ok to call a
function and pass more arguments than it has.
> return '<ibuf>'
> end
> local ibuf_mt = {> diff --git a/src/lua/env.lua b/src/lua/env.lua
> index dd1616a84..d851586f0 100644
> --- a/src/lua/env.lua
> +++ b/src/lua/env.lua
> @@ -28,7 +28,7 @@ os.environ = function()
> end
>
> os.setenv = function(key, value)
> - local rv = nil
> + local rv = nil -- luacheck: ignore 311
4. Just remove '= nil'.
> if value ~= nil then
> rv = ffi.C.setenv(key, value, 1)
> else
> diff --git a/src/lua/errno.lua b/src/lua/errno.lua
> index db800ce30..c91cad4b7 100644
> --- a/src/lua/errno.lua
> +++ b/src/lua/errno.lua
> @@ -17,5 +17,5 @@ return setmetatable({
> }, {
> __index = errno_list,
> __newindex = function() error("Can't create new errno constants") end,
> - __call = function(self, ...) return ffi.errno(...) end
> + __call = function(self, ...) return ffi.errno(...) end -- luacheck: ignore 212
5. This error is actually ridiculous in such a language as Lua.
Can we ignore it globally?
The same for error 122.
> })
> diff --git a/src/lua/fio.lua b/src/lua/fio.lua
> index 4692e1026..dd71c6742 100644
> --- a/src/lua/fio.lua
> +++ b/src/lua/fio.lua
> @@ -306,7 +306,7 @@ fio.abspath = function(path)
> error("Usage: fio.abspath(path)")
> end
> path = path
> - local joined_path = ''
> + local joined_path = '' -- luacheck: ignore 311
6. "= ''" can be removed.
> local path_tab = {}
> if string.sub(path, 1, 1) == '/' then
> joined_path = path> @@ -430,7 +430,6 @@ fio.copytree = function(from, to)
> if type(from) ~= 'string' or type(to) ~= 'string' then
> error('Usage: fio.copytree(from, to)')
> end
> - local status, reason
> local st = fio.stat(from)
> if not st then
> return false, string.format("Directory %s does not exist", from)
> @@ -444,14 +443,14 @@ fio.copytree = function(from, to)
> end
>
> -- create tree of destination
> - status, reason = fio.mktree(to)
> + local status, reason = fio.mktree(to) -- luacheck: ignore 231
7. You could keep this line untouched, but add the
warning ignorance to the original line above. To
change as few lines as possible to keep git blame
clean.
> diff --git a/src/lua/help.lua b/src/lua/help.lua
> index 54ff1b5d0..768f4dec4 100644
> --- a/src/lua/help.lua
> +++ b/src/lua/help.lua
> @@ -7,22 +7,22 @@ local doc = require('help.en_US')
> -- corresponds to a tarantool version a user runs.
> local DOCUMENTATION_VERSION = '2.1'
>
> -help = { doc.help }
> -tutorial = {}
> -tutorial[1] = help[1]
> +help = { doc.help } -- luacheck: ignore 111
> +tutorial = {} -- luacheck: ignore 111
8. This is insane. Should every global usage of these variables
be accompanied by these comments? Can they be ignored globally?
Or at least for this file?
> +tutorial[1] = help[1] -- luacheck: ignore 112 113
>
> -local help_function_data = {};
> -local help_object_data = {}
> +local help_function_data = {}; -- luacheck: ignore 211
> +local help_object_data = {} -- luacheck: ignore 211
>
> -local function help_call(table, param)
> - return help
> +local function help_call(table, param) -- luacheck: ignore 212
> + return help -- luacheck: ignore 113
> end
>
> -setmetatable(help, { __call = help_call })
> +setmetatable(help, { __call = help_call }) -- luacheck: ignore 113
>
> local screen_id = 1;
>
> -local function tutorial_call(table, action)
> +local function tutorial_call(table, action) -- luacheck: ignore 212
> if action == 'start' then
> screen_id = 1;
> elseif action == 'next' or action == 'more' then
> @@ -46,9 +46,9 @@ local function tutorial_call(table, action)
> return (res:gsub('<version>', DOCUMENTATION_VERSION))
> end
>
> -setmetatable(tutorial, { __call = tutorial_call })
> +setmetatable(tutorial, { __call = tutorial_call }) -- luacheck: ignore 113
>
> return {
> - help = help;
> - tutorial = tutorial;
> + help = help; -- luacheck: ignore 113
> + tutorial = tutorial; -- luacheck: ignore 113
> }
> diff --git a/src/lua/msgpackffi.lua b/src/lua/msgpackffi.lua
> index f775f2d41..471b72c84 100644
> --- a/src/lua/msgpackffi.lua
> +++ b/src/lua/msgpackffi.lua
> @@ -291,7 +291,7 @@ local function encode(obj)
> return r
> end
>
> -local function encode_ibuf(obj, ibuf)
> +local function encode_ibuf(obj, ibuf) -- luacheck: ignore 211
9. This function is just unused.
> encode_r(ibuf, obj, 0)
> end
>
> @@ -320,7 +320,7 @@ local decode_r
>
> -- See similar constants in utils.cc
> local DBL_INT_MAX = 1e14 - 1
> -local DBL_INT_MIN = -1e14 + 1
> +local DBL_INT_MIN = -1e14 + 1 -- luacheck: ignore 211
10. Also really unused, and can be removed.
>
> local function decode_u8(data)
> local num = ffi.cast(uint8_ptr_t, data[0])[0]
> @@ -465,8 +465,7 @@ end
> local function decode_array(data, size)
> assert (type(size) == "number")
> local arr = {}
> - local i
> - for i=1,size,1 do
> + for i=1,size,1 do -- luacheck: ignore 213
11. Seems like you decided to use '_' to ignore a loop
variable in all the similar places above and below.
Why didn't you apply it here?
> table.insert(arr, decode_r(data))
> end
> diff --git a/src/lua/socket.lua b/src/lua/socket.lua
> index a334ad45b..c5691a425 100644
> --- a/src/lua/socket.lua
> +++ b/src/lua/socket.lua
> @@ -1311,7 +1311,7 @@ local function lsocket_tcp_getpeername(self)
> return peer.host, tostring(peer.port), peer.family:match("AF_(.*)"):lower()
> end
>
> -local function lsocket_tcp_settimeout(self, value, mode)
> +local function lsocket_tcp_settimeout(self, value, mode) -- luacheck: ignore 212
12. Mode is the last argument and can be removed.
> check_socket(self)
> self.timeout = value
> -- mode is effectively ignored
> diff --git a/src/lua/swim.lua b/src/lua/swim.lua
> index 01eeb7eae..7fd2e8250 100644
> --- a/src/lua/swim.lua
> +++ b/src/lua/swim.lua
> @@ -1,5 +1,5 @@
> local ffi = require('ffi')
> -local uuid = require('uuid')
> +local uuid_ = require('uuid')
13. Yeah, this line is basically the reason I decided to review
the patch. I deliberately shadowed this global name in some
functions, because the name is good, the library is not used
in these functions, and this is our convention - we don't call
a library 'name + _'. For example, we don't call them 'fiber_',
or 'ffi_', or 'console_', and so on. Is it possible to ignore
this error?
I would better expect from luacheck some real help. Like usage
of undeclared variables, duplicate keys in declared tables,
unused functions. Complaints about other staff just make the
code dirty with all these 'luacheck: ignore', IMO.
Most of the warning fixes in this patch made the code worse.
For example, using '_' as a variable name sometimes makes it
harder to understand what is in that value so as it is ignored
and why.
I think we should have a config where the useless or harmful
warnings are ignored. It seems luacheck supports configuration
stored in a special file.
> local buffer = require('buffer')
> local msgpack = require('msgpack')
> local crypto = require('crypto')
> diff --git a/src/lua/tap.lua b/src/lua/tap.lua
> index 94b080d5a..04497386e 100644
> --- a/src/lua/tap.lua
> +++ b/src/lua/tap.lua
> @@ -53,7 +53,7 @@ local function ok(test, cond, message, extra)
> io.write(string.format("not ok - %s\n", message))
> extra = extra or {}
> if test.trace then
> - local frame = debug.getinfo(3, "Sl")
> + debug.getinfo(3, "Sl")
14. Why is that call needed, if its result is not used?
> extra.trace = traceback()
> extra.filename = extra.trace[#extra.trace].filename
> extra.line = extra.trace[#extra.trace].line
Commit on top of your branch:
====================
diff --git a/src/lua/buffer.lua b/src/lua/buffer.lua
index 5979980ed..43c7e1170 100644
--- a/src/lua/buffer.lua
+++ b/src/lua/buffer.lua
@@ -182,7 +182,7 @@ local ibuf_methods = {
unused = ibuf_unused;
}
-local function ibuf_tostring(ibuf) -- luacheck: ignore 212
+local function ibuf_tostring()
return '<ibuf>'
end
local ibuf_mt = {
diff --git a/src/lua/env.lua b/src/lua/env.lua
index d851586f0..a31b7098f 100644
--- a/src/lua/env.lua
+++ b/src/lua/env.lua
@@ -28,7 +28,7 @@ os.environ = function()
end
os.setenv = function(key, value)
- local rv = nil -- luacheck: ignore 311
+ local rv
if value ~= nil then
rv = ffi.C.setenv(key, value, 1)
else
diff --git a/src/lua/fio.lua b/src/lua/fio.lua
index dd71c6742..362736871 100644
--- a/src/lua/fio.lua
+++ b/src/lua/fio.lua
@@ -306,7 +306,7 @@ fio.abspath = function(path)
error("Usage: fio.abspath(path)")
end
path = path
- local joined_path = '' -- luacheck: ignore 311
+ local joined_path
local path_tab = {}
if string.sub(path, 1, 1) == '/' then
joined_path = path
@@ -430,6 +430,7 @@ fio.copytree = function(from, to)
if type(from) ~= 'string' or type(to) ~= 'string' then
error('Usage: fio.copytree(from, to)')
end
+ local status, reason -- luacheck: ignore 231
local st = fio.stat(from)
if not st then
return false, string.format("Directory %s does not exist", from)
@@ -443,7 +444,7 @@ fio.copytree = function(from, to)
end
-- create tree of destination
- local status, reason = fio.mktree(to) -- luacheck: ignore 231
+ status, reason = fio.mktree(to)
if reason ~= nil then
return false, reason
end
diff --git a/src/lua/msgpackffi.lua b/src/lua/msgpackffi.lua
index 471b72c84..eacf2d1d5 100644
--- a/src/lua/msgpackffi.lua
+++ b/src/lua/msgpackffi.lua
@@ -291,10 +291,6 @@ local function encode(obj)
return r
end
-local function encode_ibuf(obj, ibuf) -- luacheck: ignore 211
- encode_r(ibuf, obj, 0)
-end
-
on_encode(ffi.typeof('uint8_t'), encode_int)
on_encode(ffi.typeof('uint16_t'), encode_int)
on_encode(ffi.typeof('uint32_t'), encode_int)
@@ -320,7 +316,6 @@ local decode_r
-- See similar constants in utils.cc
local DBL_INT_MAX = 1e14 - 1
-local DBL_INT_MIN = -1e14 + 1 -- luacheck: ignore 211
local function decode_u8(data)
local num = ffi.cast(uint8_ptr_t, data[0])[0]
@@ -465,7 +460,7 @@ end
local function decode_array(data, size)
assert (type(size) == "number")
local arr = {}
- for i=1,size,1 do -- luacheck: ignore 213
+ for _ = 1, size do
table.insert(arr, decode_r(data))
end
if not msgpack.cfg.decode_save_metatables then
@@ -477,7 +472,7 @@ end
local function decode_map(data, size)
assert (type(size) == "number")
local map = {}
- for i=1,size,1 do -- luacheck: ignore 213
+ for _ = 1, size do
local key = decode_r(data);
local val = decode_r(data);
map[key] = val
diff --git a/src/lua/socket.lua b/src/lua/socket.lua
index c5691a425..c0aa48bbe 100644
--- a/src/lua/socket.lua
+++ b/src/lua/socket.lua
@@ -1311,10 +1311,9 @@ local function lsocket_tcp_getpeername(self)
return peer.host, tostring(peer.port), peer.family:match("AF_(.*)"):lower()
end
-local function lsocket_tcp_settimeout(self, value, mode) -- luacheck: ignore 212
+local function lsocket_tcp_settimeout(self, value)
check_socket(self)
self.timeout = value
- -- mode is effectively ignored
return 1
end
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua
2020-04-03 9:39 [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua Sergey Bronnikov
` (3 preceding siblings ...)
2020-04-03 22:39 ` Vladislav Shpilevoy
@ 2020-04-04 9:34 ` Igor Munkin
2020-04-07 15:15 ` Sergey Bronnikov
4 siblings, 1 reply; 11+ messages in thread
From: Igor Munkin @ 2020-04-04 9:34 UTC (permalink / raw)
To: Sergey Bronnikov; +Cc: o.piskunov, tarantool-patches
Sergey,
Thanks for the patch. It's not a review, I just want to add my two cents
regarding luacheck usage.
1. Please consider the way style violations are organized in uJIT
repo[1]. You can also group everything into a single file for better
further maintenance.
2. There is also a runner[2] for luacheck, that considers uJIT specifics
(e.g. ujit table is a global variable similar to Tarantool's box one).
I guess this approach should be considered, even if you decide to make
the patch your own way.
On 03.04.20, Sergey Bronnikov wrote:
> GitHub branch: https://github.com/tarantool/tarantool/tree/ligurio/gh-4681-fix-luacheck-warnings
>
> How-to check:
>
> $ tarantoolctl rocks install luacheck
> $ .rocks/bin/luacheck src/lua/*.lua
>
> ---
> src/lua/argparse.lua | 6 ++--
> src/lua/buffer.lua | 4 +--
> src/lua/clock.lua | 2 +-
> src/lua/crypto.lua | 18 +++++-----
> src/lua/csv.lua | 5 ++-
> src/lua/digest.lua | 6 ++--
> src/lua/env.lua | 2 +-
> src/lua/errno.lua | 2 +-
> src/lua/fio.lua | 28 ++++++++--------
> src/lua/help.lua | 24 +++++++-------
> src/lua/httpc.lua | 3 --
> src/lua/init.lua | 17 +++++-----
> src/lua/msgpackffi.lua | 15 ++++-----
> src/lua/socket.lua | 66 ++++++++++++++++++-------------------
> src/lua/string.lua | 1 -
> src/lua/swim.lua | 20 +++++------
> src/lua/tap.lua | 75 ++++++++++++++++++++----------------------
> src/lua/trigger.lua | 3 --
> 18 files changed, 142 insertions(+), 155 deletions(-)
>
<snipped>
>
> --
> sergeyb@
[1]: https://github.com/iponweb/luavela/blob/master/.luacheckrc
[2]: https://github.com/iponweb/luavela/blob/master/scripts/run-luacheck
--
Best regards,
IM
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua
2020-04-03 14:21 ` Oleg Babin
@ 2020-04-06 9:33 ` Sergey Bronnikov
2020-04-07 15:39 ` Sergey Bronnikov
0 siblings, 1 reply; 11+ messages in thread
From: Sergey Bronnikov @ 2020-04-06 9:33 UTC (permalink / raw)
To: Oleg Babin, tarantool-patches, avtikhon, alexander.turenko, o.piskunov
Hi, Oleg!
comments inline
On 17:21 Fri 03 Apr , Oleg Babin wrote:
> Hi! Thanks for your patch!
>
> I think not only "src/lua/*.lua" should be checked but also
> "src/box/lua/*.lua".
Yep, I remember about Lua code in other directories.
This commit a first step in this direction.
Patches for src/box and test/ will follow,
subscribe to issue https://github.com/tarantool/tarantool/issues/4681
if you are interested.
> Also see one comment.
>
> On 03/04/2020 12:39, Sergey Bronnikov wrote:
> > diff --git a/src/lua/tap.lua b/src/lua/tap.lua
> > index 94b080d5a..04497386e 100644
> > --- a/src/lua/tap.lua
> > +++ b/src/lua/tap.lua
> > @@ -53,7 +53,7 @@ local function ok(test, cond, message, extra)
> > io.write(string.format("not ok - %s\n", message))
> > extra = extra or {}
> > if test.trace then
> > - local frame = debug.getinfo(3, "Sl")
> > + debug.getinfo(3, "Sl")
>
> I think debug.getinfo() could be completely removed. It doesn't change any
> state it only returns some debug information that is completely unused.
This patch is about fixing warnings produced by luacheck,
Proposed change doesn't relate to Lua static analysis, so I suggest
to make it in a separate patch.
> ---
> Oleg Babin
--
sergeyb@
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua
2020-04-04 9:34 ` Igor Munkin
@ 2020-04-07 15:15 ` Sergey Bronnikov
0 siblings, 0 replies; 11+ messages in thread
From: Sergey Bronnikov @ 2020-04-07 15:15 UTC (permalink / raw)
To: Igor Munkin; +Cc: tarantool-patches
Igor, thanks for your comments. I have updated patch and moved all supressions
from source code to a luacheck config file.
Sergey
On 12:34 Sat 04 Apr , Igor Munkin wrote:
> Sergey,
>
> Thanks for the patch. It's not a review, I just want to add my two cents
> regarding luacheck usage.
>
> 1. Please consider the way style violations are organized in uJIT
> repo[1]. You can also group everything into a single file for better
> further maintenance.
>
> 2. There is also a runner[2] for luacheck, that considers uJIT specifics
> (e.g. ujit table is a global variable similar to Tarantool's box one).
>
> I guess this approach should be considered, even if you decide to make
> the patch your own way.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua
2020-04-03 22:39 ` Vladislav Shpilevoy
@ 2020-04-07 15:35 ` Sergey Bronnikov
0 siblings, 0 replies; 11+ messages in thread
From: Sergey Bronnikov @ 2020-04-07 15:35 UTC (permalink / raw)
To: Vladislav Shpilevoy; +Cc: tarantool-patches
Vlad, thanks a lot for your review. I have updated patchset according to
your comments and will send updated patchset to a list soon. Also see my
comments below.
On 00:39 Sat 04 Apr , Vladislav Shpilevoy wrote:
> Hi! Thanks for the patch!
>
> See 14 comments below, diff in the end of the email,
> and on top of the branch in a separate commit.
>
> On 03/04/2020 11:39, Sergey Bronnikov wrote:
> > GitHub branch: https://github.com/tarantool/tarantool/tree/ligurio/gh-4681-fix-luacheck-warnings
> >
> > How-to check:
> >
> > $ tarantoolctl rocks install luacheck
> > $ .rocks/bin/luacheck src/lua/*.lua
>
> 1. This patch clearly relates to 4681. Please, add a reference
> to it. As
>
> 'Part of #4681'
Done.
> 2. I am still getting warnings, when run the check:
>
> Checking src/lua/load_ffi_defs.lua 9 warnings
>
> src/lua/load_ffi_defs.lua:8:1: setting non-standard global variable ffi
> src/lua/load_ffi_defs.lua:10:1: accessing undefined variable ffi
> src/lua/load_ffi_defs.lua:1607:4: accessing undefined variable ffi
> src/lua/load_ffi_defs.lua:1607:23: accessing undefined variable ffi
> src/lua/load_ffi_defs.lua:1608:5: accessing undefined variable ffi
> src/lua/load_ffi_defs.lua:1624:5: accessing undefined variable ffi
> src/lua/load_ffi_defs.lua:1639:1: accessing undefined variable ffi
> src/lua/load_ffi_defs.lua:1701:1: accessing undefined variable ffi
> src/lua/load_ffi_defs.lua:1730:1: accessing undefined variable ffi
>
> > ---
> > src/lua/argparse.lua | 6 ++--
> > src/lua/buffer.lua | 4 +--
> > src/lua/clock.lua | 2 +-
> > src/lua/crypto.lua | 18 +++++-----
> > src/lua/csv.lua | 5 ++-
> > src/lua/digest.lua | 6 ++--
> > src/lua/env.lua | 2 +-
> > src/lua/errno.lua | 2 +-
> > src/lua/fio.lua | 28 ++++++++--------
> > src/lua/help.lua | 24 +++++++-------
> > src/lua/httpc.lua | 3 --
> > src/lua/init.lua | 17 +++++-----
> > src/lua/msgpackffi.lua | 15 ++++-----
> > src/lua/socket.lua | 66 ++++++++++++++++++-------------------
> > src/lua/string.lua | 1 -
> > src/lua/swim.lua | 20 +++++------
> > src/lua/tap.lua | 75 ++++++++++++++++++++----------------------
> > src/lua/trigger.lua | 3 --
> > 18 files changed, 142 insertions(+), 155 deletions(-)
> >
> > diff --git a/src/lua/buffer.lua b/src/lua/buffer.lua
> > index 9aac82b39..5979980ed 100644
> > --- a/src/lua/buffer.lua
> > +++ b/src/lua/buffer.lua
> > @@ -182,7 +182,7 @@ local ibuf_methods = {
> > unused = ibuf_unused;
> > }
> >
> > -local function ibuf_tostring(ibuf)
> > +local function ibuf_tostring(ibuf) -- luacheck: ignore 212
>
> 3. You can remove this argument. In Lua it is ok to call a
> function and pass more arguments than it has.
Done.
> > return '<ibuf>'
> > end
> > local ibuf_mt = {> diff --git a/src/lua/env.lua b/src/lua/env.lua
> > index dd1616a84..d851586f0 100644
> > --- a/src/lua/env.lua
> > +++ b/src/lua/env.lua
> > @@ -28,7 +28,7 @@ os.environ = function()
> > end
> >
> > os.setenv = function(key, value)
> > - local rv = nil
> > + local rv = nil -- luacheck: ignore 311
>
> 4. Just remove '= nil'.
Done.
> > if value ~= nil then
> > rv = ffi.C.setenv(key, value, 1)
> > else
> > diff --git a/src/lua/errno.lua b/src/lua/errno.lua
> > index db800ce30..c91cad4b7 100644
> > --- a/src/lua/errno.lua
> > +++ b/src/lua/errno.lua
> > @@ -17,5 +17,5 @@ return setmetatable({
> > }, {
> > __index = errno_list,
> > __newindex = function() error("Can't create new errno constants") end,
> > - __call = function(self, ...) return ffi.errno(...) end
> > + __call = function(self, ...) return ffi.errno(...) end -- luacheck: ignore 212
>
> 5. This error is actually ridiculous in such a language as Lua.
> Can we ignore it globally?
> The same for error 122.
Sure, both warnings W122 and W112 now ignored globally.
> > })
> > diff --git a/src/lua/fio.lua b/src/lua/fio.lua
> > index 4692e1026..dd71c6742 100644
> > --- a/src/lua/fio.lua
> > +++ b/src/lua/fio.lua
> > @@ -306,7 +306,7 @@ fio.abspath = function(path)
> > error("Usage: fio.abspath(path)")
> > end
> > path = path
> > - local joined_path = ''
> > + local joined_path = '' -- luacheck: ignore 311
>
> 6. "= ''" can be removed.
Done.
> > local path_tab = {}
> > if string.sub(path, 1, 1) == '/' then
> > joined_path = path> @@ -430,7 +430,6 @@ fio.copytree = function(from, to)
> > if type(from) ~= 'string' or type(to) ~= 'string' then
> > error('Usage: fio.copytree(from, to)')
> > end
> > - local status, reason
> > local st = fio.stat(from)
> > if not st then
> > return false, string.format("Directory %s does not exist", from)
> > @@ -444,14 +443,14 @@ fio.copytree = function(from, to)
> > end
> >
> > -- create tree of destination
> > - status, reason = fio.mktree(to)
> > + local status, reason = fio.mktree(to) -- luacheck: ignore 231
>
> 7. You could keep this line untouched, but add the
> warning ignorance to the original line above. To
> change as few lines as possible to keep git blame
> clean.
Moved all supressions from source code to a luacheck config.
> > diff --git a/src/lua/help.lua b/src/lua/help.lua
> > index 54ff1b5d0..768f4dec4 100644
> > --- a/src/lua/help.lua
> > +++ b/src/lua/help.lua
> > @@ -7,22 +7,22 @@ local doc = require('help.en_US')
> > -- corresponds to a tarantool version a user runs.
> > local DOCUMENTATION_VERSION = '2.1'
> >
> > -help = { doc.help }
> > -tutorial = {}
> > -tutorial[1] = help[1]
> > +help = { doc.help } -- luacheck: ignore 111
> > +tutorial = {} -- luacheck: ignore 111
>
> 8. This is insane. Should every global usage of these variables
> be accompanied by these comments? Can they be ignored globally?
> Or at least for this file?
Global variables specified per file in a luacheck config.
> > +tutorial[1] = help[1] -- luacheck: ignore 112 113
> >
> > -local help_function_data = {};
> > -local help_object_data = {}
> > +local help_function_data = {}; -- luacheck: ignore 211
> > +local help_object_data = {} -- luacheck: ignore 211
> >
> > -local function help_call(table, param)
> > - return help
> > +local function help_call(table, param) -- luacheck: ignore 212
> > + return help -- luacheck: ignore 113
> > end
> >
> > -setmetatable(help, { __call = help_call })
> > +setmetatable(help, { __call = help_call }) -- luacheck: ignore 113
> >
> > local screen_id = 1;
> >
> > -local function tutorial_call(table, action)
> > +local function tutorial_call(table, action) -- luacheck: ignore 212
> > if action == 'start' then
> > screen_id = 1;
> > elseif action == 'next' or action == 'more' then
> > @@ -46,9 +46,9 @@ local function tutorial_call(table, action)
> > return (res:gsub('<version>', DOCUMENTATION_VERSION))
> > end
> >
> > -setmetatable(tutorial, { __call = tutorial_call })
> > +setmetatable(tutorial, { __call = tutorial_call }) -- luacheck: ignore 113
> >
> > return {
> > - help = help;
> > - tutorial = tutorial;
> > + help = help; -- luacheck: ignore 113
> > + tutorial = tutorial; -- luacheck: ignore 113
> > }
> > diff --git a/src/lua/msgpackffi.lua b/src/lua/msgpackffi.lua
> > index f775f2d41..471b72c84 100644
> > --- a/src/lua/msgpackffi.lua
> > +++ b/src/lua/msgpackffi.lua
> > @@ -291,7 +291,7 @@ local function encode(obj)
> > return r
> > end
> >
> > -local function encode_ibuf(obj, ibuf)
> > +local function encode_ibuf(obj, ibuf) -- luacheck: ignore 211
>
> 9. This function is just unused.
>
> > encode_r(ibuf, obj, 0)
> > end
> >
> > @@ -320,7 +320,7 @@ local decode_r
> >
> > -- See similar constants in utils.cc
> > local DBL_INT_MAX = 1e14 - 1
> > -local DBL_INT_MIN = -1e14 + 1
> > +local DBL_INT_MIN = -1e14 + 1 -- luacheck: ignore 211
>
> 10. Also really unused, and can be removed.
Done by applying your patch.
> >
> > local function decode_u8(data)
> > local num = ffi.cast(uint8_ptr_t, data[0])[0]
> > @@ -465,8 +465,7 @@ end
> > local function decode_array(data, size)
> > assert (type(size) == "number")
> > local arr = {}
> > - local i
> > - for i=1,size,1 do
> > + for i=1,size,1 do -- luacheck: ignore 213
>
> 11. Seems like you decided to use '_' to ignore a loop
> variable in all the similar places above and below.
> Why didn't you apply it here?
Perhaps it was a first solution and then decided to use '_' :)
> > table.insert(arr, decode_r(data))
> > end
> > diff --git a/src/lua/socket.lua b/src/lua/socket.lua
> > index a334ad45b..c5691a425 100644
> > --- a/src/lua/socket.lua
> > +++ b/src/lua/socket.lua
> > @@ -1311,7 +1311,7 @@ local function lsocket_tcp_getpeername(self)
> > return peer.host, tostring(peer.port), peer.family:match("AF_(.*)"):lower()
> > end
> >
> > -local function lsocket_tcp_settimeout(self, value, mode)
> > +local function lsocket_tcp_settimeout(self, value, mode) -- luacheck: ignore 212
>
> 12. Mode is the last argument and can be removed.
Done by applying your patch.
> > check_socket(self)
> > self.timeout = value
> > -- mode is effectively ignored
> > diff --git a/src/lua/swim.lua b/src/lua/swim.lua
> > index 01eeb7eae..7fd2e8250 100644
> > --- a/src/lua/swim.lua
> > +++ b/src/lua/swim.lua
> > @@ -1,5 +1,5 @@
> > local ffi = require('ffi')
> > -local uuid = require('uuid')
> > +local uuid_ = require('uuid')
>
> 13. Yeah, this line is basically the reason I decided to review
> the patch. I deliberately shadowed this global name in some
> functions, because the name is good, the library is not used
> in these functions, and this is our convention - we don't call
> a library 'name + _'. For example, we don't call them 'fiber_',
> or 'ffi_', or 'console_', and so on. Is it possible to ignore
> this error?
Sure, renamed uuid_ back and supressed warning in a luacheck config.
> I would better expect from luacheck some real help. Like usage
> of undeclared variables, duplicate keys in declared tables,
> unused functions. Complaints about other staff just make the
> code dirty with all these 'luacheck: ignore', IMO.
Agree with you, some categories of warnings are annoying. But some
warnings complains about inaccurate coding and fixing them make code
clear. See my summary about using luacheck in updated patchset.
> Most of the warning fixes in this patch made the code worse.
> For example, using '_' as a variable name sometimes makes it
> harder to understand what is in that value so as it is ignored
> and why.
I have fixed a number of warnings like 'unused index variables in a
loop' in updated patchset and did my best to keep code understandable.
Anyway please look on updated version.
> I think we should have a config where the useless or harmful
> warnings are ignored. It seems luacheck supports configuration
> stored in a special file.
Did it and added .luacheckrc.
> > local buffer = require('buffer')
> > local msgpack = require('msgpack')
> > local crypto = require('crypto')
> > diff --git a/src/lua/tap.lua b/src/lua/tap.lua
> > index 94b080d5a..04497386e 100644
> > --- a/src/lua/tap.lua
> > +++ b/src/lua/tap.lua
> > @@ -53,7 +53,7 @@ local function ok(test, cond, message, extra)
> > io.write(string.format("not ok - %s\n", message))
> > extra = extra or {}
> > if test.trace then
> > - local frame = debug.getinfo(3, "Sl")
> > + debug.getinfo(3, "Sl")
>
> 14. Why is that call needed, if its result is not used?
AFAIR it has been fixed by your patch.
> > extra.trace = traceback()
> > extra.filename = extra.trace[#extra.trace].filename
> > extra.line = extra.trace[#extra.trace].line
> Commit on top of your branch:
>
<snipped>
Sergey
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua
2020-04-06 9:33 ` Sergey Bronnikov
@ 2020-04-07 15:39 ` Sergey Bronnikov
0 siblings, 0 replies; 11+ messages in thread
From: Sergey Bronnikov @ 2020-04-07 15:39 UTC (permalink / raw)
To: Oleg Babin, tarantool-patches
Oleg,
On 12:33 Mon 06 Apr , Sergey Bronnikov wrote:
> > On 03/04/2020 12:39, Sergey Bronnikov wrote:
> > > diff --git a/src/lua/tap.lua b/src/lua/tap.lua
> > > index 94b080d5a..04497386e 100644
> > > --- a/src/lua/tap.lua
> > > +++ b/src/lua/tap.lua
> > > @@ -53,7 +53,7 @@ local function ok(test, cond, message, extra)
> > > io.write(string.format("not ok - %s\n", message))
> > > extra = extra or {}
> > > if test.trace then
> > > - local frame = debug.getinfo(3, "Sl")
> > > + debug.getinfo(3, "Sl")
> >
> > I think debug.getinfo() could be completely removed. It doesn't change any
> > state it only returns some debug information that is completely unused.
>
> This patch is about fixing warnings produced by luacheck,
> Proposed change doesn't relate to Lua static analysis, so I suggest
> to make it in a separate patch.
I was wrong, 'frame' is unused here and can be removed, Vlad Sh. also
reminded me about it.
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2020-04-07 15:39 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-03 9:39 [Tarantool-patches] [PATCH] Fix luacheck warnings in src/lua/*.lua Sergey Bronnikov
2020-04-03 10:13 ` lvasiliev
2020-04-03 11:03 ` Sergey Bronnikov
2020-04-03 14:21 ` Oleg Babin
2020-04-06 9:33 ` Sergey Bronnikov
2020-04-07 15:39 ` Sergey Bronnikov
2020-04-03 20:39 ` Vladislav Shpilevoy
2020-04-03 22:39 ` Vladislav Shpilevoy
2020-04-07 15:35 ` Sergey Bronnikov
2020-04-04 9:34 ` Igor Munkin
2020-04-07 15:15 ` Sergey Bronnikov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox