CheckBasicStyle: Can check individual files or git commits.
This commit is contained in:
parent
81274b6ee9
commit
a762e8a54a
@ -266,14 +266,113 @@ end
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--- Array of files to process. Filled from cmdline arguments
|
||||||
|
local ToProcess = {}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--- Handlers for the command-line arguments
|
||||||
|
-- Maps flag => function
|
||||||
|
local CmdLineHandlers =
|
||||||
|
{
|
||||||
|
-- "-f file" checks the specified file
|
||||||
|
["-f"] = function (a_Args, a_Idx)
|
||||||
|
local fnam = a_Args[a_Idx + 1]
|
||||||
|
if not(fnam) then
|
||||||
|
error("Invalid flag: '-f' needs a filename following it.")
|
||||||
|
end
|
||||||
|
table.insert(ToProcess, fnam)
|
||||||
|
return a_Idx + 2 -- skip the filename in param parsing
|
||||||
|
end,
|
||||||
|
|
||||||
|
-- "-g" checks files reported by git as being committed.
|
||||||
|
["-g"] = function (a_Args, a_Idx)
|
||||||
|
local f = io.popen("git diff --cached --name-only --diff-filter=ACMR")
|
||||||
|
for fnam in f:lines() do
|
||||||
|
table.insert(ToProcess, fnam)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
|
||||||
|
-- "-h" prints help and exits
|
||||||
|
["-h"] = function (a_Args, a_Idx)
|
||||||
|
print([[
|
||||||
|
Usage:")
|
||||||
|
"CheckBasicStyle [<options>]
|
||||||
|
|
||||||
|
Available options:
|
||||||
|
-f <filename> - checks the specified filename
|
||||||
|
-g - checks files reported by Git as being committed
|
||||||
|
-h - prints this help and exits
|
||||||
|
-l <listfile> - checks all files listed in the specified listfile
|
||||||
|
-- - reads the list of files to check from stdin
|
||||||
|
|
||||||
|
When no options are given, the script checks all files listed in the AllFiles.lst file.
|
||||||
|
|
||||||
|
Only .cpp and .h files are ever checked.
|
||||||
|
]])
|
||||||
|
os.exit(0)
|
||||||
|
end,
|
||||||
|
|
||||||
|
-- "-l listfile" loads the list of files to check from the specified listfile
|
||||||
|
["-l"] = function (a_Args, a_Idx)
|
||||||
|
local listFile = a_Args[a_Idx + 1]
|
||||||
|
if not(listFile) then
|
||||||
|
error("Invalid flag: '-l' needs a filename following it.")
|
||||||
|
end
|
||||||
|
for fnam in io.lines(listFile) do
|
||||||
|
table.insert(ToProcess, fnam)
|
||||||
|
end
|
||||||
|
return a_Idx + 2 -- Skip the listfile in param parsing
|
||||||
|
end,
|
||||||
|
|
||||||
|
-- "--" reads the list of files from stdin
|
||||||
|
["--"] = function (a_Args, a_Idx)
|
||||||
|
for fnam in io.lines() do
|
||||||
|
table.insert(ToProcess, fnam)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Remove buffering from stdout, so that the output appears immediately in IDEs:
|
-- Remove buffering from stdout, so that the output appears immediately in IDEs:
|
||||||
io.stdout:setvbuf("no")
|
io.stdout:setvbuf("no")
|
||||||
|
|
||||||
-- Process all files in the AllFiles.lst file (generated by cmake):
|
-- Parse the cmdline arguments to see what files to check:
|
||||||
for fnam in io.lines("AllFiles.lst") do
|
local idx = 1
|
||||||
|
while (arg[idx]) do
|
||||||
|
local handler = CmdLineHandlers[arg[idx]]
|
||||||
|
if not(handler) then
|
||||||
|
error("Unknown command-line argument #" .. idx .. ": " .. arg[idx])
|
||||||
|
end
|
||||||
|
idx = handler(arg, idx) or (idx + 1) -- Call the handler, let it change the next index if it wants
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- By default process all files in the AllFiles.lst file (generated by cmake):
|
||||||
|
if not(arg[1]) then
|
||||||
|
for fnam in io.lines("AllFiles.lst") do
|
||||||
|
table.insert(ToProcess, fnam)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Process the files in the list:
|
||||||
|
for _, fnam in ipairs(ToProcess) do
|
||||||
ProcessItem(fnam)
|
ProcessItem(fnam)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Report final verdict:
|
-- Report final verdict:
|
||||||
print("Number of violations found: " .. g_NumViolations)
|
print("Number of violations found: " .. g_NumViolations)
|
||||||
if (g_NumViolations > 0) then
|
if (g_NumViolations > 0) then
|
||||||
|
Loading…
Reference in New Issue
Block a user