diff --git a/tests/checkpatch.at b/tests/checkpatch.at index 3182ca880..994876e08 100755 --- a/tests/checkpatch.at +++ b/tests/checkpatch.at @@ -39,10 +39,12 @@ Subject: Patch this is. fi } -# try_checkpatch_c_file SOURCE [ERRORS] [CHECKPATCH-ARGS] +# try_checkpatch_c_file SOURCE [ERRORS] [CHECKPATCH-ARGS] [FILTER] # # Runs checkpatch against test SOURCE expecting the set of specified -# ERRORS (and warnings). Optionally, sets [CHECKPATCH-ARGS] +# ERRORS (and warnings). Optionally, sets [CHECKPATCH-ARGS]. The +# optional FILTER can be used to adjust the expected output before +# processing. try_checkpatch_c_file() { echo "$1" | sed 's/^ //' > test.c @@ -57,7 +59,9 @@ try_checkpatch_c_file() { AT_CHECK([OVS_SRC_DIR=$top_srcdir $PYTHON3 \ $top_srcdir/utilities/checkpatch.py $3 -q -f test.c], [1], [stdout]) - AT_CHECK([sed '/^Lines checked:/,$d' stdout], [0], [expout]) + AT_CHECK([sed "$4 + /^Lines checked:/d + /^$/d" stdout], [0], [expout]) else AT_CHECK([OVS_SRC_DIR=$top_srcdir $PYTHON3 \ $top_srcdir/utilities/checkpatch.py $3 -q -f test.c]) @@ -693,8 +697,7 @@ try_checkpatch_c_file \ }" \ "WARNING: Empty return followed by brace, consider omitting test.c:6: - } - " + }" AT_CLEANUP AT_SETUP([checkpatch - file contents checks - parenthesized constructs]) @@ -722,7 +725,42 @@ try_checkpatch_c_file \ }" \ "ERROR: Improper whitespace around control block test.c:5: - $ctr ( first_run) { - " + $ctr ( first_run) {" done AT_CLEANUP + +AT_SETUP([checkpatch - spelling checks]) +AT_SKIP_IF([! $PYTHON3 -c 'import enchant' >/dev/null 2>&1]) + +dnl First check with some default words + +try_checkpatch_c_file \ + "#include + #include + + /* naintenance mode */ + void foo() { + $ctr ( first_run ) { + something(check_node); + } + }" \ + "WARNING: Possible misspelled word: \"naintenance\" + test.c:4: + /* naintenance mode */" \ + "-S" \ + "/^Did you mean:/d" + +try_checkpatch_c_file \ + "#include + #include + + /* hugepage mode */ + void foo() { + $ctr ( first_run ) { + something(check_node); + } + }" \ + "" \ + "-S" + +AT_CLEANUP diff --git a/utilities/automake.mk b/utilities/automake.mk index fcd353109..a76e077e1 100644 --- a/utilities/automake.mk +++ b/utilities/automake.mk @@ -66,6 +66,7 @@ EXTRA_DIST += \ utilities/ovs-vlan-test.in \ utilities/ovs-vsctl-bashcomp.bash \ utilities/checkpatch.py \ + utilities/checkpatch_dict.txt \ utilities/docker/Makefile \ utilities/docker/ovs-override.conf \ utilities/docker/start-ovs \ diff --git a/utilities/checkpatch.py b/utilities/checkpatch.py index 566a2bd60..28d0977eb 100755 --- a/utilities/checkpatch.py +++ b/utilities/checkpatch.py @@ -56,71 +56,6 @@ def open_spell_check_dict(): pass try: - extra_keywords = ['ovs', 'vswitch', 'vswitchd', 'ovs-vswitchd', - 'netdev', 'selinux', 'ovs-ctl', 'dpctl', 'ofctl', - 'openvswitch', 'dpdk', 'hugepage', 'hugepages', - 'pmd', 'upcall', 'vhost', 'rx', 'tx', 'vhostuser', - 'openflow', 'qsort', 'rxq', 'txq', 'perf', 'stats', - 'struct', 'int', 'char', 'bool', 'upcalls', 'nicira', - 'bitmask', 'ipv4', 'ipv6', 'tcp', 'tcp4', 'tcpv4', - 'udp', 'udp4', 'udpv4', 'icmp', 'icmp4', 'icmpv6', - 'vlan', 'vxlan', 'cksum', 'csum', 'checksum', - 'ofproto', 'numa', 'mempool', 'mempools', 'mbuf', - 'mbufs', 'hmap', 'cmap', 'smap', 'dhcpv4', 'dhcp', - 'dhcpv6', 'opts', 'metadata', 'geneve', 'mutex', - 'netdev', 'netdevs', 'subtable', 'virtio', 'qos', - 'policer', 'datapath', 'tunctl', 'attr', 'ethernet', - 'ether', 'defrag', 'defragment', 'loopback', 'sflow', - 'acl', 'initializer', 'recirc', 'xlated', 'unclosed', - 'netlink', 'msec', 'usec', 'nsec', 'ms', 'us', 'ns', - 'kilobits', 'kbps', 'kilobytes', 'megabytes', 'mbps', - 'gigabytes', 'gbps', 'megabits', 'gigabits', 'pkts', - 'tuple', 'miniflow', 'megaflow', 'conntrack', - 'vlans', 'vxlans', 'arg', 'tpid', 'xbundle', - 'xbundles', 'mbundle', 'mbundles', 'netflow', - 'localnet', 'odp', 'pre', 'dst', 'dest', 'src', - 'ethertype', 'cvlan', 'ips', 'msg', 'msgs', - 'liveness', 'userspace', 'eventmask', 'datapaths', - 'slowpath', 'fastpath', 'multicast', 'unicast', - 'revalidation', 'namespace', 'qdisc', 'uuid', - 'ofport', 'subnet', 'revalidation', 'revalidator', - 'revalidate', 'l2', 'l3', 'l4', 'openssl', 'mtu', - 'ifindex', 'enum', 'enums', 'http', 'https', 'num', - 'vconn', 'vconns', 'conn', 'nat', 'memset', 'memcmp', - 'strcmp', 'strcasecmp', 'tc', 'ufid', 'api', - 'ofpbuf', 'ofpbufs', 'hashmaps', 'hashmap', 'deref', - 'dereference', 'hw', 'prio', 'sendmmsg', 'sendmsg', - 'malloc', 'free', 'alloc', 'pid', 'ppid', 'pgid', - 'uid', 'gid', 'sid', 'utime', 'stime', 'cutime', - 'cstime', 'vsize', 'rss', 'rsslim', 'whcan', 'gtime', - 'eip', 'rip', 'cgtime', 'dbg', 'gw', 'sbrec', 'bfd', - 'sizeof', 'pmds', 'nic', 'nics', 'hwol', 'encap', - 'decap', 'tlv', 'tlvs', 'decapsulation', 'fd', - 'cacheline', 'xlate', 'skiplist', 'idl', - 'comparator', 'natting', 'alg', 'pasv', 'epasv', - 'wildcard', 'nated', 'amd64', 'x86_64', - 'recirculation', 'linux', 'afxdp', 'promisc', 'goto', - 'misconfigured', 'misconfiguration', 'checkpatch', - 'debian', 'travis', 'cirrus', 'appveyor', 'faq', - 'erspan', 'const', 'hotplug', 'addresssanitizer', - 'ovsdb', 'dpif', 'veth', 'rhel', 'jsonrpc', 'json', - 'syscall', 'lacp', 'ipf', 'skb', 'valgrind', - 'appctl', 'arp', 'asan', 'backport', 'backtrace', - 'chmod', 'ci', 'cpu', 'cpus', 'dnat', 'dns', 'dpcls', - 'eol', 'ethtool', 'fdb', 'freebsd', 'gcc', 'github', - 'glibc', 'gre', 'inlined', 'ip', 'ipfix', 'ipsec', - 'ixgbe', 'libbpf', 'libcrypto', 'libgcc', - 'libopenvswitch', 'libreswan', 'libssl', 'libxdp', - 'lldp', 'llvm', 'lockless', 'mcast', 'megaflows', - 'mfex', 'ncat', 'networkmanager', 'pcap', 'pedit', - 'pidfile', 'pps', 'rculist', 'rebalance', 'rebased' - 'recirculations', 'revalidators', 'rst', 'sed', - 'shrinked', 'snat', 'stderr', 'stdout', 'testpmd', - 'tftp', 'timeval', 'trie', 'tso', 'ubsan', 'ukey', - 'umask', 'unassociated', 'unixctl', 'uuid' - 'virtqueue', 'vms', 'vnet', 'vport', 'vports', - 'vtep', 'wc', 'wget', 'xenserver', 'util'] - global spell_check_dict spell_check_dict = enchant.Dict("en_US") @@ -132,8 +67,12 @@ def open_spell_check_dict(): for word in words: spell_check_dict.add_to_session(word.strip()) - for kw in extra_keywords: - spell_check_dict.add_to_session(kw) + check_dict_file = os.path.join(get_top_directory(), "utilities", + "checkpatch_dict.txt") + if os.path.exists(check_dict_file): + with open(check_dict_file, "r") as project_words: + for check_word in project_words: + spell_check_dict.add_to_session(check_word.strip()) return True except: diff --git a/utilities/checkpatch_dict.txt b/utilities/checkpatch_dict.txt new file mode 100644 index 000000000..13f107246 --- /dev/null +++ b/utilities/checkpatch_dict.txt @@ -0,0 +1,330 @@ +acl +addresssanitizer +afxdp +alg +alloc +amd64 +api +apis +appctl +appveyor +arg +arp +asan +attr +backport +backtrace +bfd +bitmask +bool +cacheline +cgtime +char +checkpatch +checksum +chmod +ci +cirrus +cksum +cmap +comparator +conn +conntrack +const +cpu +cpus +cstime +csum +cutime +cvlan +datapath +datapaths +dbg +debian +decap +decapsulation +defrag +defragment +deref +dereference +dest +dhcp +dhcpv4 +dhcpv6 +dnat +dns +dpcls +dpctl +dpdk +dpif +dst +eip +enablement +encap +enum +enums +eol +epasv +erspan +ether +ethernet +ethertype +ethtool +eventmask +faq +fastpath +fd +fdb +free +freebsd +FreeBSD +gbps +gcc +gcloud +geneve +gid +gigabits +gigabytes +github +glibc +goto +gre +gtime +gw +hashmap +hashmaps +hmap +hotplug +http +https +hugepage +hugepages +hw +hwol +icmp +icmp4 +icmpv6 +idl +ifdef +ifindex +initializer +inlined +int +ip +ipf +ipfix +ips +ipsec +ipv4 +ipv6 +ixgbe +json +jsonrpc +kbps +kilobits +kilobytes +l2 +l3 +l4 +lacp +libbpf +libcrypto +libgcc +libopenvswitch +libreswan +libssl +libxdp +linux +liveness +lldp +llvm +localnet +lockless +loopback +malloc +mbps +mbuf +mbufs +mbundle +mbundles +mcast +megabits +megabytes +megaflow +megaflows +memcmp +mempool +mempools +memset +metadata +mfex +miniflow +misconfiguration +misconfigured +ms +msec +msg +msgs +mtu +multicast +mutex +namespace +nat +nated +natting +ncat +netdev +netdevs +netflow +netlink +networkmanager +nic +nicira +nics +ns +nsec +num +numa +odp +ofctl +ofpbuf +ofpbufs +ofport +ofproto +openflow +openssl +openvswitch +opts +ovs +ovs-ctl +ovsdb +ovs-vswitchd +pasv +pcap +pedit +perf +pgid +pid +pidfile +pkts +pmd +pmds +policer +ppid +pps +pre +prio +promisc +qdisc +qos +qsort +rculist +rebalance +rebased +recirc +recirculation +recirculations +revalidate +revalidation +revalidator +revalidators +rhel +rip +rss +rsslim +rst +rx +rxq +sbrec +sed +selinux +sendmmsg +sendmsg +sflow +shrinked +sid +sizeof +skb +skiplist +slowpath +smap +snat +src +stats +stderr +stdout +stime +strcasecmp +strcmp +struct +subnet +subtable +syscall +tc +tcp +tcp4 +tcpv4 +testpmd +tftp +timeval +tlv +tlvs +tnl +tpid +travis +trie +tso +tunctl +tuple +tx +txq +ubsan +udp +udp4 +udpv4 +ufid +uid +ukey +umask +unassociated +unclosed +unicast +unixctl +upcall +upcalls +us +usec +userspace +util +utime +uuid +valgrind +vconn +vconns +veth +vhost +vhostuser +virtio +virtqueue +vlan +vlans +vms +vnet +vport +vports +vsize +vswitch +vswitchd +vtep +vxlan +vxlans +wc +wget +whcan +wildcard +x86_64 +xbundle +xbundles +xenserver +xlate +xlated