summaryrefslogtreecommitdiff
path: root/utilities/checkpatch.py
diff options
context:
space:
mode:
Diffstat (limited to 'utilities/checkpatch.py')
-rwxr-xr-xutilities/checkpatch.py117
1 files changed, 62 insertions, 55 deletions
diff --git a/utilities/checkpatch.py b/utilities/checkpatch.py
index 54aa4b634..8bbda7898 100755
--- a/utilities/checkpatch.py
+++ b/utilities/checkpatch.py
@@ -21,59 +21,6 @@ import os
import re
import sys
-try:
- import enchant
-
- 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']
-
- spell_check_dict = enchant.Dict("en_US")
- for kw in extra_keywords:
- spell_check_dict.add(kw)
-
- no_spellcheck = False
-except:
- no_spellcheck = True
-
RETURN_CHECK_INITIAL_STATE = 0
RETURN_CHECK_STATE_WITH_RETURN = 1
RETURN_CHECK_AWAITING_BRACE = 2
@@ -86,6 +33,66 @@ total_line = 0
colors = False
spellcheck_comments = False
quiet = False
+spell_check_dict = None
+
+
+def open_spell_check_dict():
+ import enchant
+
+ 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']
+
+ global spell_check_dict
+ spell_check_dict = enchant.Dict("en_US")
+ for kw in extra_keywords:
+ spell_check_dict.add(kw)
+
+ return True
+ except:
+ return False
def get_color_end():
@@ -359,7 +366,7 @@ def filter_comments(current_line, keep=False):
def check_comment_spelling(line):
- if no_spellcheck or not spellcheck_comments:
+ if not spell_check_dict or not spellcheck_comments:
return False
comment_words = filter_comments(line, True).replace(':', ' ').split(' ')
@@ -919,7 +926,7 @@ if __name__ == '__main__':
elif o in ("-f", "--check-file"):
checking_file = True
elif o in ("-S", "--spellcheck-comments"):
- if no_spellcheck:
+ if not open_spell_check_dict():
print("WARNING: The enchant library isn't availble.")
print(" Please install python enchant.")
else: