Tarantool development patches archive
 help / color / mirror / Atom feed
* [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck
@ 2020-06-04  8:39 sergeyb
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 1/6] Add initial luacheck config sergeyb
                   ` (10 more replies)
  0 siblings, 11 replies; 41+ messages in thread
From: sergeyb @ 2020-06-04  8:39 UTC (permalink / raw)
  To: tarantool-patches, imun, v.shpilevoy; +Cc: alexander.turenko

From: Sergey Bronnikov <sergeyb@tarantool.org>

Sergey Bronnikov (6):
  Add initial luacheck config
  build: enable 'make luacheck' target
  gitlab-ci: enable static analysis with luacheck
  Fix luacheck warnings in extra/dist/
  Fix luacheck warnings in src/lua/
  Fix luacheck warnings in src/box/lua/

 .gitlab-ci.yml                  | 11 +++++++
 .luacheckrc                     | 55 +++++++++++++++++++++++++++++++++
 .travis.mk                      | 23 +++++++++++++-
 CMakeLists.txt                  | 11 +++++++
 extra/dist/tarantoolctl.in      | 25 +++++----------
 src/box/lua/console.lua         | 10 +++---
 src/box/lua/feedback_daemon.lua |  2 +-
 src/box/lua/key_def.lua         |  2 +-
 src/box/lua/load_cfg.lua        | 11 +++----
 src/box/lua/net_box.lua         | 52 ++++++++++++-------------------
 src/box/lua/schema.lua          | 44 +++++++++++++-------------
 src/box/lua/tuple.lua           |  8 ++---
 src/box/lua/upgrade.lua         | 19 ++++++------
 src/lua/argparse.lua            |  3 +-
 src/lua/buffer.lua              |  4 +--
 src/lua/clock.lua               |  2 +-
 src/lua/crypto.lua              |  4 +--
 src/lua/csv.lua                 |  5 ++-
 src/lua/digest.lua              |  2 +-
 src/lua/env.lua                 |  2 +-
 src/lua/fiber.lua               |  4 +--
 src/lua/fio.lua                 | 30 +++++++++---------
 src/lua/help.lua                |  7 ++---
 src/lua/httpc.lua               |  3 --
 src/lua/init.lua                |  4 +--
 src/lua/msgpackffi.lua          | 22 ++++++-------
 src/lua/socket.lua              | 16 +++++-----
 src/lua/string.lua              |  1 -
 src/lua/swim.lua                |  2 +-
 src/lua/tap.lua                 |  4 ---
 src/lua/trigger.lua             |  3 --
 31 files changed, 220 insertions(+), 171 deletions(-)
 create mode 100644 .luacheckrc

-- 
2.23.0

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [Tarantool-patches] [PATCH 1/6] Add initial luacheck config
  2020-06-04  8:39 [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck sergeyb
@ 2020-06-04  8:39 ` sergeyb
  2020-06-06 18:02   ` Vladislav Shpilevoy
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 2/6] build: enable 'make luacheck' target sergeyb
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 41+ messages in thread
From: sergeyb @ 2020-06-04  8:39 UTC (permalink / raw)
  To: tarantool-patches, imun, v.shpilevoy; +Cc: alexander.turenko

From: Sergey Bronnikov <sergeyb@tarantool.org>

config includes all files with Lua source code except:
- third_party repositories
- directories with diff-based tests

How-to check:

$ luacheck --codes --config .luacheckrc .

Part of #4681

Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
---
 .luacheckrc | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
 create mode 100644 .luacheckrc

diff --git a/.luacheckrc b/.luacheckrc
new file mode 100644
index 000000000..e6edf8617
--- /dev/null
+++ b/.luacheckrc
@@ -0,0 +1,16 @@
+std = "luajit"
+
+include_files = {
+    "**/*.lua",
+}
+
+exclude_files = {
+    "build/**/*.lua",
+    "extra/**/*.lua",
+    "src/**/*.lua",
+    "test-run/**/*.lua",
+    "test/**/*.lua",
+    "third_party/**/*.lua",
+    ".rocks/**/*.lua",
+    ".git/**/*.lua",
+}
-- 
2.23.0

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [Tarantool-patches] [PATCH 2/6] build: enable 'make luacheck' target
  2020-06-04  8:39 [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck sergeyb
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 1/6] Add initial luacheck config sergeyb
@ 2020-06-04  8:39 ` sergeyb
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 3/6] gitlab-ci: enable static analysis with luacheck sergeyb
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 41+ messages in thread
From: sergeyb @ 2020-06-04  8:39 UTC (permalink / raw)
  To: tarantool-patches, imun, v.shpilevoy; +Cc: alexander.turenko

From: Sergey Bronnikov <sergeyb@tarantool.org>

Part of #4681

Reviewed-by: Igor Munkin <imun@tarantool.org>
---
 CMakeLists.txt | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1d80b6806..13ff7ed84 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,6 +23,7 @@ find_program(CAT cat)
 find_program(GIT git)
 find_program(LD ld)
 find_program(CTAGS ctags)
+find_program(LUACHECK luacheck ENV PATH)
 
 # Define PACKAGE macro in tarantool/config.h
 set(PACKAGE "Tarantool" CACHE STRING "Package name.")
@@ -151,6 +152,16 @@ add_custom_target(tags COMMAND ${CTAGS} -R ${tagsExclude} -f tags
     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
 add_custom_target(ctags DEPENDS tags)
 
+#
+# Enable 'make luacheck' target.
+#
+
+add_custom_target(luacheck)
+add_custom_command(TARGET luacheck
+    COMMAND ${LUACHECK} --codes --config "${PROJECT_SOURCE_DIR}/.luacheckrc" "${PROJECT_SOURCE_DIR}"
+    COMMENT "Perform static analysis of Lua code"
+)
+
 #
 # Get version
 #
-- 
2.23.0

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [Tarantool-patches] [PATCH 3/6] gitlab-ci: enable static analysis with luacheck
  2020-06-04  8:39 [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck sergeyb
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 1/6] Add initial luacheck config sergeyb
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 2/6] build: enable 'make luacheck' target sergeyb
@ 2020-06-04  8:39 ` sergeyb
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 4/6] Fix luacheck warnings in extra/dist/ sergeyb
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 41+ messages in thread
From: sergeyb @ 2020-06-04  8:39 UTC (permalink / raw)
  To: tarantool-patches, imun, v.shpilevoy; +Cc: alexander.turenko

From: Sergey Bronnikov <sergeyb@tarantool.org>

Part of #4681
---
 .gitlab-ci.yml | 11 +++++++++++
 .travis.mk     | 23 ++++++++++++++++++++++-
 2 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7705631dd..041653dae 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,4 +1,5 @@
 stages:
+  - static_analysis
   - test
   - perf
   - cleanup
@@ -107,6 +108,16 @@ variables:
    script:
      - ${GITLAB_MAKE} perf_cleanup
 
+# Static Analysis
+
+luacheck:
+  <<: *docker_test_definition
+  stage: static_analysis
+  tags:
+    - deploy_test
+  script:
+    - ${GITLAB_MAKE} test_debian_docker_luacheck
+
 # Tests
 
 release:
diff --git a/.travis.mk b/.travis.mk
index 063537f25..aaceaab34 100644
--- a/.travis.mk
+++ b/.travis.mk
@@ -3,9 +3,11 @@
 #
 
 DOCKER_IMAGE?=packpack/packpack:debian-stretch
+DOCKER_IMAGE_TARANTOOL="registry.gitlab.com/tarantool/tarantool/testing/debian-stretch:latest"
 TEST_RUN_EXTRA_PARAMS?=
 MAX_FILES?=65534
 MAX_PROC?=2500
+OOS_SRC_PATH="/source"
 
 all: package
 
@@ -76,8 +78,10 @@ deps_buster_clang_8: deps_debian
 
 # Release
 
-build_debian:
+configure_debian:
 	cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON ${CMAKE_EXTRA_PARAMS}
+
+build_debian: configure_debian
 	make -j
 
 test_debian_no_deps: build_debian
@@ -146,6 +150,23 @@ test_static_build: deps_debian_static
 test_static_docker_build:
 	docker build --no-cache --network=host --build-arg RUN_TESTS=ON -f Dockerfile.staticbuild .
 
+# ###################
+# Static Analysis
+# ###################
+
+test_debian_docker_luacheck:
+	docker run -w ${OOS_SRC_PATH} -v ${PWD}:${OOS_SRC_PATH} --privileged \
+		--cap-add=sys_nice --network=host -i ${DOCKER_IMAGE_TARANTOOL} \
+		make -f .travis.mk test_debian_luacheck
+
+test_debian_install_luacheck:
+	apt update -y
+	apt install -y lua5.1 luarocks
+	luarocks install luacheck
+
+test_debian_luacheck: test_debian_install_luacheck configure_debian
+	make luacheck
+
 #######
 # OSX #
 #######
-- 
2.23.0

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [Tarantool-patches] [PATCH 4/6] Fix luacheck warnings in extra/dist/
  2020-06-04  8:39 [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck sergeyb
                   ` (2 preceding siblings ...)
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 3/6] gitlab-ci: enable static analysis with luacheck sergeyb
@ 2020-06-04  8:39 ` sergeyb
  2020-06-06 18:02   ` Vladislav Shpilevoy
  2020-06-19 23:15   ` Vladislav Shpilevoy
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/ sergeyb
                   ` (6 subsequent siblings)
  10 siblings, 2 replies; 41+ messages in thread
From: sergeyb @ 2020-06-04  8:39 UTC (permalink / raw)
  To: tarantool-patches, imun, v.shpilevoy; +Cc: alexander.turenko

From: Sergey Bronnikov <sergeyb@tarantool.org>

Part of #4681

Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Reviewed-by: Igor Munkin <imun@tarantool.org>

Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Co-authored-by: Igor Munkin <imun@tarantool.org>
---
 .luacheckrc                | 15 ++++++++++++++-
 extra/dist/tarantoolctl.in | 25 +++++++------------------
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/.luacheckrc b/.luacheckrc
index e6edf8617..b917eb927 100644
--- a/.luacheckrc
+++ b/.luacheckrc
@@ -1,12 +1,19 @@
 std = "luajit"
+globals = {"box", "_TARANTOOL"}
+ignore = {
+    "212/self", -- Unused argument <self>.
+    "411",      -- Redefining a local variable.
+    "431",      -- Shadowing an upvalue.
+}
+
 
 include_files = {
     "**/*.lua",
+    "extra/dist/tarantoolctl.in",
 }
 
 exclude_files = {
     "build/**/*.lua",
-    "extra/**/*.lua",
     "src/**/*.lua",
     "test-run/**/*.lua",
     "test/**/*.lua",
@@ -14,3 +21,9 @@ exclude_files = {
     ".rocks/**/*.lua",
     ".git/**/*.lua",
 }
+
+files["extra/dist/tarantoolctl.in"] = {
+    ignore = {
+        "122", -- https://github.com/tarantool/tarantool/issues/4929
+    },
+}
diff --git a/extra/dist/tarantoolctl.in b/extra/dist/tarantoolctl.in
index a98c61b52..90caf58ad 100755
--- a/extra/dist/tarantoolctl.in
+++ b/extra/dist/tarantoolctl.in
@@ -63,13 +63,12 @@ end
 
 local function check_user_level()
     local uid = os.getenv('UID')
-    local udir = nil
     if uid == 0 or os.getenv("NOTIFY_SOCKET") then
         return nil
     end
     -- local dir configuration
     local pwd = os.getenv('PWD')
-    udir = pwd and pwd .. '/.tarantoolctl'
+    local udir = pwd and pwd .. '/.tarantoolctl'
     udir = udir and fio.stat(udir) and udir or nil
     -- or home dir configuration
     local homedir = os.getenv('HOME')
@@ -789,7 +788,7 @@ end
 local function eval()
     local console_sock_path = uri.parse(console_sock).service
     local filename = arg[3]
-    local code = nil
+    local code
     if filename == nil then
         if stdin_isatty() then
             log.error("Usage:")
@@ -847,7 +846,6 @@ end
 -- xlog / snap file, so even when it stops on LSN >= @a opts.to on
 -- a current file a next file will be processed.
 local function filter_xlog(gen, param, state, opts, cb)
-    local spaces = opts.spaces
     local from, to, spaces = opts.from, opts.to, opts.space
     local show_system, replicas = opts['show-system'], opts.replica
 
@@ -861,7 +859,7 @@ local function filter_xlog(gen, param, state, opts, cb)
         elseif (lsn < from) or (lsn >= to) or
            (not spaces and sid and sid < 512 and not show_system) or
            (spaces and (sid == nil or not find_in_list(sid, spaces))) or
-           (replicas and not find_in_list(rid, replicas)) then
+           (replicas and not find_in_list(rid, replicas)) then -- luacheck: ignore
             -- pass this tuple
         else
             cb(record)
@@ -874,7 +872,7 @@ local function cat()
     local cat_format = opts.format
     local format_cb = cat_formats[cat_format]
     local is_printed = false
-    for id, file in ipairs(positional_arguments) do
+    for _, file in ipairs(positional_arguments) do
         log.error("Processing file '%s'", file)
         local gen, param, state = xlog.pairs(file)
         filter_xlog(gen, param, state, opts, function(record)
@@ -900,7 +898,7 @@ local function play()
     if not remote:wait_connected() then
         error(("Error while connecting to host '%s'"):format(uri))
     end
-    for id, file in ipairs(positional_arguments) do
+    for _, file in ipairs(positional_arguments) do
         log.info(("Processing file '%s'"):format(file))
         local gen, param, state = xlog.pairs(file)
         filter_xlog(gen, param, state, opts, function(record)
@@ -921,22 +919,13 @@ local function play()
     remote:close()
 end
 
-local function find_arg(name_arg)
-    for i, key in ipairs(arg) do
-        if key:find(name_arg) ~= nil then
-            return key
-        end
-    end
-    return nil
-end
-
 local function rocks()
     local cfg = require("luarocks.core.cfg")
     cfg.init()
     local util = require("luarocks.util")
     local command_line = require("luarocks.cmd")
     -- Tweak help messages
-    util.see_help = function(command, program)
+    util.see_help = function(command, program) -- luacheck: no unused args
         -- TODO: print extended help message here
         return "See Tarantool documentation for help."
     end
@@ -1215,7 +1204,7 @@ local function usage_command(name, cmd)
     if type(header) == 'string' then
         header = { header }
     end
-    for no, line in ipairs(header) do
+    for _, line in ipairs(header) do
         log.error("    " .. line, name)
     end
 end
-- 
2.23.0

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/
  2020-06-04  8:39 [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck sergeyb
                   ` (3 preceding siblings ...)
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 4/6] Fix luacheck warnings in extra/dist/ sergeyb
@ 2020-06-04  8:39 ` sergeyb
  2020-06-06 18:03   ` Vladislav Shpilevoy
                     ` (2 more replies)
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 6/6] Fix luacheck warnings in src/box/lua/ sergeyb
                   ` (5 subsequent siblings)
  10 siblings, 3 replies; 41+ messages in thread
From: sergeyb @ 2020-06-04  8:39 UTC (permalink / raw)
  To: tarantool-patches, imun, v.shpilevoy; +Cc: alexander.turenko

From: Sergey Bronnikov <sergeyb@tarantool.org>

Part of #4681

Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Reviewed-by: Igor Munkin <imun@tarantool.org>

Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Co-authored-by: Igor Munkin <imun@tarantool.org>
---
 .luacheckrc            | 28 ++++++++++++++++++++++++----
 src/lua/argparse.lua   |  3 ++-
 src/lua/buffer.lua     |  4 ++--
 src/lua/clock.lua      |  2 +-
 src/lua/crypto.lua     |  4 ++--
 src/lua/csv.lua        |  5 ++---
 src/lua/digest.lua     |  2 +-
 src/lua/env.lua        |  2 +-
 src/lua/fiber.lua      |  4 ++--
 src/lua/fio.lua        | 30 ++++++++++++++----------------
 src/lua/help.lua       |  7 ++-----
 src/lua/httpc.lua      |  3 ---
 src/lua/init.lua       |  4 ++--
 src/lua/msgpackffi.lua | 22 +++++++++-------------
 src/lua/socket.lua     | 16 ++++++++--------
 src/lua/string.lua     |  1 -
 src/lua/swim.lua       |  2 +-
 src/lua/tap.lua        |  4 ----
 src/lua/trigger.lua    |  3 ---
 19 files changed, 73 insertions(+), 73 deletions(-)

diff --git a/.luacheckrc b/.luacheckrc
index b917eb927..fb8b9dfb3 100644
--- a/.luacheckrc
+++ b/.luacheckrc
@@ -1,9 +1,14 @@
 std = "luajit"
 globals = {"box", "_TARANTOOL"}
 ignore = {
-    "212/self", -- Unused argument <self>.
-    "411",      -- Redefining a local variable.
-    "431",      -- Shadowing an upvalue.
+    "143/debug",  -- Accessing an undefined field of a global variable <debug>.
+    "143/string", -- Accessing an undefined field of a global variable <string>.
+    "143/table",  -- Accessing an undefined field of a global variable <table>.
+    "212/self",   -- Unused argument <self>.
+    "411",        -- Redefining a local variable.
+    "421",        -- Shadowing a local variable.
+    "431",        -- Shadowing an upvalue.
+    "432",        -- Shadowing an upvalue argument.
 }
 
 
@@ -14,7 +19,7 @@ include_files = {
 
 exclude_files = {
     "build/**/*.lua",
-    "src/**/*.lua",
+    "src/box/**/*.lua",
     "test-run/**/*.lua",
     "test/**/*.lua",
     "third_party/**/*.lua",
@@ -27,3 +32,18 @@ files["extra/dist/tarantoolctl.in"] = {
         "122", -- https://github.com/tarantool/tarantool/issues/4929
     },
 }
+files["src/lua/help.lua"] = {
+    globals = {"help", "tutorial"}, -- globals defined for interactive mode.
+}
+files["src/lua/init.lua"] = {
+    globals = {"dostring"}, -- miscellaneous global function definition.
+    ignore = {
+        "122/os",      -- set tarantool specific behaviour for os.exit.
+        "142/package", -- add custom functions into Lua package namespace.
+    },
+}
+files["src/lua/swim.lua"] = {
+    ignore = {
+        "212/m", -- respect swim module code style.
+    },
+}
diff --git a/src/lua/argparse.lua b/src/lua/argparse.lua
index faa0ae130..6c8f10fc1 100644
--- a/src/lua/argparse.lua
+++ b/src/lua/argparse.lua
@@ -91,7 +91,8 @@ local function convert_parameter(name, convert_from, convert_to)
 end
 
 local function parameters_parse(t_in, options)
-    local t_out, t_in = {}, t_in or {}
+    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
diff --git a/src/lua/buffer.lua b/src/lua/buffer.lua
index 9aac82b39..00846bb20 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(self)
     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..f31708e29 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',
@@ -428,7 +428,7 @@ local public_methods = {
 }
 
 local module_mt = {
-    __serialize = function(s)
+    __serialize = function(self)
         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..7f1aea8d0 100644
--- a/src/lua/digest.lua
+++ b/src/lua/digest.lua
@@ -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..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
+    local rv
     if value ~= nil then
         rv = ffi.C.setenv(key, value, 1)
     else
diff --git a/src/lua/fiber.lua b/src/lua/fiber.lua
index 89c17f63d..b14117714 100644
--- a/src/lua/fiber.lua
+++ b/src/lua/fiber.lua
@@ -39,8 +39,8 @@ local stall = fiber.stall
 fiber.stall = nil
 
 local worker_next_task = nil
-local worker_last_task = nil
-local worker_fiber = nil
+local worker_last_task
+local worker_fiber
 
 --
 -- Worker is a singleton fiber for not urgent delayed execution of
diff --git a/src/lua/fio.lua b/src/lua/fio.lua
index 83fddaa0a..b31311b7b 100644
--- a/src/lua/fio.lua
+++ b/src/lua/fio.lua
@@ -329,7 +329,7 @@ fio.abspath = function(path)
         error("Usage: fio.abspath(path)")
     end
     path = path
-    local joined_path = ''
+    local joined_path
     local path_tab = {}
     if string.sub(path, 1, 1) == '/' then
         joined_path = path
@@ -366,7 +366,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
@@ -378,15 +378,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,
@@ -407,27 +407,26 @@ fio.rmtree = function(path)
     if type(path) ~= 'string' then
         error("Usage: fio.rmtree(path)")
     end
-    local status, err
     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
             end
         end
     end
-    status, err = fio.rmdir(path)
+    local _, err = fio.rmdir(path)
     if err ~= nil then
         return false, string.format("failed to remove %s: %s", path, err)
     end
@@ -453,7 +452,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)
@@ -467,22 +465,22 @@ fio.copytree = function(from, to)
     end
 
     -- create tree of destination
-    status, reason = fio.mktree(to)
+    local _, reason = fio.mktree(to)
     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)
         if st and st:is_dir() then
-            status, reason = fio.copytree(ffrom, fto)
+            _, reason = fio.copytree(ffrom, fto)
             if reason ~= nil then
                 return false, reason
             end
         end
         if st:is_reg() then
-            status, reason = fio.copyfile(ffrom, fto)
+            _, reason = fio.copyfile(ffrom, fto)
             if reason ~= nil then
                 return false, reason
             end
@@ -492,7 +490,7 @@ fio.copytree = function(from, to)
             if reason ~= nil then
                 return false, reason
             end
-            status, reason = fio.symlink(link_to, fto)
+            _, reason = fio.symlink(link_to, fto)
             if reason ~= nil then
                 return false, "can't create symlink in place of existing file "..fto
             end
diff --git a/src/lua/help.lua b/src/lua/help.lua
index 54ff1b5d0..4f024832d 100644
--- a/src/lua/help.lua
+++ b/src/lua/help.lua
@@ -11,10 +11,7 @@ help = { doc.help }
 tutorial = {}
 tutorial[1] = help[1]
 
-local help_function_data = {};
-local help_object_data = {}
-
-local function help_call(table, param)
+local function help_call()
     return help
 end
 
@@ -22,7 +19,7 @@ setmetatable(help, { __call = help_call })
 
 local screen_id = 1;
 
-local function tutorial_call(table, action)
+local function tutorial_call(self, action)
     if action == 'start' then
         screen_id = 1;
     elseif action == 'next' or action == 'more' then
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..aea7a7491 100644
--- a/src/lua/init.lua
+++ b/src/lua/init.lua
@@ -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
 
diff --git a/src/lua/msgpackffi.lua b/src/lua/msgpackffi.lua
index f01ffaef0..cb7ad5b88 100644
--- a/src/lua/msgpackffi.lua
+++ b/src/lua/msgpackffi.lua
@@ -302,10 +302,6 @@ local function encode(obj)
     return r
 end
 
-local function encode_ibuf(obj, ibuf)
-    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)
@@ -332,7 +328,6 @@ local decode_r
 
 -- See similar constants in utils.cc
 local DBL_INT_MAX = 1e14 - 1
-local DBL_INT_MIN = -1e14 + 1
 
 local function decode_u8(data)
     local num = ffi.cast(uint8_ptr_t, data[0])[0]
@@ -477,8 +472,7 @@ end
 local function decode_array(data, size)
     assert (type(size) == "number")
     local arr = {}
-    local i
-    for i=1,size,1 do
+    for _ = 1, size do
         table.insert(arr, decode_r(data))
     end
     if not msgpack.cfg.decode_save_metatables then
@@ -490,8 +484,7 @@ end
 local function decode_map(data, size)
     assert (type(size) == "number")
     local map = {}
-    local i
-    for i=1,size,1 do
+    for _ = 1, size do
         local key = decode_r(data);
         local val = decode_r(data);
         map[key] = val
@@ -504,11 +497,15 @@ end
 
 local ext_decoder = {
     -- MP_UNKNOWN_EXTENSION
-    [0] = function(data, len) error("unsupported extension type") end,
+    [0] = function(data, len) error("unsupported extension type") end, -- luacheck: no unused args
     -- MP_DECIMAL
     [1] = function(data, len) local num = ffi.new("decimal_t") builtin.decimal_unpack(data, len, num) return num end,
     -- MP_UUID
-    [2] = function(data, len) local uuid = ffi.new("struct tt_uuid") builtin.uuid_unpack(data, len, uuid) return uuid end,
+    [2] = function(data, len)
+        local uuid = ffi.new("struct tt_uuid")
+        builtin.uuid_unpack(data, len, uuid)
+        return uuid
+    end,
 }
 
 local function decode_ext(data)
@@ -516,7 +513,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
@@ -603,7 +599,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 bbdef01e3..2a2c7a32c 100644
--- a/src/lua/socket.lua
+++ b/src/lua/socket.lua
@@ -177,7 +177,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
@@ -665,7 +665,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
@@ -1044,7 +1044,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' })
@@ -1052,7 +1052,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)
@@ -1319,7 +1319,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: no unused args
     check_socket(self)
     self.timeout = value
     -- mode is effectively ignored
@@ -1475,7 +1475,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)
@@ -1543,7 +1543,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)
@@ -1567,7 +1567,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(s) return backlog end -- luacheck: no unused args
     local s = tcp_server_bind(host, port, prepare)
     if not s then
         return nil, boxerrno.strerror()
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 0859915c9..cdf9d7df0 100644
--- a/src/lua/swim.lua
+++ b/src/lua/swim.lua
@@ -371,7 +371,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
diff --git a/src/lua/tap.lua b/src/lua/tap.lua
index 94b080d5a..346724d84 100644
--- a/src/lua/tap.lua
+++ b/src/lua/tap.lua
@@ -53,7 +53,6 @@ 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")
         extra.trace = traceback()
         extra.filename = extra.trace[#extra.trace].filename
         extra.line = extra.trace[#extra.trace].line
@@ -76,9 +75,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
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

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [Tarantool-patches] [PATCH 6/6] Fix luacheck warnings in src/box/lua/
  2020-06-04  8:39 [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck sergeyb
                   ` (4 preceding siblings ...)
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/ sergeyb
@ 2020-06-04  8:39 ` sergeyb
  2020-06-06 18:03   ` Vladislav Shpilevoy
                     ` (2 more replies)
  2020-06-04  8:43 ` [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck Sergey Bronnikov
                   ` (4 subsequent siblings)
  10 siblings, 3 replies; 41+ messages in thread
From: sergeyb @ 2020-06-04  8:39 UTC (permalink / raw)
  To: tarantool-patches, imun, v.shpilevoy; +Cc: alexander.turenko

From: Sergey Bronnikov <sergeyb@tarantool.org>

Part of #4681

Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
---
 .luacheckrc                     | 10 +++++--
 src/box/lua/console.lua         | 10 +++----
 src/box/lua/feedback_daemon.lua |  2 +-
 src/box/lua/key_def.lua         |  2 +-
 src/box/lua/load_cfg.lua        | 11 ++++---
 src/box/lua/net_box.lua         | 52 +++++++++++++--------------------
 src/box/lua/schema.lua          | 44 +++++++++++++---------------
 src/box/lua/tuple.lua           |  8 ++---
 src/box/lua/upgrade.lua         | 19 ++++++------
 9 files changed, 73 insertions(+), 85 deletions(-)

diff --git a/.luacheckrc b/.luacheckrc
index fb8b9dfb3..9fd017629 100644
--- a/.luacheckrc
+++ b/.luacheckrc
@@ -1,11 +1,12 @@
 std = "luajit"
-globals = {"box", "_TARANTOOL"}
+globals = {"box", "_TARANTOOL", "tonumber64"}
 ignore = {
     "143/debug",  -- Accessing an undefined field of a global variable <debug>.
     "143/string", -- Accessing an undefined field of a global variable <string>.
     "143/table",  -- Accessing an undefined field of a global variable <table>.
     "212/self",   -- Unused argument <self>.
     "411",        -- Redefining a local variable.
+    "412",        -- Redefining an argument.
     "421",        -- Shadowing a local variable.
     "431",        -- Shadowing an upvalue.
     "432",        -- Shadowing an upvalue argument.
@@ -19,7 +20,7 @@ include_files = {
 
 exclude_files = {
     "build/**/*.lua",
-    "src/box/**/*.lua",
+    "src/box/lua/serpent.lua", -- third-party source code
     "test-run/**/*.lua",
     "test/**/*.lua",
     "third_party/**/*.lua",
@@ -47,3 +48,8 @@ files["src/lua/swim.lua"] = {
         "212/m", -- respect swim module code style.
     },
 }
+files["src/box/lua/console.lua"] = {
+    ignore = {
+        "212", -- https://github.com/tarantool/tarantool/issues/5032
+    }
+}
diff --git a/src/box/lua/console.lua b/src/box/lua/console.lua
index 6ea27a393..5743d2481 100644
--- a/src/box/lua/console.lua
+++ b/src/box/lua/console.lua
@@ -17,7 +17,6 @@ ffi.cdef[[
     console_set_output_format(enum output_format output_format);
 ]]
 
-local serpent = require('serpent')
 local internal = require('console')
 local session_internal = require('box.internal.session')
 local fiber = require('fiber')
@@ -28,6 +27,7 @@ local urilib = require('uri')
 local yaml = require('yaml')
 local net_box = require('net.box')
 local box_internal = require('box.internal')
+local help = require('help').help
 
 local PUSH_TAG_HANDLE = '!push!'
 
@@ -313,7 +313,7 @@ local function set_param(storage, func, param, value)
 end
 
 local function help_wrapper(storage)
-    return format(true, help()) -- defined in help.lua
+    return format(true, help())
 end
 
 local function quit(storage)
@@ -455,7 +455,7 @@ local text_connection_mt = {
                 -- Make sure it is exactly "\set output" command.
                 if operators[items[1]] == set_param and
                     param_handlers[items[2]] == set_output then
-                    local err, fmt, opts = parse_output(items[3])
+                    local err, fmt = parse_output(items[3])
                     if not err then
                         self.fmt = fmt
                         self.eos = output_eos[fmt]
@@ -479,7 +479,7 @@ local text_connection_mt = {
                     break
                 end
                 if fmt == "yaml" then
-                    local handle, prefix = yaml.decode(rc, {tag_only = true})
+                    local handle = yaml.decode(rc, {tag_only = true})
                     if not handle then
                         -- Can not fail - tags are encoded with no
                         -- user participation and are correct always.
@@ -859,7 +859,7 @@ local function listen(uri)
         host = u.host
         port = u.service or 3313
     end
-    local s, addr = socket.tcp_server(host, port, { handler = client_handler,
+    local s = socket.tcp_server(host, port, { handler = client_handler,
         name = 'console'})
     if not s then
         error(string.format('failed to create server %s:%s: %s',
diff --git a/src/box/lua/feedback_daemon.lua b/src/box/lua/feedback_daemon.lua
index 95130d696..db74f558b 100644
--- a/src/box/lua/feedback_daemon.lua
+++ b/src/box/lua/feedback_daemon.lua
@@ -61,7 +61,7 @@ local function guard_loop(self)
             self.fiber = fiber.create(feedback_loop, self)
             log.verbose("%s restarted", PREFIX)
         end
-        local st, err = pcall(fiber.sleep, self.interval)
+        local st = pcall(fiber.sleep, self.interval)
         if not st then
             -- fiber was cancelled
             break
diff --git a/src/box/lua/key_def.lua b/src/box/lua/key_def.lua
index 586005709..97905eebf 100644
--- a/src/box/lua/key_def.lua
+++ b/src/box/lua/key_def.lua
@@ -15,5 +15,5 @@ ffi.metatype(key_def_t, {
     __index = function(self, key)
         return methods[key]
     end,
-    __tostring = function(key_def) return "<struct key_def &>" end,
+    __tostring = function(self) return "<struct key_def &>" end,
 })
diff --git a/src/box/lua/load_cfg.lua b/src/box/lua/load_cfg.lua
index 5d818addf..dd77f66bc 100644
--- a/src/box/lua/load_cfg.lua
+++ b/src/box/lua/load_cfg.lua
@@ -272,8 +272,8 @@ local dynamic_cfg = {
     sql_cache_size          = private.cfg_set_sql_cache_size,
 }
 
-ifdef_feedback = nil
-ifdef_feedback_set_params = nil
+ifdef_feedback = nil -- luacheck: ignore
+ifdef_feedback_set_params = nil -- luacheck: ignore
 
 --
 -- For some options it is important in which order they are set.
@@ -431,7 +431,7 @@ local function prepare_cfg(cfg, default_cfg, template_cfg, modify_cfg, prefix)
         elseif v == "" or v == nil then
             -- "" and NULL = ffi.cast('void *', 0) set option to default value
             v = default_cfg[k]
-        elseif template_cfg[k] == 'any' then
+        elseif template_cfg[k] == 'any' then -- luacheck: ignore
             -- any type is ok
         elseif type(template_cfg[k]) == 'table' then
             if type(v) ~= 'table' then
@@ -447,7 +447,6 @@ local function prepare_cfg(cfg, default_cfg, template_cfg, modify_cfg, prefix)
         else
             local good_types = string.gsub(template_cfg[k], ' ', '');
             if (string.find(',' .. good_types .. ',', ',' .. type(v) .. ',') == nil) then
-                good_types = string.gsub(good_types, ',', ', ');
                 box.error(box.error.CFG, readable_name, "should be one of types "..
                     template_cfg[k])
             end
@@ -544,7 +543,7 @@ for k, v in pairs(box) do
 end
 
 setmetatable(box, {
-    __index = function(table, index)
+    __index = function(table, index) -- luacheck: no unused args
         error(debug.traceback("Please call box.cfg{} first"))
         error("Please call box.cfg{} first")
      end
@@ -568,7 +567,7 @@ local function load_cfg(cfg)
     box_configured = nil
     box.cfg = setmetatable(cfg,
         {
-            __newindex = function(table, index)
+            __newindex = function(table, index) -- luacheck: no unused args
                 error('Attempt to modify a read-only table')
             end,
             __call = locked(reload_cfg),
diff --git a/src/box/lua/net_box.lua b/src/box/lua/net_box.lua
index 9560bfdd4..f71744014 100644
--- a/src/box/lua/net_box.lua
+++ b/src/box/lua/net_box.lua
@@ -39,10 +39,6 @@ local IPROTO_STATUS_KEY    = 0x00
 local IPROTO_ERRNO_MASK    = 0x7FFF
 local IPROTO_SYNC_KEY      = 0x01
 local IPROTO_SCHEMA_VERSION_KEY = 0x05
-local IPROTO_METADATA_KEY = 0x32
-local IPROTO_SQL_INFO_KEY = 0x42
-local SQL_INFO_ROW_COUNT_KEY = 0
-local IPROTO_FIELD_NAME_KEY = 0
 local IPROTO_DATA_KEY      = 0x30
 local IPROTO_ERROR_24      = 0x31
 local IPROTO_ERROR         = 0x52
@@ -68,18 +64,18 @@ error_unref(struct error *e);
 -- utility tables
 local is_final_state         = {closed = 1, error = 1}
 
-local function decode_nil(raw_data, raw_data_end)
+local function decode_nil(raw_data, raw_data_end) -- luacheck: no unused args
     return nil, raw_data_end
 end
 local function decode_data(raw_data)
     local response, raw_end = decode(raw_data)
     return response[IPROTO_DATA_KEY], raw_end
 end
-local function decode_tuple(raw_data, raw_data_end, format)
+local function decode_tuple(raw_data, raw_data_end, format) -- luacheck: no unused args
     local response, raw_end = internal.decode_select(raw_data, nil, format)
     return response[1], raw_end
 end
-local function decode_get(raw_data, raw_data_end, format)
+local function decode_get(raw_data, raw_data_end, format) -- luacheck: no unused args
     local body, raw_end = internal.decode_select(raw_data, nil, format)
     if body[2] then
         return nil, raw_end, box.error.MORE_THAN_ONE_TUPLE
@@ -122,7 +118,7 @@ local method_encoder = {
     max     = internal.encode_select,
     count   = internal.encode_call,
     -- inject raw data into connection, used by console and tests
-    inject = function(buf, id, bytes)
+    inject = function(buf, id, bytes) -- luacheck: no unused args
         local ptr = buf:reserve(#bytes)
         ffi.copy(ptr, bytes, #bytes)
         buf.wpos = ptr + #bytes
@@ -187,7 +183,7 @@ local function next_id(id) return band(id + 1, 0x7FFFFFFF) end
 -- @retval two non-nils A connected socket and a decoded greeting.
 --
 local function establish_connection(host, port, timeout)
-    local timeout = timeout or DEFAULT_CONNECT_TIMEOUT
+    timeout = timeout or DEFAULT_CONNECT_TIMEOUT
     local begin = fiber.clock()
     local s = socket.tcp_connect(host, port, timeout)
     if not s then
@@ -212,7 +208,7 @@ end
 -- Default action on push during a synchronous request -
 -- ignore.
 --
-local function on_push_sync_default(...) end
+local function on_push_sync_default() end
 
 --
 -- Basically, *transport* is a TCP connection speaking one of
@@ -253,7 +249,7 @@ local function on_push_sync_default(...) end
 --
 -- The following events are delivered, with arguments:
 --
---  'state_changed', state, errno, error
+--  'state_changed', state, error
 --  'handshake', greeting -> nil (accept) / errno, error (reject)
 --  'will_fetch_schema'   -> true (approve) / false (skip fetch)
 --  'did_fetch_schema', schema_version, spaces, indices
@@ -449,7 +445,7 @@ local function create_transport(host, port, user, password, callback,
         state = new_state
         last_errno = new_errno
         last_error = new_error
-        callback('state_changed', new_state, new_errno, new_error)
+        callback('state_changed', new_state, new_error)
         state_cond:broadcast()
         if state == 'error' or state == 'error_reconnect' or
            state == 'closed' then
@@ -598,7 +594,7 @@ local function create_transport(host, port, user, password, callback,
             -- Handle errors
             requests[id] = nil
             request.id = nil
-            local map_len, key, skip
+            local map_len, key
             map_len, body_rpos = decode_map_header(body_rpos, body_len)
             -- Reserve for 2 keys and 2 array indexes. Because no
             -- any guarantees how Lua will decide to save the
@@ -610,7 +606,7 @@ local function create_transport(host, port, user, password, callback,
                 if rdec then
                     body[key], body_rpos = rdec(body_rpos)
                 else
-                    skip, body_rpos = decode(body_rpos)
+                    _, body_rpos = decode(body_rpos)
                 end
             end
             assert(body_end == body_rpos, "invalid xrow length")
@@ -689,7 +685,7 @@ local function create_transport(host, port, user, password, callback,
 
     local function send_and_recv_iproto(timeout)
         local data_len = recv_buf.wpos - recv_buf.rpos
-        local required = 0
+        local required
         if data_len < 5 then
             required = 5
         else
@@ -771,7 +767,6 @@ local function create_transport(host, port, user, password, callback,
     end
 
     console_sm = function(rid)
-        local delim = '\n...\n'
         local err, response = send_and_recv_console()
         if err then
             return error_sm(err, response)
@@ -795,13 +790,12 @@ local function create_transport(host, port, user, password, callback,
             return iproto_schema_sm()
         end
         encode_auth(send_buf, new_request_id(), user, password, salt)
-        local err, hdr, body_rpos, body_end = send_and_recv_iproto()
+        local err, hdr, body_rpos = send_and_recv_iproto()
         if err then
             return error_sm(err, hdr)
         end
         if hdr[IPROTO_STATUS_KEY] ~= 0 then
-            local body
-            body, body_end = decode(body_rpos)
+            local body = decode(body_rpos)
             return error_sm(E_NO_CONNECTION, body[IPROTO_ERROR_24])
         end
         set_state('fetch_schema')
@@ -852,8 +846,7 @@ local function create_transport(host, port, user, password, callback,
                         peer_has_vcollation = false
                         goto continue
                     end
-                    local body
-                    body, body_end = decode(body_rpos)
+                    local body = decode(body_rpos)
                     return error_sm(E_NO_CONNECTION, body[IPROTO_ERROR_24])
                 end
                 if schema_version == nil then
@@ -862,8 +855,7 @@ local function create_transport(host, port, user, password, callback,
                     -- schema changed while fetching schema; restart loader
                     return iproto_schema_sm()
                 end
-                local body
-                body, body_end = decode(body_rpos)
+                local body = decode(body_rpos)
                 response[id] = body[IPROTO_DATA_KEY]
             end
             ::continue::
@@ -880,14 +872,11 @@ local function create_transport(host, port, user, password, callback,
         local err, hdr, body_rpos, body_end = send_and_recv_iproto()
         if err then return error_sm(err, hdr) end
         dispatch_response_iproto(hdr, body_rpos, body_end)
-        local status = hdr[IPROTO_STATUS_KEY]
         local response_schema_version = hdr[IPROTO_SCHEMA_VERSION_KEY]
         if response_schema_version > 0 and
            response_schema_version ~= schema_version then
             -- schema_version has been changed - start to load a new version.
             -- Sic: self.schema_version will be updated only after reload.
-            local body
-            body, body_end = decode(body_rpos)
             set_state('fetch_schema')
             return iproto_schema_sm(schema_version)
         end
@@ -926,7 +915,7 @@ end
 -- Now it is necessary to have a strong ref to callback somewhere or
 -- it is GC-ed prematurely. We wrap stop() method, stashing the
 -- ref in an upvalue (stop() performance doesn't matter much.)
-local create_transport = function(host, port, user, password, callback,
+local create_transport = function(host, port, user, password, callback, -- luacheck: ignore
                                   connection, greeting)
     local weak_refs = setmetatable({callback = callback}, {__mode = 'v'})
     local function weak_callback(...)
@@ -1004,7 +993,7 @@ local function new_sm(host, port, opts, connection, greeting)
     local remote = {host = host, port = port, opts = opts, state = 'initial'}
     local function callback(what, ...)
         if what == 'state_changed' then
-            local state, errno, err = ...
+            local state, err = ...
             local was_connected = remote._is_connected
             if state == 'active' then
                 if not was_connected then
@@ -1275,7 +1264,7 @@ function remote_methods:execute(query, parameters, sql_opts, netbox_opts)
                          sql_opts or {})
 end
 
-function remote_methods:prepare(query, parameters, sql_opts, netbox_opts)
+function remote_methods:prepare(query, parameters, sql_opts, netbox_opts) -- luacheck: no unused args
     check_remote_arg(self, "prepare")
     if type(query) ~= "string" then
         box.error(box.error.SQL_PREPARE, "expected string as SQL statement")
@@ -1640,7 +1629,7 @@ this_module.self = {
     timeout = function(self) return self end,
     wait_connected = function(self) return true end,
     is_connected = function(self) return true end,
-    call = function(_box, proc_name, args, opts)
+    call = function(_box, proc_name, args)
         check_remote_arg(_box, 'call')
         check_call_args(args)
         args = args or {}
@@ -1651,14 +1640,13 @@ this_module.self = {
             rollback()
             return box.error() -- re-throw
         end
-        local result
         if obj ~= nil then
             return handle_eval_result(pcall(proc, obj, unpack(args)))
         else
             return handle_eval_result(pcall(proc, unpack(args)))
         end
     end,
-    eval = function(_box, expr, args, opts)
+    eval = function(_box, expr, args)
         check_remote_arg(_box, 'eval')
         check_eval_args(args)
         args = args or {}
diff --git a/src/box/lua/schema.lua b/src/box/lua/schema.lua
index cdfbb65f7..4fe0ff8da 100644
--- a/src/box/lua/schema.lua
+++ b/src/box/lua/schema.lua
@@ -2,7 +2,6 @@
 --
 local ffi = require('ffi')
 local msgpack = require('msgpack')
-local msgpackffi = require('msgpackffi')
 local fun = require('fun')
 local log = require('log')
 local buffer = require('buffer')
@@ -212,7 +211,7 @@ local function revoke_object_privs(object_type, object_id)
     local _vpriv = box.space[box.schema.VPRIV_ID]
     local _priv = box.space[box.schema.PRIV_ID]
     local privs = _vpriv.index.object:select{object_type, object_id}
-    for k, tuple in pairs(privs) do
+    for _, tuple in pairs(privs) do
         local uid = tuple.grantee
         _priv:delete{uid, object_type, object_id}
     end
@@ -262,7 +261,7 @@ local function check_param_table(table, template)
         if template[k] == nil then
             box.error(box.error.ILLEGAL_PARAMS,
                       "unexpected option '" .. k .. "'")
-        elseif template[k] == 'any' then
+        elseif template[k] == 'any' then -- luacheck: ignore
             -- any type is ok
         elseif (string.find(template[k], ',') == nil) then
             -- one type
@@ -276,7 +275,6 @@ local function check_param_table(table, template)
             local haystack = ',' .. good_types .. ','
             local needle = ',' .. param_type(v) .. ','
             if (string.find(haystack, needle) == nil) then
-                good_types = string.gsub(good_types, ',', ', ')
                 box.error(box.error.ILLEGAL_PARAMS,
                           "options parameter '" .. k ..
                           "' should be one of types: " .. template[k])
@@ -584,9 +582,9 @@ end
 --
 local function format_field_resolve(format, path, what)
     assert(type(path) == 'number' or type(path) == 'string')
-    local idx = nil
+    local idx
     local relative_path = nil
-    local field_name = nil
+    local field_name
     -- Path doesn't require resolve.
     if type(path) == 'number' then
         idx = path
@@ -846,7 +844,7 @@ local function space_sequence_alter_prepare(format, parts, options,
             if id == nil then
                 box.error(box.error.NO_SUCH_SEQUENCE, new_sequence.id)
             end
-            local tuple = _space_sequence.index.sequence:select(id)[1]
+            tuple = _space_sequence.index.sequence:select(id)[1]
             if tuple ~= nil and tuple.is_generated then
                 box.error(box.error.ALTER_SPACE, space_name,
                           "can not attach generated sequence")
@@ -1146,7 +1144,7 @@ box.schema.index.alter = function(space_id, index_id, options)
         local can_update_field = {id = true, name = true, type = true }
         local can_update = true
         local cant_update_fields = ''
-        for k,v in pairs(options) do
+        for k, _ in pairs(options) do
             if not can_update_field[k] then
                 can_update = false
                 cant_update_fields = cant_update_fields .. ' ' .. k
@@ -1190,7 +1188,7 @@ box.schema.index.alter = function(space_id, index_id, options)
     if options.type == nil then
         options.type = tuple.type
     end
-    for k, t in pairs(index_options) do
+    for k, _ in pairs(index_options) do
         if options[k] ~= nil then
             index_opts[k] = options[k]
         end
@@ -1233,12 +1231,12 @@ end
 
 local iterator_t = ffi.typeof('struct iterator')
 ffi.metatype(iterator_t, {
-    __tostring = function(iterator)
+    __tostring = function(self)
         return "<iterator state>"
     end;
 })
 
-local iterator_gen = function(param, state)
+local iterator_gen = function(param, state) -- luacheck: no unused args
     --[[
         index:pairs() mostly conforms to the Lua for-in loop conventions and
         tries to follow the best practices of Lua community.
@@ -1272,7 +1270,7 @@ local iterator_gen = function(param, state)
     end
 end
 
-local iterator_gen_luac = function(param, state)
+local iterator_gen_luac = function(param, state) -- luacheck: no unused args
     local tuple = internal.iterator_next(state)
     if tuple ~= nil then
         return state, tuple -- new state, value
@@ -1555,7 +1553,7 @@ end
 
 base_index_mt.select_luac = function(index, key, opts)
     check_index_arg(index, 'select')
-    local key = keify(key)
+    key = keify(key)
     local iterator, offset, limit = check_select_opts(opts, #key == 0)
     return internal.select(index.space_id, index.id, iterator,
         offset, limit, key)
@@ -1775,9 +1773,9 @@ local function wrap_schema_object_mt(name)
         __pairs = global_mt.__pairs
     }
     local mt_mt = {}
-    mt_mt.__newindex = function(t, k, v)
+    mt_mt.__newindex = function(self, k, v)
         mt_mt.__newindex = nil
-        mt.__index = function(t, k)
+        mt.__index = function(self, k)
             return mt[k] or box.schema[name][k]
         end
         rawset(mt, k, v)
@@ -2486,24 +2484,24 @@ local function revoke(uid, name, privilege, object_type, object_name, options)
     end
 end
 
-local function drop(uid, opts)
+local function drop(uid)
     -- recursive delete of user data
     local _vpriv = box.space[box.schema.VPRIV_ID]
     local spaces = box.space[box.schema.VSPACE_ID].index.owner:select{uid}
-    for k, tuple in pairs(spaces) do
+    for _, tuple in pairs(spaces) do
         box.space[tuple.id]:drop()
     end
     local funcs = box.space[box.schema.VFUNC_ID].index.owner:select{uid}
-    for k, tuple in pairs(funcs) do
+    for _, tuple in pairs(funcs) do
         box.schema.func.drop(tuple.id)
     end
     -- if this is a role, revoke this role from whoever it was granted to
     local grants = _vpriv.index.object:select{'role', uid}
-    for k, tuple in pairs(grants) do
+    for _, tuple in pairs(grants) do
         revoke(tuple.grantee, tuple.grantee, uid)
     end
     local sequences = box.space[box.schema.VSEQUENCE_ID].index.owner:select{uid}
-    for k, tuple in pairs(sequences) do
+    for _, tuple in pairs(sequences) do
         box.schema.sequence.drop(tuple.id)
     end
     -- xxx: hack, we have to revoke session and usage privileges
@@ -2515,7 +2513,7 @@ local function drop(uid, opts)
     end
     local privs = _vpriv.index.primary:select{uid}
 
-    for k, tuple in pairs(privs) do
+    for _, tuple in pairs(privs) do
         -- we need an additional box.session.su() here, because of
         -- unnecessary check for privilege PRIV_REVOKE in priv_def_check()
         box.session.su("admin", revoke, uid, uid, tuple.privilege,
@@ -2565,7 +2563,7 @@ box.schema.user.drop = function(name, opts)
             box.error(box.error.DROP_USER, name,
                       "the user is active in the current session")
         end
-        return drop(uid, opts)
+        return drop(uid)
     end
     if not opts.if_exists then
         box.error(box.error.NO_SUCH_USER, name)
@@ -2681,7 +2679,7 @@ box.once = function(key, func, ...)
         box.error(box.error.ILLEGAL_PARAMS, "Usage: box.once(key, func, ...)")
     end
 
-    local key = "once"..key
+    key = "once"..key
     if box.space._schema:get{key} ~= nil then
         return
     end
diff --git a/src/box/lua/tuple.lua b/src/box/lua/tuple.lua
index f97aa1579..87f53258b 100644
--- a/src/box/lua/tuple.lua
+++ b/src/box/lua/tuple.lua
@@ -1,7 +1,6 @@
 -- tuple.lua (internal file)
 
 local ffi = require('ffi')
-local yaml = require('yaml')
 local msgpackffi = require('msgpackffi')
 local fun = require('fun')
 local buffer = require('buffer')
@@ -81,7 +80,6 @@ local tuple_encode = function(obj)
         encode_r(tmpbuf, obj, 1)
     elseif type(obj) == "table" then
         encode_array(tmpbuf, #obj)
-        local i
         for i = 1, #obj, 1 do
             encode_r(tmpbuf, obj[i], 1)
         end
@@ -232,7 +230,7 @@ local function tuple_update(tuple, expr)
         error("Usage: tuple:update({ { op, field, arg}+ })")
     end
     local pexpr, pexpr_end = tuple_encode(expr)
-    local tuple = builtin.box_tuple_update(tuple, pexpr, pexpr_end)
+    tuple = builtin.box_tuple_update(tuple, pexpr, pexpr_end)
     if tuple == nil then
         return box.error()
     end
@@ -245,7 +243,7 @@ local function tuple_upsert(tuple, expr)
         error("Usage: tuple:upsert({ { op, field, arg}+ })")
     end
     local pexpr, pexpr_end = tuple_encode(expr)
-    local tuple = builtin.box_tuple_upsert(tuple, pexpr, pexpr_end)
+    tuple = builtin.box_tuple_upsert(tuple, pexpr, pexpr_end)
     if tuple == nil then
         return box.error()
     end
@@ -339,7 +337,7 @@ ffi.metatype(tuple_t, {
 
 ffi.metatype(tuple_iterator_t, {
     __call = tuple_iterator_next;
-    __tostring = function(it) return "<tuple iterator>" end;
+    __tostring = function(self) return "<tuple iterator>" end;
 })
 
 -- Free methods, which are not needed anymore.
diff --git a/src/box/lua/upgrade.lua b/src/box/lua/upgrade.lua
index 075cc236e..208b53f15 100644
--- a/src/box/lua/upgrade.lua
+++ b/src/box/lua/upgrade.lua
@@ -52,10 +52,9 @@ end
 local function truncate(space)
     local pk = space.index[0]
     while pk:len() > 0 do
-        local state, t
-        for state, t in pk:pairs() do
+        for _, t in pk:pairs() do
             local key = {}
-            for _k2, parts in ipairs(pk.parts) do
+            for _, parts in ipairs(pk.parts) do
                 table.insert(key, t[parts.fieldno])
             end
             space:delete(key)
@@ -173,7 +172,7 @@ local function initial_1_7_5()
     format[5] = {name='field_count', type='unsigned'}
     format[6] = {name='flags', type='map'}
     format[7] = {name='format', type='array'}
-    local def = _space:insert{_space.id, ADMIN, '_space', 'memtx', 0, MAP, format}
+    _space:insert{_space.id, ADMIN, '_space', 'memtx', 0, MAP, format}
     -- space name is unique
     log.info("create index primary on _space")
     _index:insert{_space.id, 0, 'primary', 'tree', { unique = true }, {{0, 'unsigned'}}}
@@ -194,7 +193,7 @@ local function initial_1_7_5()
     format[4] = {name = 'type', type = 'string'}
     format[5] = {name = 'opts', type = 'map'}
     format[6] = {name = 'parts', type = 'array'}
-    def = _space:insert{_index.id, ADMIN, '_index', 'memtx', 0, MAP, format}
+    _space:insert{_index.id, ADMIN, '_index', 'memtx', 0, MAP, format}
     -- index name is unique within a space
     log.info("create index primary on _index")
     _index:insert{_index.id, 0, 'primary', 'tree', {unique = true}, {{0, 'unsigned'}, {1, 'unsigned'}}}
@@ -211,7 +210,7 @@ local function initial_1_7_5()
     format[2] = {name='owner', type='unsigned'}
     format[3] = {name='name', type='string'}
     format[4] = {name='setuid', type='unsigned'}
-    def = _space:insert{_func.id, ADMIN, '_func', 'memtx', 0, MAP, format}
+    _space:insert{_func.id, ADMIN, '_func', 'memtx', 0, MAP, format}
     -- function name and id are unique
     log.info("create index _func:primary")
     _index:insert{_func.id, 0, 'primary', 'tree', {unique = true}, {{0, 'unsigned'}}}
@@ -231,7 +230,7 @@ local function initial_1_7_5()
     format[3] = {name='name', type='string'}
     format[4] = {name='type', type='string'}
     format[5] = {name='auth', type='map'}
-    def = _space:insert{_user.id, ADMIN, '_user', 'memtx', 0, MAP, format}
+    _space:insert{_user.id, ADMIN, '_user', 'memtx', 0, MAP, format}
     -- user name and id are unique
     log.info("create index _func:primary")
     _index:insert{_user.id, 0, 'primary', 'tree', {unique = true}, {{0, 'unsigned'}}}
@@ -251,7 +250,7 @@ local function initial_1_7_5()
     format[3] = {name='object_type', type='string'}
     format[4] = {name='object_id', type='unsigned'}
     format[5] = {name='privilege', type='unsigned'}
-    def = _space:insert{_priv.id, ADMIN, '_priv', 'memtx', 0, MAP, format}
+    _space:insert{_priv.id, ADMIN, '_priv', 'memtx', 0, MAP, format}
     -- user id, object type and object id are unique
     log.info("create index primary on _priv")
     _index:insert{_priv.id, 0, 'primary', 'tree', {unique = true}, {{1, 'unsigned'}, {2, 'string'}, {3, 'unsigned'}}}
@@ -580,7 +579,7 @@ local function upgrade_to_2_1_0()
     -- Now, abscent field means NULL, so we can safely set second
     -- field in format, marking it nullable.
     log.info("Add nullable value field to space _schema")
-    local format = {}
+    format = {}
     format[1] = {type='string', name='key'}
     format[2] = {type='any', name='value', is_nullable=true}
     box.space._schema:format(format)
@@ -734,7 +733,7 @@ local function upgrade_collation_to_2_1_3()
 
     local id = 4
     for _, collation in ipairs(coll_lst) do
-        for i, strength in ipairs(coll_strengths) do
+        for _, strength in ipairs(coll_strengths) do
             local coll_name = 'unicode_' .. collation.name .. "_" .. strength.s
             log.info("creating collation %s", coll_name)
             box.space._collation:replace{id, coll_name, ADMIN, "ICU", collation.loc_str, strength.opt }
-- 
2.23.0

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck
  2020-06-04  8:39 [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck sergeyb
                   ` (5 preceding siblings ...)
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 6/6] Fix luacheck warnings in src/box/lua/ sergeyb
@ 2020-06-04  8:43 ` Sergey Bronnikov
  2020-06-19 23:15   ` Vladislav Shpilevoy
  2020-06-04  9:04 ` Igor Munkin
                   ` (3 subsequent siblings)
  10 siblings, 1 reply; 41+ messages in thread
From: Sergey Bronnikov @ 2020-06-04  8:43 UTC (permalink / raw)
  To: tarantool-patches, imun, v.shpilevoy; +Cc: alexander.turenko

GH issue: https://github.com/tarantool/tarantool/issues/4681
GitHub branch: https://github.com/tarantool/tarantool/tree/ligurio/gh-4681-fix-luacheck-warnings-src
GitLab CI: https://gitlab.com/tarantool/tarantool/-/pipelines/152745880

On 11:39 Thu 04 Jun , sergeyb@tarantool.org wrote:
> From: Sergey Bronnikov <sergeyb@tarantool.org>
> 
> Sergey Bronnikov (6):
>   Add initial luacheck config
>   build: enable 'make luacheck' target
>   gitlab-ci: enable static analysis with luacheck
>   Fix luacheck warnings in extra/dist/
>   Fix luacheck warnings in src/lua/
>   Fix luacheck warnings in src/box/lua/

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck
  2020-06-04  8:39 [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck sergeyb
                   ` (6 preceding siblings ...)
  2020-06-04  8:43 ` [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck Sergey Bronnikov
@ 2020-06-04  9:04 ` Igor Munkin
  2020-06-04 11:17 ` Sergey Bronnikov
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 41+ messages in thread
From: Igor Munkin @ 2020-06-04  9:04 UTC (permalink / raw)
  To: sergeyb; +Cc: tarantool-patches, v.shpilevoy, alexander.turenko

Sergey,

Thanks for the series! Please provide a ChangeLog entry.

Since I was involved in preparing this series, my review is not
sufficient anymore.

Vlad, Sasha, could you please take look on the patchset? I guess
everything we discussed[1] is fixed now.

On 04.06.20, sergeyb@tarantool.org wrote:
> From: Sergey Bronnikov <sergeyb@tarantool.org>
> 
> Sergey Bronnikov (6):
>   Add initial luacheck config
>   build: enable 'make luacheck' target
>   gitlab-ci: enable static analysis with luacheck
>   Fix luacheck warnings in extra/dist/
>   Fix luacheck warnings in src/lua/
>   Fix luacheck warnings in src/box/lua/
> 
>  .gitlab-ci.yml                  | 11 +++++++
>  .luacheckrc                     | 55 +++++++++++++++++++++++++++++++++
>  .travis.mk                      | 23 +++++++++++++-
>  CMakeLists.txt                  | 11 +++++++
>  extra/dist/tarantoolctl.in      | 25 +++++----------
>  src/box/lua/console.lua         | 10 +++---
>  src/box/lua/feedback_daemon.lua |  2 +-
>  src/box/lua/key_def.lua         |  2 +-
>  src/box/lua/load_cfg.lua        | 11 +++----
>  src/box/lua/net_box.lua         | 52 ++++++++++++-------------------
>  src/box/lua/schema.lua          | 44 +++++++++++++-------------
>  src/box/lua/tuple.lua           |  8 ++---
>  src/box/lua/upgrade.lua         | 19 ++++++------
>  src/lua/argparse.lua            |  3 +-
>  src/lua/buffer.lua              |  4 +--
>  src/lua/clock.lua               |  2 +-
>  src/lua/crypto.lua              |  4 +--
>  src/lua/csv.lua                 |  5 ++-
>  src/lua/digest.lua              |  2 +-
>  src/lua/env.lua                 |  2 +-
>  src/lua/fiber.lua               |  4 +--
>  src/lua/fio.lua                 | 30 +++++++++---------
>  src/lua/help.lua                |  7 ++---
>  src/lua/httpc.lua               |  3 --
>  src/lua/init.lua                |  4 +--
>  src/lua/msgpackffi.lua          | 22 ++++++-------
>  src/lua/socket.lua              | 16 +++++-----
>  src/lua/string.lua              |  1 -
>  src/lua/swim.lua                |  2 +-
>  src/lua/tap.lua                 |  4 ---
>  src/lua/trigger.lua             |  3 --
>  31 files changed, 220 insertions(+), 171 deletions(-)
>  create mode 100644 .luacheckrc
> 
> -- 
> 2.23.0

[1]: https://lists.tarantool.org/pipermail/tarantool-patches/2020-June/017370.html

-- 
Best regards,
IM

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck
  2020-06-04  8:39 [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck sergeyb
                   ` (7 preceding siblings ...)
  2020-06-04  9:04 ` Igor Munkin
@ 2020-06-04 11:17 ` Sergey Bronnikov
  2020-07-14 22:49 ` Vladislav Shpilevoy
  2020-07-15  9:51 ` Kirill Yukhin
  10 siblings, 0 replies; 41+ messages in thread
From: Sergey Bronnikov @ 2020-06-04 11:17 UTC (permalink / raw)
  To: tarantool-patches, imun, v.shpilevoy; +Cc: alexander.turenko

Changelog:

- enabled luacheck in continuous integration
- fixed warnings (two of them were real bugs!) found by luacheck in a
source code

On 11:39 Thu 04 Jun , sergeyb@tarantool.org wrote:
> From: Sergey Bronnikov <sergeyb@tarantool.org>
> 
> Sergey Bronnikov (6):
>   Add initial luacheck config
>   build: enable 'make luacheck' target
>   gitlab-ci: enable static analysis with luacheck
>   Fix luacheck warnings in extra/dist/
>   Fix luacheck warnings in src/lua/
>   Fix luacheck warnings in src/box/lua/

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 1/6] Add initial luacheck config
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 1/6] Add initial luacheck config sergeyb
@ 2020-06-06 18:02   ` Vladislav Shpilevoy
  2020-06-09 16:16     ` Sergey Bronnikov
  0 siblings, 1 reply; 41+ messages in thread
From: Vladislav Shpilevoy @ 2020-06-06 18:02 UTC (permalink / raw)
  To: sergeyb, tarantool-patches, imun; +Cc: alexander.turenko

Hi! Thanks for the patch!

On 04/06/2020 10:39, sergeyb@tarantool.org wrote:
> From: Sergey Bronnikov <sergeyb@tarantool.org>
> 
> config includes all files with Lua source code except:

Lets start sentences from capital letters.

> - third_party repositories
> - directories with diff-based tests

Seems like src/* is excluded. So nothing is checked, and the
commit message is wrong.

I see, that you turn on the checks in next commits, but then the
commit message should be changed.

> How-to check:
> 
> $ luacheck --codes --config .luacheckrc .
> 
> Part of #4681
> 
> Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 4/6] Fix luacheck warnings in extra/dist/
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 4/6] Fix luacheck warnings in extra/dist/ sergeyb
@ 2020-06-06 18:02   ` Vladislav Shpilevoy
  2020-06-09 16:17     ` Sergey Bronnikov
  2020-06-19 23:15   ` Vladislav Shpilevoy
  1 sibling, 1 reply; 41+ messages in thread
From: Vladislav Shpilevoy @ 2020-06-06 18:02 UTC (permalink / raw)
  To: sergeyb, tarantool-patches, imun; +Cc: alexander.turenko

Thanks for the patch!

On 04/06/2020 10:39, sergeyb@tarantool.org wrote:
> From: Sergey Bronnikov <sergeyb@tarantool.org>
> 
> Part of #4681
> 
> Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> Reviewed-by: Igor Munkin <imun@tarantool.org>
> 
> Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> Co-authored-by: Igor Munkin <imun@tarantool.org>
> ---
>  .luacheckrc                | 15 ++++++++++++++-
>  extra/dist/tarantoolctl.in | 25 +++++++------------------
>  2 files changed, 21 insertions(+), 19 deletions(-)
> 
> diff --git a/.luacheckrc b/.luacheckrc
> index e6edf8617..b917eb927 100644
> --- a/.luacheckrc
> +++ b/.luacheckrc
> @@ -1,12 +1,19 @@
>  std = "luajit"
> +globals = {"box", "_TARANTOOL"}
> +ignore = {
> +    "212/self", -- Unused argument <self>.
> +    "411",      -- Redefining a local variable.
> +    "431",      -- Shadowing an upvalue.
> +}
> +

Unnecessary empty line after }.

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/ sergeyb
@ 2020-06-06 18:03   ` Vladislav Shpilevoy
  2020-06-11 12:00     ` Sergey Bronnikov
  2020-06-11 17:22     ` Igor Munkin
  2020-07-05 16:28   ` Vladislav Shpilevoy
  2020-07-13 22:59   ` Vladislav Shpilevoy
  2 siblings, 2 replies; 41+ messages in thread
From: Vladislav Shpilevoy @ 2020-06-06 18:03 UTC (permalink / raw)
  To: sergeyb, tarantool-patches, imun; +Cc: alexander.turenko

Thanks for the patch!

See 11 comments below.

On 04/06/2020 10:39, sergeyb@tarantool.org wrote:
> From: Sergey Bronnikov <sergeyb@tarantool.org>
> 
> Part of #4681
> 
> Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> Reviewed-by: Igor Munkin <imun@tarantool.org>
> 
> Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> Co-authored-by: Igor Munkin <imun@tarantool.org>
> ---
>  .luacheckrc            | 28 ++++++++++++++++++++++++----
>  src/lua/argparse.lua   |  3 ++-
>  src/lua/buffer.lua     |  4 ++--
>  src/lua/clock.lua      |  2 +-
>  src/lua/crypto.lua     |  4 ++--
>  src/lua/csv.lua        |  5 ++---
>  src/lua/digest.lua     |  2 +-
>  src/lua/env.lua        |  2 +-
>  src/lua/fiber.lua      |  4 ++--
>  src/lua/fio.lua        | 30 ++++++++++++++----------------
>  src/lua/help.lua       |  7 ++-----
>  src/lua/httpc.lua      |  3 ---
>  src/lua/init.lua       |  4 ++--
>  src/lua/msgpackffi.lua | 22 +++++++++-------------
>  src/lua/socket.lua     | 16 ++++++++--------
>  src/lua/string.lua     |  1 -
>  src/lua/swim.lua       |  2 +-
>  src/lua/tap.lua        |  4 ----
>  src/lua/trigger.lua    |  3 ---
>  19 files changed, 73 insertions(+), 73 deletions(-)
> 
> diff --git a/.luacheckrc b/.luacheckrc
> index b917eb927..fb8b9dfb3 100644
> --- a/.luacheckrc
> +++ b/.luacheckrc
> @@ -1,9 +1,14 @@
>  std = "luajit"
>  globals = {"box", "_TARANTOOL"}
>  ignore = {
> -    "212/self", -- Unused argument <self>.
> -    "411",      -- Redefining a local variable.
> -    "431",      -- Shadowing an upvalue.
> +    "143/debug",  -- Accessing an undefined field of a global variable <debug>.

1. Why are global variables ignored sometimes using '143/<name>', sometimes
via adding to the global 'globals', sometimes via the per-file 'globals'?
'debug', 'string', and 'table' are globals, available in all the sources,
just like 'box'.

> +    "143/string", -- Accessing an undefined field of a global variable <string>.
> +    "143/table",  -- Accessing an undefined field of a global variable <table>.
> +    "212/self",   -- Unused argument <self>.

2. This is one of the main reasons, why non-standardized alignment applied
to everything is evil. Diff split into patches does not make much sense, when a
next patch anyway should rewrite 100% of the previous one just to make alignment
correct. I would propose to make the alignment correct right away, from the first
patch. Or remove it. Or make it less strict, so not all lines are required to be
equaly aligned. Whatever helps not to change already fine lines.

> +    "411",        -- Redefining a local variable.
> +    "421",        -- Shadowing a local variable.
> +    "431",        -- Shadowing an upvalue.
> +    "432",        -- Shadowing an upvalue argument.
>  }
> @@ -27,3 +32,18 @@ files["extra/dist/tarantoolctl.in"] = {
>          "122", -- https://github.com/tarantool/tarantool/issues/4929
>      },
>  }
> +files["src/lua/help.lua"] = {
> +    globals = {"help", "tutorial"}, -- globals defined for interactive mode.

3. Lets use single style for all comments: start sentences from
capital letters. Instead of switching between lowcase and normal
writing from time to time.

> +}> +files["src/lua/init.lua"] = {
> +    globals = {"dostring"}, -- miscellaneous global function definition.
> +    ignore = {
> +        "122/os",      -- set tarantool specific behaviour for os.exit.
> +        "142/package", -- add custom functions into Lua package namespace.

4. os and package changes can be done using rawset() function. It does not
produce a warning, and behaves in the above cases the same. However this
should be consulted with other reviewers.

Another option - add 'os' and 'package' to the list of globals. It also fixes
the warnings.

> +    },
> +}
> +files["src/lua/swim.lua"] = {
> +    ignore = {
> +        "212/m", -- respect swim module code style.

5. Once again I wonder why do we ignore unused arguments sometimes globaly in
'ignore = {...}', sometimes per-file like here, sometimes using inlined luacheck
comments.

In this particular case there is even a fourth option - rename 'm' to 'self' in
the single problematic line. Like you did for many similar places.

> +    },
> +}
> diff --git a/src/lua/argparse.lua b/src/lua/argparse.lua
> index faa0ae130..6c8f10fc1 100644
> --- a/src/lua/argparse.lua
> +++ b/src/lua/argparse.lua
> @@ -91,7 +91,8 @@ local function convert_parameter(name, convert_from, convert_to)
>  end
>  
>  local function parameters_parse(t_in, options)
> -    local t_out, t_in = {}, t_in or {}
> +    local t_out = {}
> +    t_in = t_in or {}

6. Unnecessary diff. At least when I check on top of the branch.

> diff --git a/src/lua/init.lua b/src/lua/init.lua
> index ff3e74c3c..aea7a7491 100644
> --- a/src/lua/init.lua
> +++ b/src/lua/init.lua
> @@ -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

7. Ditto.

>          end
>  
> @@ -603,7 +599,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)

8. Ditto.

>      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 bbdef01e3..2a2c7a32c 100644
> --- a/src/lua/socket.lua
> +++ b/src/lua/socket.lua
> @@ -1044,7 +1044,7 @@ local function tcp_connect(host, port, timeout)
>          boxerrno(0)
>          return s
>      end
> -    local timeout = timeout or TIMEOUT_INFINITY
> +    timeout = timeout or TIMEOUT_INFINITY

9. Ditto.

>      local stop = fiber.clock() + timeout
>      local dns = getaddrinfo(host, port, timeout, { type = 'SOCK_STREAM',
>          protocol = 'tcp' })
> @@ -1319,7 +1319,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: no unused args

10. Mode is really ignored, and this is not some kind of built-in
function with 'fixed' signature. And it is not used 'virtually',
when there is a variable keeping pointer at one function among
many having the same signature. So what is a purpose of keeping it?

>      check_socket(self)
>      self.timeout = value
>      -- mode is effectively ignored
> @@ -1475,7 +1475,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)

11. Unnecessary diff.

>              if data == nil then
>                  if not errno_is_transient[self._errno] then
>                      return nil, socket_error(self)

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 6/6] Fix luacheck warnings in src/box/lua/
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 6/6] Fix luacheck warnings in src/box/lua/ sergeyb
@ 2020-06-06 18:03   ` Vladislav Shpilevoy
  2020-06-11 12:01     ` Sergey Bronnikov
  2020-06-19 23:15   ` Vladislav Shpilevoy
  2020-07-13 22:59   ` Vladislav Shpilevoy
  2 siblings, 1 reply; 41+ messages in thread
From: Vladislav Shpilevoy @ 2020-06-06 18:03 UTC (permalink / raw)
  To: sergeyb, tarantool-patches, imun; +Cc: alexander.turenko

Thanks for the patch!

See 7 comments below.

On 04/06/2020 10:39, sergeyb@tarantool.org wrote:
> From: Sergey Bronnikov <sergeyb@tarantool.org>
> 
> Part of #4681
> 
> Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> ---
>  .luacheckrc                     | 10 +++++--
>  src/box/lua/console.lua         | 10 +++----
>  src/box/lua/feedback_daemon.lua |  2 +-
>  src/box/lua/key_def.lua         |  2 +-
>  src/box/lua/load_cfg.lua        | 11 ++++---
>  src/box/lua/net_box.lua         | 52 +++++++++++++--------------------
>  src/box/lua/schema.lua          | 44 +++++++++++++---------------
>  src/box/lua/tuple.lua           |  8 ++---
>  src/box/lua/upgrade.lua         | 19 ++++++------
>  9 files changed, 73 insertions(+), 85 deletions(-)
> 
> diff --git a/.luacheckrc b/.luacheckrc
> index fb8b9dfb3..9fd017629 100644
> --- a/.luacheckrc
> +++ b/.luacheckrc
> @@ -19,7 +20,7 @@ include_files = {
>  
>  exclude_files = {
>      "build/**/*.lua",
> -    "src/box/**/*.lua",
> +    "src/box/lua/serpent.lua", -- third-party source code

1. I see the comments are getting less and less strict in every new patch.
Please, be consistent. Use a capital letter to start a sentence, and end it
with dot.

>      "test-run/**/*.lua",
>      "test/**/*.lua",
>      "third_party/**/*.lua",
> diff --git a/src/box/lua/net_box.lua b/src/box/lua/net_box.lua
> index 9560bfdd4..f71744014 100644
> --- a/src/box/lua/net_box.lua
> +++ b/src/box/lua/net_box.lua
> @@ -187,7 +183,7 @@ local function next_id(id) return band(id + 1, 0x7FFFFFFF) end
>  -- @retval two non-nils A connected socket and a decoded greeting.
>  --
>  local function establish_connection(host, port, timeout)
> -    local timeout = timeout or DEFAULT_CONNECT_TIMEOUT
> +    timeout = timeout or DEFAULT_CONNECT_TIMEOUT

2. Unnecessary diff. I reverted this line and nothing changed.

>      local begin = fiber.clock()
>      local s = socket.tcp_connect(host, port, timeout)
>      if not s then
> diff --git a/src/box/lua/schema.lua b/src/box/lua/schema.lua
> index cdfbb65f7..4fe0ff8da 100644
> --- a/src/box/lua/schema.lua
> +++ b/src/box/lua/schema.lua
> @@ -846,7 +844,7 @@ local function space_sequence_alter_prepare(format, parts, options,
>              if id == nil then
>                  box.error(box.error.NO_SUCH_SEQUENCE, new_sequence.id)
>              end
> -            local tuple = _space_sequence.index.sequence:select(id)[1]
> +            tuple = _space_sequence.index.sequence:select(id)[1]

3. Ditto.

>              if tuple ~= nil and tuple.is_generated then
>                  box.error(box.error.ALTER_SPACE, space_name,
>                            "can not attach generated sequence")
> @@ -2681,7 +2679,7 @@ box.once = function(key, func, ...)
>          box.error(box.error.ILLEGAL_PARAMS, "Usage: box.once(key, func, ...)")
>      end
>  
> -    local key = "once"..key
> +    key = "once"..key

4. Ditto.

>      if box.space._schema:get{key} ~= nil then
>          return
>      end
> diff --git a/src/box/lua/tuple.lua b/src/box/lua/tuple.lua
> index f97aa1579..87f53258b 100644
> --- a/src/box/lua/tuple.lua
> +++ b/src/box/lua/tuple.lua
> @@ -232,7 +230,7 @@ local function tuple_update(tuple, expr)
>          error("Usage: tuple:update({ { op, field, arg}+ })")
>      end
>      local pexpr, pexpr_end = tuple_encode(expr)
> -    local tuple = builtin.box_tuple_update(tuple, pexpr, pexpr_end)
> +    tuple = builtin.box_tuple_update(tuple, pexpr, pexpr_end)

5. Ditto.

>      if tuple == nil then
>          return box.error()
>      end
> @@ -245,7 +243,7 @@ local function tuple_upsert(tuple, expr)
>          error("Usage: tuple:upsert({ { op, field, arg}+ })")
>      end
>      local pexpr, pexpr_end = tuple_encode(expr)
> -    local tuple = builtin.box_tuple_upsert(tuple, pexpr, pexpr_end)
> +    tuple = builtin.box_tuple_upsert(tuple, pexpr, pexpr_end)

6. Ditto.

>      if tuple == nil then
>          return box.error()
>      end
> diff --git a/src/box/lua/upgrade.lua b/src/box/lua/upgrade.lua
> index 075cc236e..208b53f15 100644
> --- a/src/box/lua/upgrade.lua
> +++ b/src/box/lua/upgrade.lua
> @@ -580,7 +579,7 @@ local function upgrade_to_2_1_0()
>      -- Now, abscent field means NULL, so we can safely set second
>      -- field in format, marking it nullable.
>      log.info("Add nullable value field to space _schema")
> -    local format = {}
> +    format = {}

7. Ditto.

>      format[1] = {type='string', name='key'}
>      format[2] = {type='any', name='value', is_nullable=true}
>      box.space._schema:format(format)

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 1/6] Add initial luacheck config
  2020-06-06 18:02   ` Vladislav Shpilevoy
@ 2020-06-09 16:16     ` Sergey Bronnikov
  0 siblings, 0 replies; 41+ messages in thread
From: Sergey Bronnikov @ 2020-06-09 16:16 UTC (permalink / raw)
  To: Vladislav Shpilevoy; +Cc: alexander.turenko, tarantool-patches

Hi,

thanks for review!

On 20:02 Sat 06 Jun , Vladislav Shpilevoy wrote:
> Hi! Thanks for the patch!
> 
> On 04/06/2020 10:39, sergeyb@tarantool.org wrote:
> > From: Sergey Bronnikov <sergeyb@tarantool.org>
> > 
> > config includes all files with Lua source code except:
> 
> Lets start sentences from capital letters.
> 
> > - third_party repositories
> > - directories with diff-based tests
> 
> Seems like src/* is excluded. So nothing is checked, and the
> commit message is wrong.

Agree, removed section "how-to" in a commit message.
Next commit brings target 'luacheck' and it's commit message
self-explain how to execute static analysis.

> I see, that you turn on the checks in next commits, but then the
> commit message should be changed.
> 
> > How-to check:
> > 
> > $ luacheck --codes --config .luacheckrc .
> > 
> > Part of #4681
> > 
> > Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> > Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>

-- 
sergeyb@

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 4/6] Fix luacheck warnings in extra/dist/
  2020-06-06 18:02   ` Vladislav Shpilevoy
@ 2020-06-09 16:17     ` Sergey Bronnikov
  0 siblings, 0 replies; 41+ messages in thread
From: Sergey Bronnikov @ 2020-06-09 16:17 UTC (permalink / raw)
  To: Vladislav Shpilevoy; +Cc: alexander.turenko, tarantool-patches

Hi,

thanks for review!

On 20:02 Sat 06 Jun , Vladislav Shpilevoy wrote:

<snipped>

> > diff --git a/.luacheckrc b/.luacheckrc
> > index e6edf8617..b917eb927 100644
> > --- a/.luacheckrc
> > +++ b/.luacheckrc
> > @@ -1,12 +1,19 @@
> >  std = "luajit"
> > +globals = {"box", "_TARANTOOL"}
> > +ignore = {
> > +    "212/self", -- Unused argument <self>.
> > +    "411",      -- Redefining a local variable.
> > +    "431",      -- Shadowing an upvalue.
> > +}
> > +
> 
> Unnecessary empty line after }.

Fixed in a branch.

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/
  2020-06-06 18:03   ` Vladislav Shpilevoy
@ 2020-06-11 12:00     ` Sergey Bronnikov
  2020-06-11 19:52       ` Vladislav Shpilevoy
  2020-06-18  9:35       ` Sergey Bronnikov
  2020-06-11 17:22     ` Igor Munkin
  1 sibling, 2 replies; 41+ messages in thread
From: Sergey Bronnikov @ 2020-06-11 12:00 UTC (permalink / raw)
  To: Vladislav Shpilevoy; +Cc: alexander.turenko, tarantool-patches

Hi, Vlad

thanks for review!

On 20:03 Sat 06 Jun , Vladislav Shpilevoy wrote:
> Thanks for the patch!
> 
> See 11 comments below.
> 
> On 04/06/2020 10:39, sergeyb@tarantool.org wrote:
> > From: Sergey Bronnikov <sergeyb@tarantool.org>
> > 
> > Part of #4681
> > 
> > Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> > Reviewed-by: Igor Munkin <imun@tarantool.org>
> > 
> > Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> > Co-authored-by: Igor Munkin <imun@tarantool.org>
> > ---
> >  .luacheckrc            | 28 ++++++++++++++++++++++++----
> >  src/lua/argparse.lua   |  3 ++-
> >  src/lua/buffer.lua     |  4 ++--
> >  src/lua/clock.lua      |  2 +-
> >  src/lua/crypto.lua     |  4 ++--
> >  src/lua/csv.lua        |  5 ++---
> >  src/lua/digest.lua     |  2 +-
> >  src/lua/env.lua        |  2 +-
> >  src/lua/fiber.lua      |  4 ++--
> >  src/lua/fio.lua        | 30 ++++++++++++++----------------
> >  src/lua/help.lua       |  7 ++-----
> >  src/lua/httpc.lua      |  3 ---
> >  src/lua/init.lua       |  4 ++--
> >  src/lua/msgpackffi.lua | 22 +++++++++-------------
> >  src/lua/socket.lua     | 16 ++++++++--------
> >  src/lua/string.lua     |  1 -
> >  src/lua/swim.lua       |  2 +-
> >  src/lua/tap.lua        |  4 ----
> >  src/lua/trigger.lua    |  3 ---
> >  19 files changed, 73 insertions(+), 73 deletions(-)
> > 
> > diff --git a/.luacheckrc b/.luacheckrc
> > index b917eb927..fb8b9dfb3 100644
> > --- a/.luacheckrc
> > +++ b/.luacheckrc
> > @@ -1,9 +1,14 @@
> >  std = "luajit"
> >  globals = {"box", "_TARANTOOL"}
> >  ignore = {
> > -    "212/self", -- Unused argument <self>.
> > -    "411",      -- Redefining a local variable.
> > -    "431",      -- Shadowing an upvalue.
> > +    "143/debug",  -- Accessing an undefined field of a global variable <debug>.
> 
> 1. Why are global variables ignored sometimes using '143/<name>', sometimes
> via adding to the global 'globals', sometimes via the per-file 'globals'?
> 'debug', 'string', and 'table' are globals, available in all the sources,
> just like 'box'.

the main idea was to supress rarely used variables inline and often used
variables globally in .luacheckrc. Suggested by Igor in at least [1]
and I'm agree with his approach.

1. https://lists.tarantool.org/pipermail/tarantool-patches/2020-May/017108.html

> 
> > +    "143/string", -- Accessing an undefined field of a global variable <string>.
> > +    "143/table",  -- Accessing an undefined field of a global variable <table>.
> > +    "212/self",   -- Unused argument <self>.
> 
> 2. This is one of the main reasons, why non-standardized alignment applied
> to everything is evil. Diff split into patches does not make much sense, when a
> next patch anyway should rewrite 100% of the previous one just to make alignment
> correct. I would propose to make the alignment correct right away, from the first
> patch. Or remove it. Or make it less strict, so not all lines are required to be
> equaly aligned. Whatever helps not to change already fine lines.

Moved comments before code.

> > +    "411",        -- Redefining a local variable.
> > +    "421",        -- Shadowing a local variable.
> > +    "431",        -- Shadowing an upvalue.
> > +    "432",        -- Shadowing an upvalue argument.
> >  }
> > @@ -27,3 +32,18 @@ files["extra/dist/tarantoolctl.in"] = {
> >          "122", -- https://github.com/tarantool/tarantool/issues/4929
> >      },
> >  }
> > +files["src/lua/help.lua"] = {
> > +    globals = {"help", "tutorial"}, -- globals defined for interactive mode.
> 
> 3. Lets use single style for all comments: start sentences from
> capital letters. Instead of switching between lowcase and normal
> writing from time to time.

Fixed.
> 
> > +}> +files["src/lua/init.lua"] = {
> > +    globals = {"dostring"}, -- miscellaneous global function definition.
> > +    ignore = {
> > +        "122/os",      -- set tarantool specific behaviour for os.exit.
> > +        "142/package", -- add custom functions into Lua package namespace.
> 
> 4. os and package changes can be done using rawset() function. It does not
> produce a warning, and behaves in the above cases the same. However this
> should be consulted with other reviewers.
> 
> Another option - add 'os' and 'package' to the list of globals. It also fixes
> the warnings.

Fixed using rawset().

> 
> > +    },
> > +}
> > +files["src/lua/swim.lua"] = {
> > +    ignore = {
> > +        "212/m", -- respect swim module code style.
> 
> 5. Once again I wonder why do we ignore unused arguments sometimes globaly in
> 'ignore = {...}', sometimes per-file like here, sometimes using inlined luacheck
> comments.

Answered in comment 1.

> In this particular case there is even a fourth option - rename 'm' to 'self' in
> the single problematic line. Like you did for many similar places.

replaced 'm' to 'self'.

> > +    },
> > +}
> > diff --git a/src/lua/argparse.lua b/src/lua/argparse.lua
> > index faa0ae130..6c8f10fc1 100644
> > --- a/src/lua/argparse.lua
> > +++ b/src/lua/argparse.lua
> > @@ -91,7 +91,8 @@ local function convert_parameter(name, convert_from, convert_to)
> >  end
> >  
> >  local function parameters_parse(t_in, options)
> > -    local t_out, t_in = {}, t_in or {}
> > +    local t_out = {}
> > +    t_in = t_in or {}
> 
> 6. Unnecessary diff. At least when I check on top of the branch.

change is required, see [1]

1. https://gitlab.com/tarantool/tarantool/-/jobs/589857153

> 
> > diff --git a/src/lua/init.lua b/src/lua/init.lua
> > index ff3e74c3c..aea7a7491 100644
> > --- a/src/lua/init.lua
> > +++ b/src/lua/init.lua
> > @@ -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
> 
> 7. Ditto.

change reverted
> 
> >          end
> >  
> > @@ -603,7 +599,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)
> 
> 8. Ditto.

change is required, see [1]

1. https://gitlab.com/tarantool/tarantool/-/jobs/589857153
> 
> >      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 bbdef01e3..2a2c7a32c 100644
> > --- a/src/lua/socket.lua
> > +++ b/src/lua/socket.lua
> > @@ -1044,7 +1044,7 @@ local function tcp_connect(host, port, timeout)
> >          boxerrno(0)
> >          return s
> >      end
> > -    local timeout = timeout or TIMEOUT_INFINITY
> > +    timeout = timeout or TIMEOUT_INFINITY
> 
> 9. Ditto.

change is required, see [1]

src/lua/socket.lua:344:11: variable timeout was previously defined as an argument on line 340

1. https://gitlab.com/tarantool/tarantool/-/jobs/589857153

> >      local stop = fiber.clock() + timeout
> >      local dns = getaddrinfo(host, port, timeout, { type = 'SOCK_STREAM',
> >          protocol = 'tcp' })
> > @@ -1319,7 +1319,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: no unused args
> 
> 10. Mode is really ignored, and this is not some kind of built-in
> function with 'fixed' signature. And it is not used 'virtually',
> when there is a variable keeping pointer at one function among
> many having the same signature. So what is a purpose of keeping it?

removed mode arg

> >      check_socket(self)
> >      self.timeout = value
> >      -- mode is effectively ignored
> > @@ -1475,7 +1475,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)
> 
> 11. Unnecessary diff.

change reverted
> >              if data == nil then
> >                  if not errno_is_transient[self._errno] then
> >                      return nil, socket_error(self)

-- 
sergeyb@

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 6/6] Fix luacheck warnings in src/box/lua/
  2020-06-06 18:03   ` Vladislav Shpilevoy
@ 2020-06-11 12:01     ` Sergey Bronnikov
  2020-06-18  9:37       ` Sergey Bronnikov
  0 siblings, 1 reply; 41+ messages in thread
From: Sergey Bronnikov @ 2020-06-11 12:01 UTC (permalink / raw)
  To: Vladislav Shpilevoy; +Cc: alexander.turenko, tarantool-patches

Hi,

thanks for review!

On 20:03 Sat 06 Jun , Vladislav Shpilevoy wrote:
> Thanks for the patch!
> 
> See 7 comments below.
> 
> On 04/06/2020 10:39, sergeyb@tarantool.org wrote:
> > From: Sergey Bronnikov <sergeyb@tarantool.org>
> > 
> > Part of #4681
> > 
> > Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> > Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> > ---
> >  .luacheckrc                     | 10 +++++--
> >  src/box/lua/console.lua         | 10 +++----
> >  src/box/lua/feedback_daemon.lua |  2 +-
> >  src/box/lua/key_def.lua         |  2 +-
> >  src/box/lua/load_cfg.lua        | 11 ++++---
> >  src/box/lua/net_box.lua         | 52 +++++++++++++--------------------
> >  src/box/lua/schema.lua          | 44 +++++++++++++---------------
> >  src/box/lua/tuple.lua           |  8 ++---
> >  src/box/lua/upgrade.lua         | 19 ++++++------
> >  9 files changed, 73 insertions(+), 85 deletions(-)
> > 
> > diff --git a/.luacheckrc b/.luacheckrc
> > index fb8b9dfb3..9fd017629 100644
> > --- a/.luacheckrc
> > +++ b/.luacheckrc
> > @@ -19,7 +20,7 @@ include_files = {
> >  
> >  exclude_files = {
> >      "build/**/*.lua",
> > -    "src/box/**/*.lua",
> > +    "src/box/lua/serpent.lua", -- third-party source code
> 
> 1. I see the comments are getting less and less strict in every new patch.
> Please, be consistent. Use a capital letter to start a sentence, and end it
> with dot.

Fixed.

> >      "test-run/**/*.lua",
> >      "test/**/*.lua",
> >      "third_party/**/*.lua",
> > diff --git a/src/box/lua/net_box.lua b/src/box/lua/net_box.lua
> > index 9560bfdd4..f71744014 100644
> > --- a/src/box/lua/net_box.lua
> > +++ b/src/box/lua/net_box.lua
> > @@ -187,7 +183,7 @@ local function next_id(id) return band(id + 1, 0x7FFFFFFF) end
> >  -- @retval two non-nils A connected socket and a decoded greeting.
> >  --
> >  local function establish_connection(host, port, timeout)
> > -    local timeout = timeout or DEFAULT_CONNECT_TIMEOUT
> > +    timeout = timeout or DEFAULT_CONNECT_TIMEOUT
> 
> 2. Unnecessary diff. I reverted this line and nothing changed.

change is required, see [1]

src/box/lua/net_box.lua:186:11: variable timeout was previously defined as an argument on line 185

1. https://gitlab.com/tarantool/tarantool/-/jobs/589857153

> >      local begin = fiber.clock()
> >      local s = socket.tcp_connect(host, port, timeout)
> >      if not s then
> > diff --git a/src/box/lua/schema.lua b/src/box/lua/schema.lua
> > index cdfbb65f7..4fe0ff8da 100644
> > --- a/src/box/lua/schema.lua
> > +++ b/src/box/lua/schema.lua
> > @@ -846,7 +844,7 @@ local function space_sequence_alter_prepare(format, parts, options,
> >              if id == nil then
> >                  box.error(box.error.NO_SUCH_SEQUENCE, new_sequence.id)
> >              end
> > -            local tuple = _space_sequence.index.sequence:select(id)[1]
> > +            tuple = _space_sequence.index.sequence:select(id)[1]
> 
> 3. Ditto.

change is reverted

> >              if tuple ~= nil and tuple.is_generated then
> >                  box.error(box.error.ALTER_SPACE, space_name,
> >                            "can not attach generated sequence")
> > @@ -2681,7 +2679,7 @@ box.once = function(key, func, ...)
> >          box.error(box.error.ILLEGAL_PARAMS, "Usage: box.once(key, func, ...)")
> >      end
> >  
> > -    local key = "once"..key
> > +    key = "once"..key
> 
> 4. Ditto.

change is reverted

> >      if box.space._schema:get{key} ~= nil then
> >          return
> >      end
> > diff --git a/src/box/lua/tuple.lua b/src/box/lua/tuple.lua
> > index f97aa1579..87f53258b 100644
> > --- a/src/box/lua/tuple.lua
> > +++ b/src/box/lua/tuple.lua
> > @@ -232,7 +230,7 @@ local function tuple_update(tuple, expr)
> >          error("Usage: tuple:update({ { op, field, arg}+ })")
> >      end
> >      local pexpr, pexpr_end = tuple_encode(expr)
> > -    local tuple = builtin.box_tuple_update(tuple, pexpr, pexpr_end)
> > +    tuple = builtin.box_tuple_update(tuple, pexpr, pexpr_end)
> 
> 5. Ditto.

change is required, see [1]

1. https://gitlab.com/tarantool/tarantool/-/jobs/589857153
> 
> >      if tuple == nil then
> >          return box.error()
> >      end
> > @@ -245,7 +243,7 @@ local function tuple_upsert(tuple, expr)
> >          error("Usage: tuple:upsert({ { op, field, arg}+ })")
> >      end
> >      local pexpr, pexpr_end = tuple_encode(expr)
> > -    local tuple = builtin.box_tuple_upsert(tuple, pexpr, pexpr_end)
> > +    tuple = builtin.box_tuple_upsert(tuple, pexpr, pexpr_end)
> 
> 6. Ditto.

change is required, see [1]

1. https://gitlab.com/tarantool/tarantool/-/jobs/589857153

> >      if tuple == nil then
> >          return box.error()
> >      end
> > diff --git a/src/box/lua/upgrade.lua b/src/box/lua/upgrade.lua
> > index 075cc236e..208b53f15 100644
> > --- a/src/box/lua/upgrade.lua
> > +++ b/src/box/lua/upgrade.lua
> > @@ -580,7 +579,7 @@ local function upgrade_to_2_1_0()
> >      -- Now, abscent field means NULL, so we can safely set second
> >      -- field in format, marking it nullable.
> >      log.info("Add nullable value field to space _schema")
> > -    local format = {}
> > +    format = {}
> 
> 7. Ditto.

change is reverted

> >      format[1] = {type='string', name='key'}
> >      format[2] = {type='any', name='value', is_nullable=true}
> >      box.space._schema:format(format)

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/
  2020-06-06 18:03   ` Vladislav Shpilevoy
  2020-06-11 12:00     ` Sergey Bronnikov
@ 2020-06-11 17:22     ` Igor Munkin
  1 sibling, 0 replies; 41+ messages in thread
From: Igor Munkin @ 2020-06-11 17:22 UTC (permalink / raw)
  To: Vladislav Shpilevoy; +Cc: tarantool-patches, alexander.turenko

Vlad,

Thanks for your review!

On 06.06.20, Vladislav Shpilevoy wrote:
> Thanks for the patch!
> 

<snipped>

> > diff --git a/.luacheckrc b/.luacheckrc
> > index b917eb927..fb8b9dfb3 100644
> > --- a/.luacheckrc
> > +++ b/.luacheckrc
> > @@ -1,9 +1,14 @@
> >  std = "luajit"
> >  globals = {"box", "_TARANTOOL"}
> >  ignore = {
> > -    "212/self", -- Unused argument <self>.
> > -    "411",      -- Redefining a local variable.
> > -    "431",      -- Shadowing an upvalue.
> > +    "143/debug",  -- Accessing an undefined field of a global variable <debug>.
> 
> 1. Why are global variables ignored sometimes using '143/<name>', sometimes
> via adding to the global 'globals', sometimes via the per-file 'globals'?
> 'debug', 'string', and 'table' are globals, available in all the sources,
> just like 'box'.

Historically, someone desided to spoil default Lua namespaces with
user-defined functions and auxiliary extensions. Thereby luacheck
reports about non-standart key lookups in these namespaces. There is
nothing bad in using these namespaces, so only this type of warnings is
suppressed for them.

On the other hand, such globals ad <box>, <_TARANTOOL>, and <tonumber64>
are Tarantool specific ones and it was decided to suppress them globally
since their usage is OK as well as <string>, <_VERSION> and <tonumber>
names provided by Lua.

> 

<snipped>

> 
> > +}> +files["src/lua/init.lua"] = {
> > +    globals = {"dostring"}, -- miscellaneous global function definition.
> > +    ignore = {
> > +        "122/os",      -- set tarantool specific behaviour for os.exit.
> > +        "142/package", -- add custom functions into Lua package namespace.
> 
> 4. os and package changes can be done using rawset() function. It does not
> produce a warning, and behaves in the above cases the same. However this
> should be consulted with other reviewers.
> 
> Another option - add 'os' and 'package' to the list of globals. It also fixes
> the warnings.

The issue is similar to the '143/string' suppression: several default
Lua namespaces need to be (re)defined and it's a single "violation"
reported by luacheck. So we can either fix it the way you proposed above
(but it look less readable for me), or just suppress it for this file.
Suppressing it globally relaxes the already not strict checks.

> 

<snipped>

> 
> > +    },
> > +}
> > +files["src/lua/swim.lua"] = {
> > +    ignore = {
> > +        "212/m", -- respect swim module code style.
> 
> 5. Once again I wonder why do we ignore unused arguments sometimes globaly in
> 'ignore = {...}', sometimes per-file like here, sometimes using inlined luacheck
> comments.
> 
> In this particular case there is even a fourth option - rename 'm' to 'self' in
> the single problematic line. Like you did for many similar places.

I just wanted to save the code style for the whole swim source file and
totally OK with such renaming if it doesn't bothers you.

> 

<snipped>

> > @@ -1319,7 +1319,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: no unused args
> 
> 10. Mode is really ignored, and this is not some kind of built-in
> function with 'fixed' signature. And it is not used 'virtually',
> when there is a variable keeping pointer at one function among
> many having the same signature. So what is a purpose of keeping it?

This *is* a function with the fixed signature[1], since this method
emulates LuaSocket API. This is the reason why the mode argument is
left.

> 

<snipped>


[1]: http://w3.impa.br/~diego/software/luasocket/tcp.html#settimeout

-- 
Best regards,
IM

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/
  2020-06-11 12:00     ` Sergey Bronnikov
@ 2020-06-11 19:52       ` Vladislav Shpilevoy
  2020-06-18  9:32         ` Sergey Bronnikov
  2020-06-18  9:35       ` Sergey Bronnikov
  1 sibling, 1 reply; 41+ messages in thread
From: Vladislav Shpilevoy @ 2020-06-11 19:52 UTC (permalink / raw)
  To: Sergey Bronnikov; +Cc: alexander.turenko, tarantool-patches

Thanks for the fixes!

>>> +    },
>>> +}
>>> diff --git a/src/lua/argparse.lua b/src/lua/argparse.lua
>>> index faa0ae130..6c8f10fc1 100644
>>> --- a/src/lua/argparse.lua
>>> +++ b/src/lua/argparse.lua
>>> @@ -91,7 +91,8 @@ local function convert_parameter(name, convert_from, convert_to)
>>>  end
>>>  
>>>  local function parameters_parse(t_in, options)
>>> -    local t_out, t_in = {}, t_in or {}
>>> +    local t_out = {}
>>> +    t_in = t_in or {}
>>
>> 6. Unnecessary diff. At least when I check on top of the branch.
> 
> change is required, see [1]
> 
> 1. https://gitlab.com/tarantool/tarantool/-/jobs/589857153

It reports error 412. It is suppressed globally in .luacheckrc. How
is it possible? I tried it locally, and the warning is not reported.

In the job I see that the .luacheck file is outdated - it does not
contain 412 suppression:
https://gitlab.com/tarantool/tarantool/-/blob/b435c7d040c7ce160d67afde270c336f1b91fddb/.luacheckrc

While on the branch in github the warning is suppressed.

So the diff is unnecessary, after all. Unless the github branch is
outdated.
https://github.com/tarantool/tarantool/blob/ligurio/gh-4681-fix-luacheck-warnings-src/.luacheckrc#L15

The same for all the other places, where you said the change is required.
In the other commits too.

>>>      local stop = fiber.clock() + timeout
>>>      local dns = getaddrinfo(host, port, timeout, { type = 'SOCK_STREAM',
>>>          protocol = 'tcp' })
>>> @@ -1319,7 +1319,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: no unused args
>>
>> 10. Mode is really ignored, and this is not some kind of built-in
>> function with 'fixed' signature. And it is not used 'virtually',
>> when there is a variable keeping pointer at one function among
>> many having the same signature. So what is a purpose of keeping it?
> 
> removed mode arg

Yeah, looks like it is needed, after all. Igor says, it conforms
to http://w3.impa.br/~diego/software/luasocket/tcp.html#settimeout
or whatever. Personally, I would remove it anyway. Because in our
sockets and in our code globally this argument is never needed,
and does not conform to anything.

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/
  2020-06-11 19:52       ` Vladislav Shpilevoy
@ 2020-06-18  9:32         ` Sergey Bronnikov
  0 siblings, 0 replies; 41+ messages in thread
From: Sergey Bronnikov @ 2020-06-18  9:32 UTC (permalink / raw)
  To: Vladislav Shpilevoy; +Cc: alexander.turenko, tarantool-patches

Hi,

On 21:52 Thu 11 Jun , Vladislav Shpilevoy wrote:
> Thanks for the fixes!
> 
> >>> +    },
> >>> +}
> >>> diff --git a/src/lua/argparse.lua b/src/lua/argparse.lua
> >>> index faa0ae130..6c8f10fc1 100644
> >>> --- a/src/lua/argparse.lua
> >>> +++ b/src/lua/argparse.lua
> >>> @@ -91,7 +91,8 @@ local function convert_parameter(name, convert_from, convert_to)
> >>>  end
> >>>  
> >>>  local function parameters_parse(t_in, options)
> >>> -    local t_out, t_in = {}, t_in or {}
> >>> +    local t_out = {}
> >>> +    t_in = t_in or {}
> >>
> >> 6. Unnecessary diff. At least when I check on top of the branch.
> > 
> > change is required, see [1]
> > 
> > 1. https://gitlab.com/tarantool/tarantool/-/jobs/589857153
> 
> It reports error 412. It is suppressed globally in .luacheckrc. How
> is it possible? I tried it locally, and the warning is not reported.

> In the job I see that the .luacheck file is outdated - it does not
> contain 412 suppression:
> https://gitlab.com/tarantool/tarantool/-/blob/b435c7d040c7ce160d67afde270c336f1b91fddb/.luacheckrc
> 
> While on the branch in github the warning is suppressed.
> 
> So the diff is unnecessary, after all. Unless the github branch is
> outdated.
> https://github.com/tarantool/tarantool/blob/ligurio/gh-4681-fix-luacheck-warnings-src/.luacheckrc#L15
> 
> The same for all the other places, where you said the change is required.
> In the other commits too.

I'm so sorry, I was wrong and all your suggested diffs have been applied.

> >>>      local stop = fiber.clock() + timeout
> >>>      local dns = getaddrinfo(host, port, timeout, { type = 'SOCK_STREAM',
> >>>          protocol = 'tcp' })
> >>> @@ -1319,7 +1319,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: no unused args
> >>
> >> 10. Mode is really ignored, and this is not some kind of built-in
> >> function with 'fixed' signature. And it is not used 'virtually',
> >> when there is a variable keeping pointer at one function among
> >> many having the same signature. So what is a purpose of keeping it?
> > 
> > removed mode arg
> 
> Yeah, looks like it is needed, after all. Igor says, it conforms
> to http://w3.impa.br/~diego/software/luasocket/tcp.html#settimeout
> or whatever. Personally, I would remove it anyway. Because in our
> sockets and in our code globally this argument is never needed,
> and does not conform to anything.

Well, kept it as is (with removed arg)

-- 
sergeyb@

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/
  2020-06-11 12:00     ` Sergey Bronnikov
  2020-06-11 19:52       ` Vladislav Shpilevoy
@ 2020-06-18  9:35       ` Sergey Bronnikov
  1 sibling, 0 replies; 41+ messages in thread
From: Sergey Bronnikov @ 2020-06-18  9:35 UTC (permalink / raw)
  To: Vladislav Shpilevoy; +Cc: alexander.turenko, tarantool-patches

Hi,

On 15:00 Thu 11 Jun , Sergey Bronnikov wrote:

<snipped>

> > > diff --git a/src/lua/argparse.lua b/src/lua/argparse.lua
> > > index faa0ae130..6c8f10fc1 100644
> > > --- a/src/lua/argparse.lua
> > > +++ b/src/lua/argparse.lua
> > > @@ -91,7 +91,8 @@ local function convert_parameter(name, convert_from, convert_to)
> > >  end
> > >  
> > >  local function parameters_parse(t_in, options)
> > > -    local t_out, t_in = {}, t_in or {}
> > > +    local t_out = {}
> > > +    t_in = t_in or {}
> > 
> > 6. Unnecessary diff. At least when I check on top of the branch.
> 
> change is required, see [1]
> 
> 1. https://gitlab.com/tarantool/tarantool/-/jobs/589857153

I was wrong here, change has been reverted.

> > > diff --git a/src/lua/init.lua b/src/lua/init.lua
> > > index ff3e74c3c..aea7a7491 100644
> > > --- a/src/lua/init.lua
> > > +++ b/src/lua/init.lua
> > > @@ -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
> > 
> > 7. Ditto.
> 
> change reverted
> > 
> > >          end
> > >  
> > > @@ -603,7 +599,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)
> > 
> > 8. Ditto.
> 
> change is required, see [1]
> 
> 1. https://gitlab.com/tarantool/tarantool/-/jobs/589857153

I was wrong here, change has been reverted.

> > >      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 bbdef01e3..2a2c7a32c 100644
> > > --- a/src/lua/socket.lua
> > > +++ b/src/lua/socket.lua
> > > @@ -1044,7 +1044,7 @@ local function tcp_connect(host, port, timeout)
> > >          boxerrno(0)
> > >          return s
> > >      end
> > > -    local timeout = timeout or TIMEOUT_INFINITY
> > > +    timeout = timeout or TIMEOUT_INFINITY
> > 
> > 9. Ditto.
> 
> change is required, see [1]
> 
> src/lua/socket.lua:344:11: variable timeout was previously defined as an argument on line 340
> 
> 1. https://gitlab.com/tarantool/tarantool/-/jobs/589857153

I was wrong here, change has been reverted.

<snipped>

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 6/6] Fix luacheck warnings in src/box/lua/
  2020-06-11 12:01     ` Sergey Bronnikov
@ 2020-06-18  9:37       ` Sergey Bronnikov
  0 siblings, 0 replies; 41+ messages in thread
From: Sergey Bronnikov @ 2020-06-18  9:37 UTC (permalink / raw)
  To: Vladislav Shpilevoy; +Cc: alexander.turenko, tarantool-patches

Hi,

On 15:01 Thu 11 Jun , Sergey Bronnikov wrote:

<snipped>

> > > diff --git a/src/box/lua/net_box.lua b/src/box/lua/net_box.lua
> > > index 9560bfdd4..f71744014 100644
> > > --- a/src/box/lua/net_box.lua
> > > +++ b/src/box/lua/net_box.lua
> > > @@ -187,7 +183,7 @@ local function next_id(id) return band(id + 1, 0x7FFFFFFF) end
> > >  -- @retval two non-nils A connected socket and a decoded greeting.
> > >  --
> > >  local function establish_connection(host, port, timeout)
> > > -    local timeout = timeout or DEFAULT_CONNECT_TIMEOUT
> > > +    timeout = timeout or DEFAULT_CONNECT_TIMEOUT
> > 
> > 2. Unnecessary diff. I reverted this line and nothing changed.
> 
> change is required, see [1]
> 
> src/box/lua/net_box.lua:186:11: variable timeout was previously defined as an argument on line 185
> 
> 1. https://gitlab.com/tarantool/tarantool/-/jobs/589857153

I was wrong here, change has been reverted.

<snipped>

> > > diff --git a/src/box/lua/tuple.lua b/src/box/lua/tuple.lua
> > > index f97aa1579..87f53258b 100644
> > > --- a/src/box/lua/tuple.lua
> > > +++ b/src/box/lua/tuple.lua
> > > @@ -232,7 +230,7 @@ local function tuple_update(tuple, expr)
> > >          error("Usage: tuple:update({ { op, field, arg}+ })")
> > >      end
> > >      local pexpr, pexpr_end = tuple_encode(expr)
> > > -    local tuple = builtin.box_tuple_update(tuple, pexpr, pexpr_end)
> > > +    tuple = builtin.box_tuple_update(tuple, pexpr, pexpr_end)
> > 
> > 5. Ditto.
> 
> change is required, see [1]
> 
> 1. https://gitlab.com/tarantool/tarantool/-/jobs/589857153

I was wrong here, change has been reverted.

> > >      if tuple == nil then
> > >          return box.error()
> > >      end
> > > @@ -245,7 +243,7 @@ local function tuple_upsert(tuple, expr)
> > >          error("Usage: tuple:upsert({ { op, field, arg}+ })")
> > >      end
> > >      local pexpr, pexpr_end = tuple_encode(expr)
> > > -    local tuple = builtin.box_tuple_upsert(tuple, pexpr, pexpr_end)
> > > +    tuple = builtin.box_tuple_upsert(tuple, pexpr, pexpr_end)
> > 
> > 6. Ditto.
> 
> change is required, see [1]
> 
> 1. https://gitlab.com/tarantool/tarantool/-/jobs/589857153

I was wrong here, change has been reverted.

<snipped>

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck
  2020-06-04  8:43 ` [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck Sergey Bronnikov
@ 2020-06-19 23:15   ` Vladislav Shpilevoy
  2020-07-13  9:53     ` Sergey Bronnikov
  0 siblings, 1 reply; 41+ messages in thread
From: Vladislav Shpilevoy @ 2020-06-19 23:15 UTC (permalink / raw)
  To: Sergey Bronnikov, tarantool-patches, imun; +Cc: alexander.turenko

Hi! Thanks for the fixes!

The check fails in gitlab:
https://gitlab.com/tarantool/tarantool/-/jobs/600867104

Also it fails locally:

	Checking src/lua/log.lua                          2 warnings

	    src/lua/log.lua:321:33: (W212) unused argument update_box_cfg
	    src/lua/log.lua:441:25: (W212) unused argument oldcfg

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 4/6] Fix luacheck warnings in extra/dist/
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 4/6] Fix luacheck warnings in extra/dist/ sergeyb
  2020-06-06 18:02   ` Vladislav Shpilevoy
@ 2020-06-19 23:15   ` Vladislav Shpilevoy
  2020-07-05 16:28     ` Vladislav Shpilevoy
  2020-07-13 10:01     ` Sergey Bronnikov
  1 sibling, 2 replies; 41+ messages in thread
From: Vladislav Shpilevoy @ 2020-06-19 23:15 UTC (permalink / raw)
  To: sergeyb, tarantool-patches, imun; +Cc: alexander.turenko

Thanks for the fixes!

See 6 comments below.

I see on the branch there is now a mess with commits.
Here is how this commit looks on the branch.

====================
>     Fix luacheck warnings in extra/dist/
>     
>     Part of #4681
>     
>     Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
>     Reviewed-by: Igor Munkin <imun@tarantool.org>
>     
>     Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
>     Co-authored-by: Igor Munkin <imun@tarantool.org>
> 
> diff --git a/.luacheckrc b/.luacheckrc
> index e6edf8617..90d6f7570 100644
> --- a/.luacheckrc
> +++ b/.luacheckrc
> @@ -1,16 +1,51 @@
>  std = "luajit"
> +globals = {"box", "_TARANTOOL"}
> +ignore = {
> +    -- Unused argument <self>.
> +    "212/self",
> +    -- Redefining a local variable.
> +    "411",
> +    -- Shadowing an upvalue.
> +    "431",
> +}
>  
>  include_files = {
>      "**/*.lua",
> +    "extra/dist/tarantoolctl.in",
>  }
>  
>  exclude_files = {
>      "build/**/*.lua",
> -    "extra/**/*.lua",
> -    "src/**/*.lua",
> +    "src/box/**/*.lua",

1. Why did you enable src/lua check, but didn't fix src/lua warnings
in this commit? Instead, there is a next commit which actually fixes
the warnings. What makes this commit not atomic, related not only to
extra/dist/. While you said in the title

    "Fix luacheck warnings in extra/dist/".

This patch didn't touch src/lua before. Why did you change it?

>      "test-run/**/*.lua",
>      "test/**/*.lua",
>      "third_party/**/*.lua",
>      ".rocks/**/*.lua",
>      ".git/**/*.lua",
>  }
> +
> +files["extra/dist/tarantoolctl.in"] = {
> +    ignore = {
> +        -- https://github.com/tarantool/tarantool/issues/4929
> +        "122",
> +    },
> +}
> +files["src/lua/help.lua"] = {
> +    -- Globals defined for interactive mode.
> +    globals = {"help", "tutorial"},
> +}
> +files["src/lua/init.lua"] = {
> +    -- Miscellaneous global function definition.
> +    globals = {"dostring"},
> +    ignore = {
> +        -- Set tarantool specific behaviour for os.exit.
> +        "122/os",
> +        -- Add custom functions into Lua package namespace.
> +        "142/package",
> +    },
> +}
> +files["src/lua/swim.lua"] = {
> +    ignore = {
> +        "212/m", -- Respect swim module code style.

2. I thought we already dropped this exception and replaced m with self.
Why is it back?

> +    },
> +}

Now look at the next commit:

>     Fix luacheck warnings in src/lua/
>     
>     Part of #4681
>     
>     Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
>     Reviewed-by: Igor Munkin <imun@tarantool.org>
>     
>     Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
>     Co-authored-by: Igor Munkin <imun@tarantool.org>
> 
> diff --git a/.luacheckrc b/.luacheckrc
> index 90d6f7570..ef3d30857 100644
> --- a/.luacheckrc
> +++ b/.luacheckrc
> @@ -1,12 +1,22 @@
>  std = "luajit"
> -globals = {"box", "_TARANTOOL"}
> +globals = {"box", "_TARANTOOL", "tonumber64"}
>  ignore = {
> +    -- Accessing an undefined field of a global variable <debug>.
> +    "143/debug",
> +    -- Accessing an undefined field of a global variable <string>.
> +    "143/string",
> +    -- Accessing an undefined field of a global variable <table>.
> +    "143/table",
>      -- Unused argument <self>.
>      "212/self",
>      -- Redefining a local variable.
>      "411",
> +    -- Shadowing a local variable.
> +    "421",
>      -- Shadowing an upvalue.
>      "431",
> +    -- Shadowing an upvalue argument.
> +    "432",
>  }
>  
>  include_files = {
> @@ -16,7 +26,8 @@ include_files = {
>  
>  exclude_files = {
>      "build/**/*.lua",
> -    "src/box/**/*.lua",
> +    -- Third-party source code.
> +    "src/box/lua/serpent.lua",

3. The commit says it fixes src/lua checks, but in fact

- src/lua checks were already enabled. Why were they enabled without
  having the warnings fixed?

- this commit enables src/box/lua checks. It does not seem
  related to src/lua things.

>      "test-run/**/*.lua",
>      "test/**/*.lua",
>      "third_party/**/*.lua",
> @@ -37,15 +48,10 @@ files["src/lua/help.lua"] = {
>  files["src/lua/init.lua"] = {
>      -- Miscellaneous global function definition.
>      globals = {"dostring"},
> -    ignore = {
> -        -- Set tarantool specific behaviour for os.exit.
> -        "122/os",
> -        -- Add custom functions into Lua package namespace.
> -        "142/package",
> -    },
>  }
> -files["src/lua/swim.lua"] = {
> +files["src/box/lua/console.lua"] = {
>      ignore = {
> -        "212/m", -- Respect swim module code style.
> -    },
> +        -- https://github.com/tarantool/tarantool/issues/5032
> +        "212",
> +    }
>  }

4. This hunk literally drops the code introduced in the previous
commit. Why did it change so radically? In the last review there
were just unnecessary diff hunks. And now the commits seem to be
completely screwed and mixed.

> diff --git a/src/lua/socket.lua b/src/lua/socket.lua
> index bbdef01e3..a0e8faf38 100644
> --- a/src/lua/socket.lua
> +++ b/src/lua/socket.lua
> @@ -341,7 +341,7 @@ local function do_wait(self, what, timeout)
>      local fd = check_socket(self)
>  
>      self._errno = nil
> -    timeout = timeout or TIMEOUT_INFINITY
> +    local timeout = timeout or TIMEOUT_INFINITY

5. You said you reverted it, but it is still here.

>  
>      repeat
>          local started = fiber.clock()
> @@ -1044,7 +1044,7 @@ local function tcp_connect(host, port, timeout)
>          boxerrno(0)
>          return s
>      end
> -    local timeout = timeout or TIMEOUT_INFINITY
> +    timeout = timeout or TIMEOUT_INFINITY

6. Ditto.

I want to kindly ask you to spend more time on self-reviews
before sending a patch. Otherwise it consumes lots of time
when I need to point out the same things again and again.

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 6/6] Fix luacheck warnings in src/box/lua/
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 6/6] Fix luacheck warnings in src/box/lua/ sergeyb
  2020-06-06 18:03   ` Vladislav Shpilevoy
@ 2020-06-19 23:15   ` Vladislav Shpilevoy
  2020-07-01 14:02     ` Sergey Bronnikov
  2020-07-13 22:59   ` Vladislav Shpilevoy
  2 siblings, 1 reply; 41+ messages in thread
From: Vladislav Shpilevoy @ 2020-06-19 23:15 UTC (permalink / raw)
  To: sergeyb, tarantool-patches, imun; +Cc: alexander.turenko

> diff --git a/src/box/lua/schema.lua b/src/box/lua/schema.lua
> index e6844b45f..c104dd9c7 100644
> --- a/src/box/lua/schema.lua
> +++ b/src/box/lua/schema.lua
> @@ -1555,7 +1553,7 @@ end
>  
>  base_index_mt.select_luac = function(index, key, opts)
>      check_index_arg(index, 'select')
> -    local key = keify(key)
> +    key = keify(key)

Unnecessary diff.

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 6/6] Fix luacheck warnings in src/box/lua/
  2020-06-19 23:15   ` Vladislav Shpilevoy
@ 2020-07-01 14:02     ` Sergey Bronnikov
  0 siblings, 0 replies; 41+ messages in thread
From: Sergey Bronnikov @ 2020-07-01 14:02 UTC (permalink / raw)
  To: Vladislav Shpilevoy; +Cc: alexander.turenko, tarantool-patches

On 01:15 Sat 20 Jun , Vladislav Shpilevoy wrote:
> > diff --git a/src/box/lua/schema.lua b/src/box/lua/schema.lua
> > index e6844b45f..c104dd9c7 100644
> > --- a/src/box/lua/schema.lua
> > +++ b/src/box/lua/schema.lua
> > @@ -1555,7 +1553,7 @@ end
> >  
> >  base_index_mt.select_luac = function(index, key, opts)
> >      check_index_arg(index, 'select')
> > -    local key = keify(key)
> > +    key = keify(key)
> 
> Unnecessary diff.
> 

Reverted in a branch

-- 
sergeyb@

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 4/6] Fix luacheck warnings in extra/dist/
  2020-06-19 23:15   ` Vladislav Shpilevoy
@ 2020-07-05 16:28     ` Vladislav Shpilevoy
  2020-07-12 15:37       ` Vladislav Shpilevoy
  2020-07-13 10:01     ` Sergey Bronnikov
  1 sibling, 1 reply; 41+ messages in thread
From: Vladislav Shpilevoy @ 2020-07-05 16:28 UTC (permalink / raw)
  To: sergeyb, tarantool-patches, imun; +Cc: alexander.turenko

I see you made a small fix in one of the commits about
unnecessary diff. However there is still a mess with the
commits. So can't give LGTM yet.

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/ sergeyb
  2020-06-06 18:03   ` Vladislav Shpilevoy
@ 2020-07-05 16:28   ` Vladislav Shpilevoy
  2020-07-10 16:55     ` Sergey Bronnikov
  2020-07-13 22:59   ` Vladislav Shpilevoy
  2 siblings, 1 reply; 41+ messages in thread
From: Vladislav Shpilevoy @ 2020-07-05 16:28 UTC (permalink / raw)
  To: sergeyb, tarantool-patches, imun; +Cc: alexander.turenko

> diff --git a/src/lua/msgpackffi.lua b/src/lua/msgpackffi.lua
> index f01ffaef0..cb7ad5b88 100644
> --- a/src/lua/msgpackffi.lua
> +++ b/src/lua/msgpackffi.lua
> @@ -603,7 +599,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)

Unnecessary diff.

>      if offset < 1 or offset > len then
>          error(string.format("offset = %d is out of bounds [1..%d]",
>              tonumber(offset), len))

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/
  2020-07-05 16:28   ` Vladislav Shpilevoy
@ 2020-07-10 16:55     ` Sergey Bronnikov
  2020-07-12 15:37       ` Vladislav Shpilevoy
  0 siblings, 1 reply; 41+ messages in thread
From: Sergey Bronnikov @ 2020-07-10 16:55 UTC (permalink / raw)
  To: Vladislav Shpilevoy; +Cc: alexander.turenko, tarantool-patches

On 18:28 Sun 05 Jul , Vladislav Shpilevoy wrote:
> > diff --git a/src/lua/msgpackffi.lua b/src/lua/msgpackffi.lua
> > index f01ffaef0..cb7ad5b88 100644
> > --- a/src/lua/msgpackffi.lua
> > +++ b/src/lua/msgpackffi.lua
> > @@ -603,7 +599,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)
> 
> Unnecessary diff.

Reverted in a branch.

> >      if offset < 1 or offset > len then
> >          error(string.format("offset = %d is out of bounds [1..%d]",
> >              tonumber(offset), len))

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 4/6] Fix luacheck warnings in extra/dist/
  2020-07-05 16:28     ` Vladislav Shpilevoy
@ 2020-07-12 15:37       ` Vladislav Shpilevoy
  0 siblings, 0 replies; 41+ messages in thread
From: Vladislav Shpilevoy @ 2020-07-12 15:37 UTC (permalink / raw)
  To: sergeyb, tarantool-patches, imun; +Cc: alexander.turenko

When we talked last time, you said you probably fixed it already
on the branch, and I could forget to make git reset --hard origin/,
but I just checked - nothing is fixed on the branch.

On 05.07.2020 18:28, Vladislav Shpilevoy wrote:
> I see you made a small fix in one of the commits about
> unnecessary diff. However there is still a mess with the
> commits. So can't give LGTM yet.

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/
  2020-07-10 16:55     ` Sergey Bronnikov
@ 2020-07-12 15:37       ` Vladislav Shpilevoy
  2020-07-13  9:51         ` Sergey Bronnikov
  0 siblings, 1 reply; 41+ messages in thread
From: Vladislav Shpilevoy @ 2020-07-12 15:37 UTC (permalink / raw)
  To: Sergey Bronnikov; +Cc: alexander.turenko, tarantool-patches

On 10.07.2020 18:55, Sergey Bronnikov wrote:
> On 18:28 Sun 05 Jul , Vladislav Shpilevoy wrote:
>>> diff --git a/src/lua/msgpackffi.lua b/src/lua/msgpackffi.lua
>>> index f01ffaef0..cb7ad5b88 100644
>>> --- a/src/lua/msgpackffi.lua
>>> +++ b/src/lua/msgpackffi.lua
>>> @@ -603,7 +599,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)
>>
>> Unnecessary diff.
> 
> Reverted in a branch.
> 
>>>      if offset < 1 or offset > len then
>>>          error(string.format("offset = %d is out of bounds [1..%d]",
>>>              tonumber(offset), len))

Looks like it is not. I still see it on the branch.
https://github.com/tarantool/tarantool/blob/ligurio/gh-4681-fix-luacheck-warnings-src/src/lua/msgpackffi.lua#L602

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/
  2020-07-12 15:37       ` Vladislav Shpilevoy
@ 2020-07-13  9:51         ` Sergey Bronnikov
  0 siblings, 0 replies; 41+ messages in thread
From: Sergey Bronnikov @ 2020-07-13  9:51 UTC (permalink / raw)
  To: Vladislav Shpilevoy; +Cc: alexander.turenko, tarantool-patches

On 17:37 Sun 12 Jul , Vladislav Shpilevoy wrote:
> On 10.07.2020 18:55, Sergey Bronnikov wrote:
> > On 18:28 Sun 05 Jul , Vladislav Shpilevoy wrote:
> >>> diff --git a/src/lua/msgpackffi.lua b/src/lua/msgpackffi.lua
> >>> index f01ffaef0..cb7ad5b88 100644
> >>> --- a/src/lua/msgpackffi.lua
> >>> +++ b/src/lua/msgpackffi.lua
> >>> @@ -603,7 +599,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)
> >>
> >> Unnecessary diff.
> > 
> > Reverted in a branch.
> > 
> >>>      if offset < 1 or offset > len then
> >>>          error(string.format("offset = %d is out of bounds [1..%d]",
> >>>              tonumber(offset), len))
> 
> Looks like it is not. I still see it on the branch.
> https://github.com/tarantool/tarantool/blob/ligurio/gh-4681-fix-luacheck-warnings-src/src/lua/msgpackffi.lua#L602

It was not, because branch was not pushed to remote.
Now fix is in a remote branch:

local function check_offset(offset, len)
    if offset == nil then
        return 1
    end
    local 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))
    end
    return offset
end

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck
  2020-06-19 23:15   ` Vladislav Shpilevoy
@ 2020-07-13  9:53     ` Sergey Bronnikov
  0 siblings, 0 replies; 41+ messages in thread
From: Sergey Bronnikov @ 2020-07-13  9:53 UTC (permalink / raw)
  To: Vladislav Shpilevoy; +Cc: alexander.turenko, tarantool-patches

On 01:15 Sat 20 Jun , Vladislav Shpilevoy wrote:
> Hi! Thanks for the fixes!
> 
> The check fails in gitlab:
> https://gitlab.com/tarantool/tarantool/-/jobs/600867104

This time there were problems with cleanup on CI,
AFAIK they fixed now.
CI status for updated branch - https://gitlab.com/tarantool/tarantool/-/pipelines/165870175

> Also it fails locally:
> 
> 	Checking src/lua/log.lua                          2 warnings
> 
> 	    src/lua/log.lua:321:33: (W212) unused argument update_box_cfg
> 	    src/lua/log.lua:441:25: (W212) unused argument oldcfg

--
sergeyb@

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 4/6] Fix luacheck warnings in extra/dist/
  2020-06-19 23:15   ` Vladislav Shpilevoy
  2020-07-05 16:28     ` Vladislav Shpilevoy
@ 2020-07-13 10:01     ` Sergey Bronnikov
  1 sibling, 0 replies; 41+ messages in thread
From: Sergey Bronnikov @ 2020-07-13 10:01 UTC (permalink / raw)
  To: Vladislav Shpilevoy; +Cc: alexander.turenko, tarantool-patches

Thanks for review!

On 01:15 Sat 20 Jun , Vladislav Shpilevoy wrote:
> Thanks for the fixes!
> 
> See 6 comments below.
> 
> I see on the branch there is now a mess with commits.
> Here is how this commit looks on the branch.
> 
> ====================
> >     Fix luacheck warnings in extra/dist/
> >     
> >     Part of #4681
> >     
> >     Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> >     Reviewed-by: Igor Munkin <imun@tarantool.org>
> >     
> >     Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> >     Co-authored-by: Igor Munkin <imun@tarantool.org>
> > 
> > diff --git a/.luacheckrc b/.luacheckrc
> > index e6edf8617..90d6f7570 100644
> > --- a/.luacheckrc
> > +++ b/.luacheckrc
> > @@ -1,16 +1,51 @@
> >  std = "luajit"
> > +globals = {"box", "_TARANTOOL"}
> > +ignore = {
> > +    -- Unused argument <self>.
> > +    "212/self",
> > +    -- Redefining a local variable.
> > +    "411",
> > +    -- Shadowing an upvalue.
> > +    "431",
> > +}
> >  
> >  include_files = {
> >      "**/*.lua",
> > +    "extra/dist/tarantoolctl.in",
> >  }
> >  
> >  exclude_files = {
> >      "build/**/*.lua",
> > -    "extra/**/*.lua",
> > -    "src/**/*.lua",
> > +    "src/box/**/*.lua",
> 
> 1. Why did you enable src/lua check, but didn't fix src/lua warnings
> in this commit? Instead, there is a next commit which actually fixes
> the warnings. What makes this commit not atomic, related not only to
> extra/dist/. While you said in the title
> 
>     "Fix luacheck warnings in extra/dist/".
> 
> This patch didn't touch src/lua before. Why did you change it?

It is a mess due to inaccurate rebase. Fixed it in a branch.

> >      "test-run/**/*.lua",
> >      "test/**/*.lua",
> >      "third_party/**/*.lua",
> >      ".rocks/**/*.lua",
> >      ".git/**/*.lua",
> >  }
> > +
> > +files["extra/dist/tarantoolctl.in"] = {
> > +    ignore = {
> > +        -- https://github.com/tarantool/tarantool/issues/4929
> > +        "122",
> > +    },
> > +}
> > +files["src/lua/help.lua"] = {
> > +    -- Globals defined for interactive mode.
> > +    globals = {"help", "tutorial"},
> > +}
> > +files["src/lua/init.lua"] = {
> > +    -- Miscellaneous global function definition.
> > +    globals = {"dostring"},
> > +    ignore = {
> > +        -- Set tarantool specific behaviour for os.exit.
> > +        "122/os",
> > +        -- Add custom functions into Lua package namespace.
> > +        "142/package",
> > +    },
> > +}
> > +files["src/lua/swim.lua"] = {
> > +    ignore = {
> > +        "212/m", -- Respect swim module code style.
> 
> 2. I thought we already dropped this exception and replaced m with self.
> Why is it back?

I see only one reason - due to inaccurate rebase.

> > +    },
> > +}
> 
> Now look at the next commit:
> 
> >     Fix luacheck warnings in src/lua/
> >     
> >     Part of #4681
> >     
> >     Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> >     Reviewed-by: Igor Munkin <imun@tarantool.org>
> >     
> >     Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
> >     Co-authored-by: Igor Munkin <imun@tarantool.org>
> > 
> > diff --git a/.luacheckrc b/.luacheckrc
> > index 90d6f7570..ef3d30857 100644
> > --- a/.luacheckrc
> > +++ b/.luacheckrc
> > @@ -1,12 +1,22 @@
> >  std = "luajit"
> > -globals = {"box", "_TARANTOOL"}
> > +globals = {"box", "_TARANTOOL", "tonumber64"}
> >  ignore = {
> > +    -- Accessing an undefined field of a global variable <debug>.
> > +    "143/debug",
> > +    -- Accessing an undefined field of a global variable <string>.
> > +    "143/string",
> > +    -- Accessing an undefined field of a global variable <table>.
> > +    "143/table",
> >      -- Unused argument <self>.
> >      "212/self",
> >      -- Redefining a local variable.
> >      "411",
> > +    -- Shadowing a local variable.
> > +    "421",
> >      -- Shadowing an upvalue.
> >      "431",
> > +    -- Shadowing an upvalue argument.
> > +    "432",
> >  }
> >  
> >  include_files = {
> > @@ -16,7 +26,8 @@ include_files = {
> >  
> >  exclude_files = {
> >      "build/**/*.lua",
> > -    "src/box/**/*.lua",
> > +    -- Third-party source code.
> > +    "src/box/lua/serpent.lua",
> 
> 3. The commit says it fixes src/lua checks, but in fact
> 
> - src/lua checks were already enabled. Why were they enabled without
>   having the warnings fixed?
> 
> - this commit enables src/box/lua checks. It does not seem
>   related to src/lua things.
> 
> >      "test-run/**/*.lua",
> >      "test/**/*.lua",
> >      "third_party/**/*.lua",
> > @@ -37,15 +48,10 @@ files["src/lua/help.lua"] = {
> >  files["src/lua/init.lua"] = {
> >      -- Miscellaneous global function definition.
> >      globals = {"dostring"},
> > -    ignore = {
> > -        -- Set tarantool specific behaviour for os.exit.
> > -        "122/os",
> > -        -- Add custom functions into Lua package namespace.
> > -        "142/package",
> > -    },
> >  }
> > -files["src/lua/swim.lua"] = {
> > +files["src/box/lua/console.lua"] = {
> >      ignore = {
> > -        "212/m", -- Respect swim module code style.
> > -    },
> > +        -- https://github.com/tarantool/tarantool/issues/5032
> > +        "212",
> > +    }
> >  }
> 
> 4. This hunk literally drops the code introduced in the previous
> commit. Why did it change so radically? In the last review there
> were just unnecessary diff hunks. And now the commits seem to be
> completely screwed and mixed.

I have looked on patches again and made them atomic.
Each patch introduce only changes required by this patch.

> > diff --git a/src/lua/socket.lua b/src/lua/socket.lua
> > index bbdef01e3..a0e8faf38 100644
> > --- a/src/lua/socket.lua
> > +++ b/src/lua/socket.lua
> > @@ -341,7 +341,7 @@ local function do_wait(self, what, timeout)
> >      local fd = check_socket(self)
> >  
> >      self._errno = nil
> > -    timeout = timeout or TIMEOUT_INFINITY
> > +    local timeout = timeout or TIMEOUT_INFINITY
> 
> 5. You said you reverted it, but it is still here.

reverted in a branch and pushed to remote:

local function do_wait(self, what, timeout)
    local fd = check_socket(self)

    self._errno = nil
    timeout = timeout or TIMEOUT_INFINITY

    repeat

> >  
> >      repeat
> >          local started = fiber.clock()
> > @@ -1044,7 +1044,7 @@ local function tcp_connect(host, port, timeout)
> >          boxerrno(0)
> >          return s
> >      end
> > -    local timeout = timeout or TIMEOUT_INFINITY
> > +    timeout = timeout or TIMEOUT_INFINITY
> 
> 6. Ditto.

        return s
    end
    local timeout = timeout or TIMEOUT_INFINITY
    local stop = fiber.clock() + timeout
    local dns = getaddrinfo(host, port, timeout, { type = 'SOCK_STREAM',
        protocol = 'tcp' })
    if dns == nil or #dns == 0 then
        boxerrno(boxerrno.EINVAL)
        return nil

> I want to kindly ask you to spend more time on self-reviews
> before sending a patch. Otherwise it consumes lots of time
> when I need to point out the same things again and again.

This time I spend more time on self-review before sending updated patches.  I
have applied changes suggested by you in a comments, self-reviewed changes in
each patch, run "luacheck ." after applying each patch.

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/ sergeyb
  2020-06-06 18:03   ` Vladislav Shpilevoy
  2020-07-05 16:28   ` Vladislav Shpilevoy
@ 2020-07-13 22:59   ` Vladislav Shpilevoy
  2 siblings, 0 replies; 41+ messages in thread
From: Vladislav Shpilevoy @ 2020-07-13 22:59 UTC (permalink / raw)
  To: sergeyb, tarantool-patches, imun; +Cc: alexander.turenko

Hi! Thanks for the fixes!

I've force pushed the following changes:

====================
diff --git a/src/lua/fio.lua b/src/lua/fio.lua
index b31311b7b..954c44cdf 100644
--- a/src/lua/fio.lua
+++ b/src/lua/fio.lua
@@ -378,7 +378,7 @@ fio.mktree = function(path, mode)
     end
     path = fio.abspath(path)
 
-    path = string.gsub(path, '^/', '')
+    local path = string.gsub(path, '^/', '')
====================

As I pointed out already, all kinds of redefinition warnings
were disabled. No need to touch them.

====================
     local dirs = string.split(path, "/")
 
     local current_dir = "/"
diff --git a/src/lua/init.lua b/src/lua/init.lua
index 280ecc03f..9e3c813c3 100644
--- a/src/lua/init.lua
+++ b/src/lua/init.lua
@@ -80,7 +80,7 @@ dostring = function(s, ...)
 end
 
 local fiber = require("fiber")
-local exit = function(code)
+local function exit(code)
====================

Easier to grep, and just looks more natural.

====================
     code = (type(code) == 'number') and code or 0
     ffi.C.tarantool_exit(code)
     -- Make sure we yield even if the code after
diff --git a/src/lua/log.lua b/src/lua/log.lua
index bf0e4283c..cfd83f592 100644
--- a/src/lua/log.lua
+++ b/src/lua/log.lua
@@ -459,7 +459,7 @@ local function reload_cfg(cfg)
 end
 
 -- Load or reload configuration via log.cfg({}) call.
-local function load_cfg(oldcf, cfg) -- luacheck: no unused args
+local function load_cfg(self, cfg)
====================

The function is a __call method of the configuration table.
So the first argument is always self. And it is legal to
rename it. Also this is preferable since we force 'self' as
a special name in our luacheck config.

====================
     cfg = cfg or {}
 
     -- log option might be zero length string, which

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 6/6] Fix luacheck warnings in src/box/lua/
  2020-06-04  8:39 ` [Tarantool-patches] [PATCH 6/6] Fix luacheck warnings in src/box/lua/ sergeyb
  2020-06-06 18:03   ` Vladislav Shpilevoy
  2020-06-19 23:15   ` Vladislav Shpilevoy
@ 2020-07-13 22:59   ` Vladislav Shpilevoy
  2020-07-14 10:54     ` Sergey Bronnikov
  2 siblings, 1 reply; 41+ messages in thread
From: Vladislav Shpilevoy @ 2020-07-13 22:59 UTC (permalink / raw)
  To: sergeyb, tarantool-patches, imun; +Cc: alexander.turenko

Thanks for the fixes!

I force pushed the following change:

====================
diff --git a/src/box/lua/net_box.lua b/src/box/lua/net_box.lua
index 7256bd0a3..1d3c474d5 100644
--- a/src/box/lua/net_box.lua
+++ b/src/box/lua/net_box.lua
@@ -915,7 +915,7 @@ end
 -- Now it is necessary to have a strong ref to callback somewhere or
 -- it is GC-ed prematurely. We wrap stop() method, stashing the
 -- ref in an upvalue (stop() performance doesn't matter much.)
-local create_transport = function(host, port, user, password, callback, -- luacheck: ignore
+local create_transport = function(host, port, user, password, callback,
                                   connection, greeting)
     local weak_refs = setmetatable({callback = callback}, {__mode = 'v'})
     local function weak_callback(...)

====================

But what I don't understand is why this commit does not close 4681?
What is left?

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 6/6] Fix luacheck warnings in src/box/lua/
  2020-07-13 22:59   ` Vladislav Shpilevoy
@ 2020-07-14 10:54     ` Sergey Bronnikov
  2020-07-14 11:24       ` Sergey Bronnikov
  0 siblings, 1 reply; 41+ messages in thread
From: Sergey Bronnikov @ 2020-07-14 10:54 UTC (permalink / raw)
  To: Vladislav Shpilevoy; +Cc: alexander.turenko, tarantool-patches

On 00:59 Tue 14 Jul , Vladislav Shpilevoy wrote:
> Thanks for the fixes!
> 
<snipped>
> But what I don't understand is why this commit does not close 4681?
> What is left?

Earlier we decided to split patch series for {extra,src} and test/.
So there is another patch series for Lua source code in test/.

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 6/6] Fix luacheck warnings in src/box/lua/
  2020-07-14 10:54     ` Sergey Bronnikov
@ 2020-07-14 11:24       ` Sergey Bronnikov
  0 siblings, 0 replies; 41+ messages in thread
From: Sergey Bronnikov @ 2020-07-14 11:24 UTC (permalink / raw)
  To: Vladislav Shpilevoy; +Cc: tarantool-patches, alexander.turenko

On 13:54 Tue 14 Jul , Sergey Bronnikov wrote:
> On 00:59 Tue 14 Jul , Vladislav Shpilevoy wrote:
> > Thanks for the fixes!
> > 
> <snipped>
> > But what I don't understand is why this commit does not close 4681?
> > What is left?
> 
> Earlier we decided to split patch series for {extra,src} and test/.
> So there is another patch series for Lua source code in test/.

See patch series for test/ in [1]. As soon as we will commit patch
series for {extra,src} I'll resent updated patch series for test/.

1. https://lists.tarantool.org/pipermail/tarantool-patches/2020-May/017237.html

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck
  2020-06-04  8:39 [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck sergeyb
                   ` (8 preceding siblings ...)
  2020-06-04 11:17 ` Sergey Bronnikov
@ 2020-07-14 22:49 ` Vladislav Shpilevoy
  2020-07-15  9:51 ` Kirill Yukhin
  10 siblings, 0 replies; 41+ messages in thread
From: Vladislav Shpilevoy @ 2020-07-14 22:49 UTC (permalink / raw)
  To: sergeyb, tarantool-patches, imun; +Cc: alexander.turenko

The patchset LGTM.

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck
  2020-06-04  8:39 [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck sergeyb
                   ` (9 preceding siblings ...)
  2020-07-14 22:49 ` Vladislav Shpilevoy
@ 2020-07-15  9:51 ` Kirill Yukhin
  10 siblings, 0 replies; 41+ messages in thread
From: Kirill Yukhin @ 2020-07-15  9:51 UTC (permalink / raw)
  To: sergeyb; +Cc: alexander.turenko, tarantool-patches, v.shpilevoy

Hello,

On 04 июн 11:39, sergeyb@tarantool.org wrote:
> From: Sergey Bronnikov <sergeyb@tarantool.org>
> 
> Sergey Bronnikov (6):
>   Add initial luacheck config
>   build: enable 'make luacheck' target
>   gitlab-ci: enable static analysis with luacheck
>   Fix luacheck warnings in extra/dist/
>   Fix luacheck warnings in src/lua/
>   Fix luacheck warnings in src/box/lua/

I've checked the patchset into master.

--
Regards, Kirill Yukhin

^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2020-07-15  9:51 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-04  8:39 [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck sergeyb
2020-06-04  8:39 ` [Tarantool-patches] [PATCH 1/6] Add initial luacheck config sergeyb
2020-06-06 18:02   ` Vladislav Shpilevoy
2020-06-09 16:16     ` Sergey Bronnikov
2020-06-04  8:39 ` [Tarantool-patches] [PATCH 2/6] build: enable 'make luacheck' target sergeyb
2020-06-04  8:39 ` [Tarantool-patches] [PATCH 3/6] gitlab-ci: enable static analysis with luacheck sergeyb
2020-06-04  8:39 ` [Tarantool-patches] [PATCH 4/6] Fix luacheck warnings in extra/dist/ sergeyb
2020-06-06 18:02   ` Vladislav Shpilevoy
2020-06-09 16:17     ` Sergey Bronnikov
2020-06-19 23:15   ` Vladislav Shpilevoy
2020-07-05 16:28     ` Vladislav Shpilevoy
2020-07-12 15:37       ` Vladislav Shpilevoy
2020-07-13 10:01     ` Sergey Bronnikov
2020-06-04  8:39 ` [Tarantool-patches] [PATCH 5/6] Fix luacheck warnings in src/lua/ sergeyb
2020-06-06 18:03   ` Vladislav Shpilevoy
2020-06-11 12:00     ` Sergey Bronnikov
2020-06-11 19:52       ` Vladislav Shpilevoy
2020-06-18  9:32         ` Sergey Bronnikov
2020-06-18  9:35       ` Sergey Bronnikov
2020-06-11 17:22     ` Igor Munkin
2020-07-05 16:28   ` Vladislav Shpilevoy
2020-07-10 16:55     ` Sergey Bronnikov
2020-07-12 15:37       ` Vladislav Shpilevoy
2020-07-13  9:51         ` Sergey Bronnikov
2020-07-13 22:59   ` Vladislav Shpilevoy
2020-06-04  8:39 ` [Tarantool-patches] [PATCH 6/6] Fix luacheck warnings in src/box/lua/ sergeyb
2020-06-06 18:03   ` Vladislav Shpilevoy
2020-06-11 12:01     ` Sergey Bronnikov
2020-06-18  9:37       ` Sergey Bronnikov
2020-06-19 23:15   ` Vladislav Shpilevoy
2020-07-01 14:02     ` Sergey Bronnikov
2020-07-13 22:59   ` Vladislav Shpilevoy
2020-07-14 10:54     ` Sergey Bronnikov
2020-07-14 11:24       ` Sergey Bronnikov
2020-06-04  8:43 ` [Tarantool-patches] [PATCH 0/6] Add static analysis of Lua code in src/ and extra/ with luacheck Sergey Bronnikov
2020-06-19 23:15   ` Vladislav Shpilevoy
2020-07-13  9:53     ` Sergey Bronnikov
2020-06-04  9:04 ` Igor Munkin
2020-06-04 11:17 ` Sergey Bronnikov
2020-07-14 22:49 ` Vladislav Shpilevoy
2020-07-15  9:51 ` Kirill Yukhin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox