Browse Source

Strengthen lint target

zrythm_meson
David Robillard 2 years ago
parent
commit
4d4222c583
  1. 17
      .clang-tidy
  2. 63
      wscript

17
.clang-tidy

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
Checks: >
*,
-*-magic-numbers,
-*-narrowing-conversions,
-*-uppercase-literal-suffix,
-bugprone-macro-parentheses,
-clang-analyzer-valist.Unterminated,
-clang-diagnostic-empty-translation-unit,
-clang-diagnostic-unused-function,
-clang-diagnostic-unused-macros,
-cppcoreguidelines-init-variables,
-hicpp-signed-bitwise,
-llvm-header-guard,
-readability-else-after-return,
WarningsAsErrors: '*'
HeaderFilterRegex: '.*'
FormatStyle: file

63
wscript

@ -4,7 +4,7 @@ import os @@ -4,7 +4,7 @@ import os
import re
import sys
from waflib import Context, Logs, Options, Scripting, Utils
from waflib import Build, Context, Logs, Options, Scripting, Utils
from waflib.extras import autowaf as autowaf
# Mandatory waf variables
@ -83,6 +83,12 @@ def configure(conf): @@ -83,6 +83,12 @@ def configure(conf):
conf.load('autowaf', cache=True)
autowaf.set_c_lang(conf, 'c99')
if Options.options.strict:
# Check for programs used by lint target
conf.find_program("flake8", var="FLAKE8", mandatory=False)
conf.find_program("clang-tidy", var="CLANG_TIDY", mandatory=False)
conf.find_program("iwyu_tool", var="IWYU_TOOL", mandatory=False)
if Options.options.ultra_strict:
autowaf.add_compiler_flags(conf.env, 'c', {
'gcc': [
@ -534,22 +540,53 @@ def build(bld): @@ -534,22 +540,53 @@ def build(bld):
bld.recurse('plugins')
class LintContext(Build.BuildContext):
fun = cmd = 'lint'
def lint(ctx):
"checks code for style issues"
import subprocess
import glob
st = 0
if "FLAKE8" in ctx.env:
Logs.info("Running flake8")
st = subprocess.call([ctx.env.FLAKE8[0],
"wscript",
"--ignore",
"E101,E129,W191,E221,W504,E251,E241,E741"])
else:
Logs.warn("Not running flake8")
if "IWYU_TOOL" in ctx.env:
Logs.info("Running include-what-you-use")
cmd = [ctx.env.IWYU_TOOL[0], "-o", "clang", "-p", "build"]
output = subprocess.check_output(cmd).decode('utf-8')
if 'error: ' in output:
sys.stdout.write(output)
st += 1
else:
Logs.warn("Not running include-what-you-use")
if "CLANG_TIDY" in ctx.env and "clang" in ctx.env.CC[0]:
Logs.info("Running clang-tidy")
sources = glob.glob('**/*.h', recursive=True)
sources = list(map(os.path.abspath, sources))
procs = []
for source in sources:
cmd = [ctx.env.CLANG_TIDY[0], "--quiet", "-p=.", source]
procs += [subprocess.Popen(cmd, cwd="build")]
for proc in procs:
stdout, stderr = proc.communicate()
st += proc.returncode
else:
Logs.warn("Not running clang-tidy")
subprocess.call("flake8 --ignore E101,E129,W191,E221,W504,E251,E241,E741 "
"wscript lv2specgen/lv2docgen.py lv2specgen/lv2specgen.py "
"plugins/literasc.py",
shell=True)
cmd = ("clang-tidy -p=. -header-filter=.* -checks=\"*," +
"-hicpp-signed-bitwise," +
"-llvm-header-guard," +
"-misc-unused-parameters," +
"-readability-else-after-return\" " +
"build-test.c")
subprocess.call(cmd, cwd='build', shell=True)
if st != 0:
sys.exit(st)
def test_vocabularies(check, specs, files):

Loading…
Cancel
Save