Browse Source

Strengthen lint target

zrythm_meson
David Robillard 2 years ago
parent
commit
d4d9b96070
  1. 16
      .clang-tidy
  2. 62
      wscript

16
.clang-tidy

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
Checks: >
*,
-*-magic-numbers,
-*-narrowing-conversions,
-*-uppercase-literal-suffix,
-bugprone-branch-clone,
-bugprone-suspicious-string-compare,
-cert-err34-c,
-clang-analyzer-unix.Malloc,
-cppcoreguidelines-init-variables,
-hicpp-signed-bitwise,
-llvm-header-guard,
-readability-else-after-return,
WarningsAsErrors: '*'
HeaderFilterRegex: '.*'
FormatStyle: file

62
wscript

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
#!/usr/bin/env python
from waflib import Logs, Options
from waflib import Build, Logs, Options
from waflib.extras import autowaf
# Library and package version (UNIX style major, minor, micro)
@ -41,6 +41,12 @@ def configure(conf): @@ -41,6 +41,12 @@ def configure(conf):
if not conf.env.BUILD_SHARED and not conf.env.BUILD_STATIC:
conf.fatal('Neither a shared nor a static build requested')
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': [
@ -178,14 +184,52 @@ def test(tst): @@ -178,14 +184,52 @@ def test(tst):
check(['./sratom_test'])
class LintContext(Build.BuildContext):
fun = cmd = 'lint'
def lint(ctx):
"checks code for style issues"
import glob
import os
import subprocess
cmd = ("clang-tidy -p=. -header-filter=.* -checks=\"*," +
"-bugprone-suspicious-string-compare," +
"-clang-analyzer-alpha.*," +
"-hicpp-signed-bitwise," +
"-llvm-header-guard," +
"-readability-else-after-return\" " +
"$(find .. -name '*.c')")
subprocess.call(cmd, cwd='build', shell=True)
import sys
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('src/*.c') + glob.glob('tests/*.c')
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")
if st != 0:
sys.exit(st)

Loading…
Cancel
Save