cppcheck: integrete cppcheck
In order for cppcheck to perform a proper analysis it needs to be aware of how the sources are compiled (source files, include paths/files, extra defines, etc). All the needed information is available from the Makefiles and can be leveraged with a generic cppcheck Makefile target. So let's add one. Additional minor changes: * Removing the cppcheck-suppressions.txt file. With cppcheck 2.3 and these changes it appears to no longer be needed. Some inline suppressions were also removed since they appear not to be needed. We can add them back if it turns out they're needed for older versions of cppcheck. * Added the ax_count_cpus m4 macro to detect at configure time how many processors are available in order to run multiple cppcheck jobs. This value is also now used as a replacement for nproc when executing the kernel interface checks. * "PHONY =" line moved in to the Rules.am file which is included at the top of all Makefile.am's. This is just convenient becase it allows us to use the += syntax to add phony targets. * One upside of this integration worth mentioning is it now allows `make cppcheck` to be run in any directory to check that subtree. * For the moment, cppcheck is not run against the FreeBSD specific kernel sources. The cppcheck-FreeBSD target will need to be implemented and testing on FreeBSD to support this. Reviewed-by: Ryan Moeller <ryan@ixsystems.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #11508
This commit is contained in:
parent
a06ba74a1e
commit
0e6c493fec
13
Makefile.am
13
Makefile.am
|
@ -25,7 +25,6 @@ endif
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = foreign
|
AUTOMAKE_OPTIONS = foreign
|
||||||
EXTRA_DIST = autogen.sh copy-builtin
|
EXTRA_DIST = autogen.sh copy-builtin
|
||||||
EXTRA_DIST += cppcheck-suppressions.txt
|
|
||||||
EXTRA_DIST += config/config.awk config/rpm.am config/deb.am config/tgz.am
|
EXTRA_DIST += config/config.awk config/rpm.am config/deb.am config/tgz.am
|
||||||
EXTRA_DIST += META AUTHORS COPYRIGHT LICENSE NEWS NOTICE README.md
|
EXTRA_DIST += META AUTHORS COPYRIGHT LICENSE NEWS NOTICE README.md
|
||||||
EXTRA_DIST += CODE_OF_CONDUCT.md
|
EXTRA_DIST += CODE_OF_CONDUCT.md
|
||||||
|
@ -204,13 +203,13 @@ vcscheck:
|
||||||
PHONY += lint
|
PHONY += lint
|
||||||
lint: cppcheck paxcheck
|
lint: cppcheck paxcheck
|
||||||
|
|
||||||
|
CPPCHECKDIRS = cmd lib module
|
||||||
PHONY += cppcheck
|
PHONY += cppcheck
|
||||||
cppcheck:
|
cppcheck: $(CPPCHECKDIRS)
|
||||||
@if type cppcheck > /dev/null 2>&1; then \
|
@if test -n "$(CPPCHECK)"; then \
|
||||||
cppcheck --quiet --force --error-exitcode=2 --inline-suppr \
|
set -e ; for dir in $(CPPCHECKDIRS) ; do \
|
||||||
--suppressions-list=${top_srcdir}/cppcheck-suppressions.txt \
|
$(MAKE) -C $$dir cppcheck ; \
|
||||||
-UHAVE_SSE2 -UHAVE_AVX512F -UHAVE_UIO_ZEROCOPY \
|
done \
|
||||||
${top_srcdir}; \
|
|
||||||
else \
|
else \
|
||||||
echo "skipping cppcheck because cppcheck is not installed"; \
|
echo "skipping cppcheck because cppcheck is not installed"; \
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -2,10 +2,20 @@ SUBDIRS = zfs zpool zdb zhack zinject zstream zstreamdump ztest
|
||||||
SUBDIRS += fsck_zfs vdev_id raidz_test zfs_ids_to_path
|
SUBDIRS += fsck_zfs vdev_id raidz_test zfs_ids_to_path
|
||||||
SUBDIRS += zpool_influxdb
|
SUBDIRS += zpool_influxdb
|
||||||
|
|
||||||
|
CPPCHECKDIRS = zfs zpool zdb zhack zinject zstream ztest
|
||||||
|
CPPCHECKDIRS += raidz_test zfs_ids_to_path zpool_influxdb
|
||||||
|
|
||||||
if USING_PYTHON
|
if USING_PYTHON
|
||||||
SUBDIRS += arcstat arc_summary dbufstat
|
SUBDIRS += arcstat arc_summary dbufstat
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if BUILD_LINUX
|
if BUILD_LINUX
|
||||||
SUBDIRS += mount_zfs zed zgenhostid zvol_id zvol_wait
|
SUBDIRS += mount_zfs zed zgenhostid zvol_id zvol_wait
|
||||||
|
CPPCHECKDIRS += mount_zfs zed zgenhostid zvol_id
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
PHONY = cppcheck
|
||||||
|
cppcheck: $(CPPCHECKDIRS)
|
||||||
|
set -e ; for dir in $(CPPCHECKDIRS) ; do \
|
||||||
|
$(MAKE) -C $$dir cppcheck ; \
|
||||||
|
done
|
||||||
|
|
|
@ -18,3 +18,5 @@ mount_zfs_LDADD = \
|
||||||
$(abs_top_builddir)/lib/libnvpair/libnvpair.la
|
$(abs_top_builddir)/lib/libnvpair/libnvpair.la
|
||||||
|
|
||||||
mount_zfs_LDADD += $(LTLIBINTL)
|
mount_zfs_LDADD += $(LTLIBINTL)
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -18,3 +18,5 @@ raidz_test_LDADD = \
|
||||||
$(abs_top_builddir)/lib/libzfs_core/libzfs_core.la
|
$(abs_top_builddir)/lib/libzfs_core/libzfs_core.la
|
||||||
|
|
||||||
raidz_test_LDADD += -lm
|
raidz_test_LDADD += -lm
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -14,3 +14,5 @@ zdb_LDADD = \
|
||||||
$(abs_top_builddir)/lib/libzpool/libzpool.la \
|
$(abs_top_builddir)/lib/libzpool/libzpool.la \
|
||||||
$(abs_top_builddir)/lib/libzfs_core/libzfs_core.la \
|
$(abs_top_builddir)/lib/libzfs_core/libzfs_core.la \
|
||||||
$(abs_top_builddir)/lib/libnvpair/libnvpair.la
|
$(abs_top_builddir)/lib/libnvpair/libnvpair.la
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -47,3 +47,5 @@ zed_LDADD += -lrt $(LIBUDEV_LIBS) $(LIBUUID_LIBS)
|
||||||
zed_LDFLAGS = -pthread
|
zed_LDFLAGS = -pthread
|
||||||
|
|
||||||
EXTRA_DIST = agents/README.md
|
EXTRA_DIST = agents/README.md
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -21,3 +21,5 @@ zfs_LDADD += $(LTLIBINTL)
|
||||||
if BUILD_FREEBSD
|
if BUILD_FREEBSD
|
||||||
zfs_LDADD += -lgeom -ljail
|
zfs_LDADD += -lgeom -ljail
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -7,3 +7,5 @@ zfs_ids_to_path_SOURCES = \
|
||||||
|
|
||||||
zfs_ids_to_path_LDADD = \
|
zfs_ids_to_path_LDADD = \
|
||||||
$(abs_top_builddir)/lib/libzfs/libzfs.la
|
$(abs_top_builddir)/lib/libzfs/libzfs.la
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -3,3 +3,5 @@ include $(top_srcdir)/config/Rules.am
|
||||||
sbin_PROGRAMS = zgenhostid
|
sbin_PROGRAMS = zgenhostid
|
||||||
|
|
||||||
zgenhostid_SOURCES = zgenhostid.c
|
zgenhostid_SOURCES = zgenhostid.c
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -12,3 +12,5 @@ zhack_LDADD = \
|
||||||
$(abs_top_builddir)/lib/libzpool/libzpool.la \
|
$(abs_top_builddir)/lib/libzpool/libzpool.la \
|
||||||
$(abs_top_builddir)/lib/libzfs_core/libzfs_core.la \
|
$(abs_top_builddir)/lib/libzfs_core/libzfs_core.la \
|
||||||
$(abs_top_builddir)/lib/libnvpair/libnvpair.la
|
$(abs_top_builddir)/lib/libnvpair/libnvpair.la
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -11,3 +11,5 @@ zinject_LDADD = \
|
||||||
$(abs_top_builddir)/lib/libzfs/libzfs.la \
|
$(abs_top_builddir)/lib/libzfs/libzfs.la \
|
||||||
$(abs_top_builddir)/lib/libzfs_core/libzfs_core.la \
|
$(abs_top_builddir)/lib/libzfs_core/libzfs_core.la \
|
||||||
$(abs_top_builddir)/lib/libnvpair/libnvpair.la
|
$(abs_top_builddir)/lib/libnvpair/libnvpair.la
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -34,6 +34,8 @@ zpool_LDADD += -lgeom
|
||||||
endif
|
endif
|
||||||
zpool_LDADD += -lm $(LIBBLKID_LIBS) $(LIBUUID_LIBS)
|
zpool_LDADD += -lm $(LIBBLKID_LIBS) $(LIBUUID_LIBS)
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
||||||
zpoolconfdir = $(sysconfdir)/zfs/zpool.d
|
zpoolconfdir = $(sysconfdir)/zfs/zpool.d
|
||||||
zpoolexecdir = $(zfsexecdir)/zpool.d
|
zpoolexecdir = $(zfsexecdir)/zpool.d
|
||||||
|
|
||||||
|
|
|
@ -9,3 +9,5 @@ zpool_influxdb_LDADD = \
|
||||||
$(top_builddir)/lib/libspl/libspl.la \
|
$(top_builddir)/lib/libspl/libspl.la \
|
||||||
$(top_builddir)/lib/libnvpair/libnvpair.la \
|
$(top_builddir)/lib/libnvpair/libnvpair.la \
|
||||||
$(top_builddir)/lib/libzfs/libzfs.la
|
$(top_builddir)/lib/libzfs/libzfs.la
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -13,3 +13,5 @@ zstream_LDADD = \
|
||||||
$(abs_top_builddir)/lib/libzfs/libzfs.la \
|
$(abs_top_builddir)/lib/libzfs/libzfs.la \
|
||||||
$(abs_top_builddir)/lib/libzfs_core/libzfs_core.la \
|
$(abs_top_builddir)/lib/libzfs_core/libzfs_core.la \
|
||||||
$(abs_top_builddir)/lib/libnvpair/libnvpair.la
|
$(abs_top_builddir)/lib/libnvpair/libnvpair.la
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -21,3 +21,5 @@ ztest_LDADD = \
|
||||||
|
|
||||||
ztest_LDADD += -lm
|
ztest_LDADD += -lm
|
||||||
ztest_LDFLAGS = -pthread
|
ztest_LDFLAGS = -pthread
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -8,3 +8,5 @@ udev_PROGRAMS = zvol_id
|
||||||
|
|
||||||
zvol_id_SOURCES = \
|
zvol_id_SOURCES = \
|
||||||
zvol_id_main.c
|
zvol_id_main.c
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
#
|
||||||
|
# Default rules for running cppcheck against the the user space components.
|
||||||
|
#
|
||||||
|
|
||||||
|
PHONY += cppcheck
|
||||||
|
|
||||||
|
CPPCHECKFLAGS = --std=c99 --quiet --max-configs=1 --error-exitcode=2
|
||||||
|
CPPCHECKFLAGS += --inline-suppr -U_KERNEL
|
||||||
|
|
||||||
|
cppcheck:
|
||||||
|
$(CPPCHECK) -j$(CPU_COUNT) $(CPPCHECKFLAGS) $(DEFAULT_INCLUDES) $(SOURCES)
|
|
@ -3,6 +3,7 @@
|
||||||
# should include these rules and override or extend them as needed.
|
# should include these rules and override or extend them as needed.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
PHONY =
|
||||||
DEFAULT_INCLUDES = \
|
DEFAULT_INCLUDES = \
|
||||||
-include $(top_builddir)/zfs_config.h \
|
-include $(top_builddir)/zfs_config.h \
|
||||||
-I$(top_builddir)/include \
|
-I$(top_builddir)/include \
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
dnl #
|
||||||
|
dnl # Check if cppcheck is available.
|
||||||
|
dnl #
|
||||||
|
AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CPPCHECK], [
|
||||||
|
AC_CHECK_PROG([CPPCHECK], [cppcheck], [cppcheck])
|
||||||
|
])
|
|
@ -0,0 +1,101 @@
|
||||||
|
# ===========================================================================
|
||||||
|
# https://www.gnu.org/software/autoconf-archive/ax_count_cpus.html
|
||||||
|
# ===========================================================================
|
||||||
|
#
|
||||||
|
# SYNOPSIS
|
||||||
|
#
|
||||||
|
# AX_COUNT_CPUS([ACTION-IF-DETECTED],[ACTION-IF-NOT-DETECTED])
|
||||||
|
#
|
||||||
|
# DESCRIPTION
|
||||||
|
#
|
||||||
|
# Attempt to count the number of logical processor cores (including
|
||||||
|
# virtual and HT cores) currently available to use on the machine and
|
||||||
|
# place detected value in CPU_COUNT variable.
|
||||||
|
#
|
||||||
|
# On successful detection, ACTION-IF-DETECTED is executed if present. If
|
||||||
|
# the detection fails, then ACTION-IF-NOT-DETECTED is triggered. The
|
||||||
|
# default ACTION-IF-NOT-DETECTED is to set CPU_COUNT to 1.
|
||||||
|
#
|
||||||
|
# LICENSE
|
||||||
|
#
|
||||||
|
# Copyright (c) 2014,2016 Karlson2k (Evgeny Grin) <k2k@narod.ru>
|
||||||
|
# Copyright (c) 2012 Brian Aker <brian@tangent.org>
|
||||||
|
# Copyright (c) 2008 Michael Paul Bailey <jinxidoru@byu.net>
|
||||||
|
# Copyright (c) 2008 Christophe Tournayre <turn3r@users.sourceforge.net>
|
||||||
|
#
|
||||||
|
# Copying and distribution of this file, with or without modification, are
|
||||||
|
# permitted in any medium without royalty provided the copyright notice
|
||||||
|
# and this notice are preserved. This file is offered as-is, without any
|
||||||
|
# warranty.
|
||||||
|
|
||||||
|
#serial 22
|
||||||
|
|
||||||
|
AC_DEFUN([AX_COUNT_CPUS],[dnl
|
||||||
|
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||||
|
AC_REQUIRE([AC_PROG_EGREP])dnl
|
||||||
|
AC_MSG_CHECKING([the number of available CPUs])
|
||||||
|
CPU_COUNT="0"
|
||||||
|
|
||||||
|
# Try generic methods
|
||||||
|
|
||||||
|
# 'getconf' is POSIX utility, but '_NPROCESSORS_ONLN' and
|
||||||
|
# 'NPROCESSORS_ONLN' are platform-specific
|
||||||
|
command -v getconf >/dev/null 2>&1 && \
|
||||||
|
CPU_COUNT=`getconf _NPROCESSORS_ONLN 2>/dev/null || getconf NPROCESSORS_ONLN 2>/dev/null` || CPU_COUNT="0"
|
||||||
|
AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null || ! command -v nproc >/dev/null 2>&1]],[[: # empty]],[dnl
|
||||||
|
# 'nproc' is part of GNU Coreutils and is widely available
|
||||||
|
CPU_COUNT=`OMP_NUM_THREADS='' nproc 2>/dev/null` || CPU_COUNT=`nproc 2>/dev/null` || CPU_COUNT="0"
|
||||||
|
])dnl
|
||||||
|
|
||||||
|
AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null]],[[: # empty]],[dnl
|
||||||
|
# Try platform-specific preferred methods
|
||||||
|
AS_CASE([[$host_os]],dnl
|
||||||
|
[[*linux*]],[[CPU_COUNT=`lscpu -p 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+,' -c` || CPU_COUNT="0"]],dnl
|
||||||
|
[[*darwin*]],[[CPU_COUNT=`sysctl -n hw.logicalcpu 2>/dev/null` || CPU_COUNT="0"]],dnl
|
||||||
|
[[freebsd*]],[[command -v sysctl >/dev/null 2>&1 && CPU_COUNT=`sysctl -n kern.smp.cpus 2>/dev/null` || CPU_COUNT="0"]],dnl
|
||||||
|
[[netbsd*]], [[command -v sysctl >/dev/null 2>&1 && CPU_COUNT=`sysctl -n hw.ncpuonline 2>/dev/null` || CPU_COUNT="0"]],dnl
|
||||||
|
[[solaris*]],[[command -v psrinfo >/dev/null 2>&1 && CPU_COUNT=`psrinfo 2>/dev/null | $EGREP -e '^@<:@0-9@:>@.*on-line' -c 2>/dev/null` || CPU_COUNT="0"]],dnl
|
||||||
|
[[mingw*]],[[CPU_COUNT=`ls -qpU1 /proc/registry/HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System/CentralProcessor/ 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+/' -c` || CPU_COUNT="0"]],dnl
|
||||||
|
[[msys*]],[[CPU_COUNT=`ls -qpU1 /proc/registry/HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System/CentralProcessor/ 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+/' -c` || CPU_COUNT="0"]],dnl
|
||||||
|
[[cygwin*]],[[CPU_COUNT=`ls -qpU1 /proc/registry/HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System/CentralProcessor/ 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+/' -c` || CPU_COUNT="0"]]dnl
|
||||||
|
)dnl
|
||||||
|
])dnl
|
||||||
|
|
||||||
|
AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null || ! command -v sysctl >/dev/null 2>&1]],[[: # empty]],[dnl
|
||||||
|
# Try less preferred generic method
|
||||||
|
# 'hw.ncpu' exist on many platforms, but not on GNU/Linux
|
||||||
|
CPU_COUNT=`sysctl -n hw.ncpu 2>/dev/null` || CPU_COUNT="0"
|
||||||
|
])dnl
|
||||||
|
|
||||||
|
AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null]],[[: # empty]],[dnl
|
||||||
|
# Try platform-specific fallback methods
|
||||||
|
# They can be less accurate and slower then preferred methods
|
||||||
|
AS_CASE([[$host_os]],dnl
|
||||||
|
[[*linux*]],[[CPU_COUNT=`$EGREP -e '^processor' -c /proc/cpuinfo 2>/dev/null` || CPU_COUNT="0"]],dnl
|
||||||
|
[[*darwin*]],[[CPU_COUNT=`system_profiler SPHardwareDataType 2>/dev/null | $EGREP -i -e 'number of cores:'|cut -d : -f 2 -s|tr -d ' '` || CPU_COUNT="0"]],dnl
|
||||||
|
[[freebsd*]],[[CPU_COUNT=`dmesg 2>/dev/null| $EGREP -e '^cpu@<:@0-9@:>@+: '|sort -u|$EGREP -e '^' -c` || CPU_COUNT="0"]],dnl
|
||||||
|
[[netbsd*]], [[CPU_COUNT=`command -v cpuctl >/dev/null 2>&1 && cpuctl list 2>/dev/null| $EGREP -e '^@<:@0-9@:>@+ .* online ' -c` || \
|
||||||
|
CPU_COUNT=`dmesg 2>/dev/null| $EGREP -e '^cpu@<:@0-9@:>@+ at'|sort -u|$EGREP -e '^' -c` || CPU_COUNT="0"]],dnl
|
||||||
|
[[solaris*]],[[command -v kstat >/dev/null 2>&1 && CPU_COUNT=`kstat -m cpu_info -s state -p 2>/dev/null | $EGREP -c -e 'on-line'` || \
|
||||||
|
CPU_COUNT=`kstat -m cpu_info 2>/dev/null | $EGREP -c -e 'module: cpu_info'` || CPU_COUNT="0"]],dnl
|
||||||
|
[[mingw*]],[AS_IF([[CPU_COUNT=`reg query 'HKLM\\Hardware\\Description\\System\\CentralProcessor' 2>/dev/null | $EGREP -e '\\\\@<:@0-9@:>@+$' -c`]],dnl
|
||||||
|
[[: # empty]],[[test "$NUMBER_OF_PROCESSORS" -gt "0" 2>/dev/null && CPU_COUNT="$NUMBER_OF_PROCESSORS"]])],dnl
|
||||||
|
[[msys*]],[[test "$NUMBER_OF_PROCESSORS" -gt "0" 2>/dev/null && CPU_COUNT="$NUMBER_OF_PROCESSORS"]],dnl
|
||||||
|
[[cygwin*]],[[test "$NUMBER_OF_PROCESSORS" -gt "0" 2>/dev/null && CPU_COUNT="$NUMBER_OF_PROCESSORS"]]dnl
|
||||||
|
)dnl
|
||||||
|
])dnl
|
||||||
|
|
||||||
|
AS_IF([[test "x$CPU_COUNT" != "x0" && test "$CPU_COUNT" -gt 0 2>/dev/null]],[dnl
|
||||||
|
AC_MSG_RESULT([[$CPU_COUNT]])
|
||||||
|
m4_ifvaln([$1],[$1],)dnl
|
||||||
|
],[dnl
|
||||||
|
m4_ifval([$2],[dnl
|
||||||
|
AS_UNSET([[CPU_COUNT]])
|
||||||
|
AC_MSG_RESULT([[unable to detect]])
|
||||||
|
$2
|
||||||
|
], [dnl
|
||||||
|
CPU_COUNT="1"
|
||||||
|
AC_MSG_RESULT([[unable to detect (assuming 1)]])
|
||||||
|
])dnl
|
||||||
|
])dnl
|
||||||
|
])dnl
|
|
@ -153,6 +153,9 @@ AC_DEFUN([ZFS_AC_DEBUG_KMEM_TRACKING], [
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [
|
AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [
|
||||||
|
AX_COUNT_CPUS([])
|
||||||
|
AC_SUBST(CPU_COUNT)
|
||||||
|
|
||||||
ZFS_AC_CONFIG_ALWAYS_CC_NO_UNUSED_BUT_SET_VARIABLE
|
ZFS_AC_CONFIG_ALWAYS_CC_NO_UNUSED_BUT_SET_VARIABLE
|
||||||
ZFS_AC_CONFIG_ALWAYS_CC_NO_BOOL_COMPARE
|
ZFS_AC_CONFIG_ALWAYS_CC_NO_BOOL_COMPARE
|
||||||
ZFS_AC_CONFIG_ALWAYS_CC_FRAME_LARGER_THAN
|
ZFS_AC_CONFIG_ALWAYS_CC_FRAME_LARGER_THAN
|
||||||
|
@ -167,6 +170,7 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [
|
||||||
ZFS_AC_CONFIG_ALWAYS_PYTHON
|
ZFS_AC_CONFIG_ALWAYS_PYTHON
|
||||||
ZFS_AC_CONFIG_ALWAYS_PYZFS
|
ZFS_AC_CONFIG_ALWAYS_PYZFS
|
||||||
ZFS_AC_CONFIG_ALWAYS_SED
|
ZFS_AC_CONFIG_ALWAYS_SED
|
||||||
|
ZFS_AC_CONFIG_ALWAYS_CPPCHECK
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_DEFUN([ZFS_AC_CONFIG], [
|
AC_DEFUN([ZFS_AC_CONFIG], [
|
||||||
|
@ -191,12 +195,10 @@ AC_DEFUN([ZFS_AC_CONFIG], [
|
||||||
|
|
||||||
ZFS_AC_CONFIG_ALWAYS
|
ZFS_AC_CONFIG_ALWAYS
|
||||||
|
|
||||||
|
|
||||||
AM_COND_IF([BUILD_LINUX], [
|
AM_COND_IF([BUILD_LINUX], [
|
||||||
AC_ARG_VAR([TEST_JOBS],
|
AC_ARG_VAR([TEST_JOBS], [simultaneous jobs during configure])
|
||||||
[simultaneous jobs during configure (defaults to $(nproc))])
|
|
||||||
if test "x$ac_cv_env_TEST_JOBS_set" != "xset"; then
|
if test "x$ac_cv_env_TEST_JOBS_set" != "xset"; then
|
||||||
TEST_JOBS=$(nproc)
|
TEST_JOBS=$CPU_COUNT
|
||||||
fi
|
fi
|
||||||
AC_SUBST(TEST_JOBS)
|
AC_SUBST(TEST_JOBS)
|
||||||
])
|
])
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
preprocessorErrorDirective:./module/zfs/vdev_raidz_math_avx512f.c:243
|
|
||||||
preprocessorErrorDirective:./module/zfs/vdev_raidz_math_sse2.c:266
|
|
||||||
uninitvar:module/os/freebsd/zfs/vdev_geom.c
|
|
||||||
uninitvar:module/os/freebsd/zfs/zfs_vfsops.c
|
|
||||||
uninitvar:module/os/freebsd/spl/spl_zone.c
|
|
||||||
uninitvar:lib/libzutil/os/freebsd/zutil_import_os.c
|
|
||||||
*:module/zstd/lib/zstd.c
|
|
||||||
*:module/zstd/lib/zstd.h
|
|
|
@ -1,9 +1,12 @@
|
||||||
# NB: GNU Automake Manual, Chapter 8.3.5: Libtool Convenience Libraries
|
# NB: GNU Automake Manual, Chapter 8.3.5: Libtool Convenience Libraries
|
||||||
# These nine libraries are intermediary build components.
|
# These nine libraries are intermediary build components.
|
||||||
SUBDIRS = libavl libicp libshare libspl libtpool libzstd
|
SUBDIRS = libavl libicp libshare libspl libtpool libzstd
|
||||||
|
CPPCHECKDIRS = libavl libicp libnvpair libshare libspl libtpool libunicode
|
||||||
|
CPPCHECKDIRS += libuutil libzfs libzfs_core libzfsbootenv libzpool libzutil
|
||||||
|
|
||||||
if BUILD_LINUX
|
if BUILD_LINUX
|
||||||
SUBDIRS += libefi
|
SUBDIRS += libefi
|
||||||
|
CPPCHECKDIRS += libefi
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# libnvpair is installed as part of the final build product
|
# libnvpair is installed as part of the final build product
|
||||||
|
@ -23,7 +26,7 @@ DISTLIBS += libnvpair
|
||||||
# is only linked against by ztest and zdb and no stable ABI is provided.
|
# is only linked against by ztest and zdb and no stable ABI is provided.
|
||||||
ABILIBS = libnvpair libuutil libzfs_core libzfs libzfsbootenv
|
ABILIBS = libnvpair libuutil libzfs_core libzfs libzfsbootenv
|
||||||
|
|
||||||
PHONY = checkabi storeabi
|
PHONY = checkabi storeabi cppcheck
|
||||||
checkabi: $(ABILIBS)
|
checkabi: $(ABILIBS)
|
||||||
set -e ; for dir in $(ABILIBS) ; do \
|
set -e ; for dir in $(ABILIBS) ; do \
|
||||||
$(MAKE) -C $$dir checkabi ; \
|
$(MAKE) -C $$dir checkabi ; \
|
||||||
|
@ -33,3 +36,8 @@ storeabi: $(ABILIBS)
|
||||||
set -e ; for dir in $(ABILIBS) ; do \
|
set -e ; for dir in $(ABILIBS) ; do \
|
||||||
$(MAKE) -C $$dir storeabi ; \
|
$(MAKE) -C $$dir storeabi ; \
|
||||||
done
|
done
|
||||||
|
|
||||||
|
cppcheck: $(CPPCHECKDIRS)
|
||||||
|
set -e ; for dir in $(CPPCHECKDIRS) ; do \
|
||||||
|
$(MAKE) -C $$dir cppcheck ; \
|
||||||
|
done
|
||||||
|
|
|
@ -12,3 +12,5 @@ KERNEL_C = \
|
||||||
|
|
||||||
nodist_libavl_la_SOURCES = \
|
nodist_libavl_la_SOURCES = \
|
||||||
$(KERNEL_C)
|
$(KERNEL_C)
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -10,3 +10,5 @@ USER_C = \
|
||||||
libefi_la_SOURCES = $(USER_C)
|
libefi_la_SOURCES = $(USER_C)
|
||||||
|
|
||||||
libefi_la_LIBADD = $(LIBUUID_LIBS) $(ZLIB_LIBS)
|
libefi_la_LIBADD = $(LIBUUID_LIBS) $(ZLIB_LIBS)
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -71,3 +71,5 @@ KERNEL_ASM = $(ASM_SOURCES_AS)
|
||||||
nodist_libicp_la_SOURCES = \
|
nodist_libicp_la_SOURCES = \
|
||||||
$(KERNEL_C) \
|
$(KERNEL_C) \
|
||||||
$(KERNEL_ASM)
|
$(KERNEL_ASM)
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
include $(top_srcdir)/config/Rules.am
|
include $(top_srcdir)/config/Rules.am
|
||||||
PHONY =
|
|
||||||
|
|
||||||
VPATH = \
|
VPATH = \
|
||||||
$(top_srcdir)/module/nvpair \
|
$(top_srcdir)/module/nvpair \
|
||||||
|
@ -42,5 +41,7 @@ endif
|
||||||
|
|
||||||
libnvpair_la_LDFLAGS += -version-info 3:0:0
|
libnvpair_la_LDFLAGS += -version-info 3:0:0
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
||||||
# Library ABI
|
# Library ABI
|
||||||
EXTRA_DIST = libnvpair.abi libnvpair.suppr
|
EXTRA_DIST = libnvpair.abi libnvpair.suppr
|
||||||
|
|
|
@ -23,3 +23,5 @@ USER_C += \
|
||||||
endif
|
endif
|
||||||
|
|
||||||
libshare_la_SOURCES = $(USER_C)
|
libshare_la_SOURCES = $(USER_C)
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -55,3 +55,12 @@ libspl_la_LIBADD = \
|
||||||
libspl_assert.la
|
libspl_assert.la
|
||||||
|
|
||||||
libspl_la_LIBADD += $(LIBCLOCK_GETTIME)
|
libspl_la_LIBADD += $(LIBCLOCK_GETTIME)
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
||||||
|
# Override the default SOURCES which includes TARGET_CPU_ATOMIC_SOURCE
|
||||||
|
# in order to always evaluate the generic asm-generic/atomic.c source.
|
||||||
|
CPPCHECKSRC = $(USER_C) asm-generic/atomic.c
|
||||||
|
cppcheck:
|
||||||
|
$(CPPCHECK) -j$(CPU_COUNT) $(CPPCHECKFLAGS) --force \
|
||||||
|
$(DEFAULT_INCLUDES) $(CPPCHECKSRC)
|
||||||
|
|
|
@ -7,3 +7,5 @@ USER_C = \
|
||||||
thread_pool_impl.h
|
thread_pool_impl.h
|
||||||
|
|
||||||
libtpool_la_SOURCES = $(USER_C)
|
libtpool_la_SOURCES = $(USER_C)
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -13,3 +13,5 @@ KERNEL_C = \
|
||||||
|
|
||||||
nodist_libunicode_la_SOURCES = \
|
nodist_libunicode_la_SOURCES = \
|
||||||
$(KERNEL_C)
|
$(KERNEL_C)
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
include $(top_srcdir)/config/Rules.am
|
include $(top_srcdir)/config/Rules.am
|
||||||
PHONY =
|
|
||||||
|
|
||||||
lib_LTLIBRARIES = libuutil.la
|
lib_LTLIBRARIES = libuutil.la
|
||||||
|
|
||||||
|
@ -32,5 +31,7 @@ endif
|
||||||
|
|
||||||
libuutil_la_LDFLAGS += -version-info 3:0:0
|
libuutil_la_LDFLAGS += -version-info 3:0:0
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
||||||
# Library ABI
|
# Library ABI
|
||||||
EXTRA_DIST = libuutil.abi libuutil.suppr
|
EXTRA_DIST = libuutil.abi libuutil.suppr
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
include $(top_srcdir)/config/Rules.am
|
include $(top_srcdir)/config/Rules.am
|
||||||
PHONY =
|
|
||||||
|
|
||||||
VPATH = \
|
VPATH = \
|
||||||
$(top_srcdir)/module/icp \
|
$(top_srcdir)/module/icp \
|
||||||
|
@ -90,6 +89,8 @@ endif
|
||||||
|
|
||||||
libzfs_la_LDFLAGS += -version-info 4:0:0
|
libzfs_la_LDFLAGS += -version-info 4:0:0
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
||||||
# Library ABI
|
# Library ABI
|
||||||
EXTRA_DIST = libzfs.abi libzfs.suppr
|
EXTRA_DIST = libzfs.abi libzfs.suppr
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
include $(top_srcdir)/config/Rules.am
|
include $(top_srcdir)/config/Rules.am
|
||||||
PHONY =
|
|
||||||
|
|
||||||
pkgconfig_DATA = libzfs_core.pc
|
pkgconfig_DATA = libzfs_core.pc
|
||||||
|
|
||||||
|
@ -30,5 +29,7 @@ endif
|
||||||
|
|
||||||
libzfs_core_la_LDFLAGS += -version-info 3:0:0
|
libzfs_core_la_LDFLAGS += -version-info 3:0:0
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
||||||
# Library ABI
|
# Library ABI
|
||||||
EXTRA_DIST = libzfs_core.abi libzfs_core.suppr
|
EXTRA_DIST = libzfs_core.abi libzfs_core.suppr
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
include $(top_srcdir)/config/Rules.am
|
include $(top_srcdir)/config/Rules.am
|
||||||
PHONY =
|
|
||||||
|
|
||||||
pkgconfig_DATA = libzfsbootenv.pc
|
pkgconfig_DATA = libzfsbootenv.pc
|
||||||
|
|
||||||
|
@ -34,5 +33,7 @@ endif
|
||||||
|
|
||||||
libzfsbootenv_la_LDFLAGS += -version-info 1:0:0
|
libzfsbootenv_la_LDFLAGS += -version-info 1:0:0
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
||||||
# Library ABI
|
# Library ABI
|
||||||
EXTRA_DIST = libzfsbootenv.abi libzfsbootenv.suppr
|
EXTRA_DIST = libzfsbootenv.abi libzfsbootenv.suppr
|
||||||
|
|
|
@ -235,3 +235,5 @@ if TARGET_CPU_POWERPC
|
||||||
vdev_raidz_math_powerpc_altivec.$(OBJEXT): CFLAGS += -maltivec
|
vdev_raidz_math_powerpc_altivec.$(OBJEXT): CFLAGS += -maltivec
|
||||||
vdev_raidz_math_powerpc_altivec.l$(OBJEXT): CFLAGS += -maltivec
|
vdev_raidz_math_powerpc_altivec.l$(OBJEXT): CFLAGS += -maltivec
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -19,3 +19,5 @@ lib/zstd.l$(OBJEXT): CFLAGS += -fno-tree-vectorize -include $(top_srcdir)/module
|
||||||
|
|
||||||
zfs_zstd.$(OBJEXT): CFLAGS += -include $(top_srcdir)/module/zstd/include/zstd_compat_wrapper.h
|
zfs_zstd.$(OBJEXT): CFLAGS += -include $(top_srcdir)/module/zstd/include/zstd_compat_wrapper.h
|
||||||
zfs_zstd.l$(OBJEXT): CFLAGS += -include $(top_srcdir)/module/zstd/include/zstd_compat_wrapper.h
|
zfs_zstd.l$(OBJEXT): CFLAGS += -include $(top_srcdir)/module/zstd/include/zstd_compat_wrapper.h
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -50,3 +50,5 @@ libzutil_la_LIBADD += \
|
||||||
endif
|
endif
|
||||||
|
|
||||||
libzutil_la_LIBADD += -lm $(LIBBLKID_LIBS) $(LIBUDEV_LIBS)
|
libzutil_la_LIBADD += -lm $(LIBBLKID_LIBS) $(LIBUDEV_LIBS)
|
||||||
|
|
||||||
|
include $(top_srcdir)/config/CppCheck.am
|
||||||
|
|
|
@ -14,7 +14,8 @@ check:
|
||||||
modules modules-Linux modules-FreeBSD modules-unknown \
|
modules modules-Linux modules-FreeBSD modules-unknown \
|
||||||
clean clean-Linux clean-FreeBSD \
|
clean clean-Linux clean-FreeBSD \
|
||||||
modules_install modules_install-Linux modules_install-FreeBSD \
|
modules_install modules_install-Linux modules_install-FreeBSD \
|
||||||
modules_uninstall modules_uninstall-Linux modules_uninstall-FreeBSD
|
modules_uninstall modules_uninstall-Linux modules_uninstall-FreeBSD \
|
||||||
|
cppcheck cppcheck-Linux cppcheck-FreeBSD
|
||||||
|
|
||||||
# Filter out options that FreeBSD make doesn't understand
|
# Filter out options that FreeBSD make doesn't understand
|
||||||
getflags = ( \
|
getflags = ( \
|
||||||
|
@ -106,6 +107,25 @@ modules_uninstall-FreeBSD:
|
||||||
|
|
||||||
modules_uninstall: modules_uninstall-@ac_system@
|
modules_uninstall: modules_uninstall-@ac_system@
|
||||||
|
|
||||||
|
cppcheck-Linux:
|
||||||
|
@CPPCHECK@ -j@CPU_COUNT@ --std=c99 --quiet --force --error-exitcode=2 \
|
||||||
|
--inline-suppr --suppress=noValidConfiguration \
|
||||||
|
--enable=warning,information -D_KERNEL \
|
||||||
|
--include=@LINUX_OBJ@/include/generated/autoconf.h \
|
||||||
|
--include=@top_srcdir@/zfs_config.h \
|
||||||
|
--config-exclude=@LINUX_OBJ@/include \
|
||||||
|
-I @LINUX_OBJ@/include \
|
||||||
|
-I @top_srcdir@/include/os/linux/kernel \
|
||||||
|
-I @top_srcdir@/include/os/linux/spl \
|
||||||
|
-I @top_srcdir@/include/os/linux/zfs \
|
||||||
|
-I @top_srcdir@/include \
|
||||||
|
avl icp lua nvpair spl unicode zcommon zfs zstd os/linux
|
||||||
|
|
||||||
|
cppcheck-FreeBSD:
|
||||||
|
@true
|
||||||
|
|
||||||
|
cppcheck: cppcheck-@ac_system@
|
||||||
|
|
||||||
distdir:
|
distdir:
|
||||||
(cd @srcdir@ && find $(ZFS_MODULES) os -name '*.[chS]') | \
|
(cd @srcdir@ && find $(ZFS_MODULES) os -name '*.[chS]') | \
|
||||||
while read path; do \
|
while read path; do \
|
||||||
|
|
|
@ -324,7 +324,6 @@ static void kname (Proto *p, int pc, int c, const char **name) {
|
||||||
if (ISK(c)) { /* is 'c' a constant? */
|
if (ISK(c)) { /* is 'c' a constant? */
|
||||||
TValue *kvalue = &p->k[INDEXK(c)];
|
TValue *kvalue = &p->k[INDEXK(c)];
|
||||||
if (ttisstring(kvalue)) { /* literal constant? */
|
if (ttisstring(kvalue)) { /* literal constant? */
|
||||||
// cppcheck-suppress autoVariables
|
|
||||||
*name = svalue(kvalue); /* it is its own name */
|
*name = svalue(kvalue); /* it is its own name */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,7 +196,6 @@ int luaD_rawrunprotected (lua_State *L, Pfunc f, void *ud) {
|
||||||
struct lua_longjmp lj;
|
struct lua_longjmp lj;
|
||||||
lj.status = LUA_OK;
|
lj.status = LUA_OK;
|
||||||
lj.previous = L->errorJmp; /* chain new error handler */
|
lj.previous = L->errorJmp; /* chain new error handler */
|
||||||
// cppcheck-suppress autoVariables
|
|
||||||
L->errorJmp = &lj;
|
L->errorJmp = &lj;
|
||||||
LUAI_TRY(L, &lj,
|
LUAI_TRY(L, &lj,
|
||||||
(*f)(L, ud);
|
(*f)(L, ud);
|
||||||
|
|
|
@ -284,9 +284,7 @@ int64_t
|
||||||
__divdi3(int64_t u, int64_t v)
|
__divdi3(int64_t u, int64_t v)
|
||||||
{
|
{
|
||||||
int64_t q, t;
|
int64_t q, t;
|
||||||
// cppcheck-suppress shiftTooManyBitsSigned
|
|
||||||
q = __udivdi3(abs64(u), abs64(v));
|
q = __udivdi3(abs64(u), abs64(v));
|
||||||
// cppcheck-suppress shiftTooManyBitsSigned
|
|
||||||
t = (u ^ v) >> 63; // If u, v have different
|
t = (u ^ v) >> 63; // If u, v have different
|
||||||
return ((q ^ t) - t); // signs, negate q.
|
return ((q ^ t) - t); // signs, negate q.
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue