svn commit: r241644 - user/crees/rclint

Chris Rees crees at FreeBSD.org
Wed Oct 17 19:16:25 UTC 2012


Author: crees (ports committer)
Date: Wed Oct 17 19:16:24 2012
New Revision: 241644
URL: http://svn.freebsd.org/changeset/base/241644

Log:
  Style; 4 spaces instead of tabs, no one-line if/whiles
  
  Submitted by:	eadler

Modified:
  user/crees/rclint/rclint.py

Modified: user/crees/rclint/rclint.py
==============================================================================
--- user/crees/rclint/rclint.py	Wed Oct 17 18:21:14 2012	(r241643)
+++ user/crees/rclint/rclint.py	Wed Oct 17 19:16:24 2012	(r241644)
@@ -36,262 +36,270 @@ import textwrap
 
 def read_db(dbname, language):
     try:
-	with open('%s.%s' % (dbname, language)) as f:
-		logging.debug('Sucking in %s database' % dbname)
-		contents = { }
-		for e in f.readlines():
-			if not e or e[0] == '#':
-				continue
-			e = e.split('	')
-			contents[e[0]] = e[1:]
+        with open('%s.%s' % (dbname, language)) as f:
+            logging.debug('Sucking in %s database' % dbname)
+            contents = { }
+            for e in f.readlines():
+                if not e or e[0] == '#':
+                    continue
+                e = e.split('	')
+                contents[e[0]] = e[1:]
     except:
-	logging.error('Cannot open %s database for language %s' % (dbname, language))
-	exit()
+        logging.error('Cannot open %s database for language %s' % (dbname, language))
+        exit()
     return contents
 
 def explain(error):
-	if verbosity > 0: print textwrap.fill(error[1], initial_indent='==> ', subsequent_indent='    ')
+    if verbosity > 0:
+        print textwrap.fill(error[1],
+                            initial_indent='==> ', subsequent_indent='    ')
 
 def error(type, line_number, filename):
-	logging.error("[%d]%s: %s " % (line_number, filename, errors[type][0]))
-	explain(errors[type])
+    logging.error("[%d]%s: %s " % (line_number, filename, errors[type][0]))
+    explain(errors[type])
 
 def check_quoted(string):
-	return True if string[0] == '"' or string[0] == "'" else False
+    return True if string[0] == '"' or string[0] == "'" else False
 
 def mandatory(var):
-	mand = ['enable']
-	return True if var.split('_')[-1] in mand else False
+    mand = ['enable']
+    return True if var.split('_')[-1] in mand else False
 
 def get_value(var, line):
-	try:	return re.match('%s=(\S+)$' % var, line).group(1)
-	except:	return False
+    try:
+        return re.match('%s=(\S+)$' % var, line).group(1)
+    except:
+        return False
 
 def get_assignment(line):
-	try: return re.match('(\S+)=(\S+)$', line).groups()
-	except: return False
+    try:
+        return re.match('(\S+)=(\S+)$', line).groups()
+    except:
+        return False
 
 def check_header(lines, num, filename):
-	# Basic order; shebang, copyright, RCSId, gap, rcorder
+    # Basic order; shebang, copyright, RCSId, gap, rcorder
 
-	logging.debug('Check shebang')
-	if lines[num] != '#!/bin/sh':
-		error('shebang', num, filename)
-
-	logging.debug('Skipping license')
-	num += 1
-	while (not re.match('# \$FreeBSD[:$]', lines[num]) and
-	    (lines[num] == '' or lines[num][0] == '#')):
-		num += 1
-
-	logging.debug('Checking for RCSId')
-	if not re.match('# \$FreeBSD[:$]', lines[num]):
-		error('rcsid', num, filename)
-
-	num += 1
-	while lines[num] == '#' or lines[num] == '': num += 1
-
-	logging.debug('Checking rcorder order and sucking in names')
-	if not re.match('# [PRBK]', lines[num]):
-		error('rcorder_missing', num, filename)
-	orders = ['provide', 'require', 'before', 'keyword']
-	index = 0
-	rcorder = { o: [] for o in orders }
-	while index < 4:
-		order = orders[index]
-		try:
-			for result in re.match('# %s: (.*)' % order.upper(),
-			    lines[num]).group(1).split(' '):
-				rcorder[order].append(result)
-			num += 1
-		except:
-			index += 1
+    logging.debug('Check shebang')
+    if lines[num] != '#!/bin/sh':
+        error('shebang', num, filename)
+
+    logging.debug('Skipping license')
+    num += 1
+    while (not re.match('# \$FreeBSD[:$]', lines[num]) and
+          (lines[num] == '' or lines[num][0] == '#')):
+        num += 1
+
+    logging.debug('Checking for RCSId')
+    if not re.match('# \$FreeBSD[:$]', lines[num]):
+        error('rcsid', num, filename)
+
+    num += 1
+    while lines[num] == '#' or lines[num] == '': num += 1
+
+    logging.debug('Checking rcorder order and sucking in names')
+    if not re.match('# [PRBK]', lines[num]):
+        error('rcorder_missing', num, filename)
+    orders = ['provide', 'require', 'before', 'keyword']
+    index = 0
+    rcorder = {o: [] for o in orders}
+    while index < 4:
+        order = orders[index]
+        try:
+            for result in re.match('# %s: (.*)' % order.upper(),
+                                   lines[num]).group(1).split(' '):
+                rcorder[order].append(result)
+            num += 1
+        except:
+            index += 1
 
-	if 'FreeBSD' in rcorder['keyword']:
-		error('rcorder_keyword_freebsd', num, filename)
+    if 'FreeBSD' in rcorder['keyword']:
+        error('rcorder_keyword_freebsd', num, filename)
 
-	if re.match('# [PRBK]', lines[num]):
-		error('rcorder_order', num, filename)
+    if re.match('# [PRBK]', lines[num]):
+        error('rcorder_order', num, filename)
 
-	return num
+    return num
 
 def check_intro(lines, num, filename):
-	logging.debug('Checking sourcing lines')
-	while lines[num] == '' or lines[num][0] == '#':
-		num += 1
-
-	if lines[num] != '. /etc/rc.subr':
-		error('rc_subr_late', num, filename)
-
-	logging.debug('Checking name assignment')
-	while lines[num] == '' or lines[num][0] == '#' or lines[num][0] == '.':
-		num += 1
-
-	name = get_value('name', lines[num])
-	if not name:
-		error('name_missing', num, filename)
-	elif check_quoted(name):
-		error('name_quoted', num, filename)
-	else:
-		logging.debug('name discovered as %s' % name)
-		num += 1
-
-	logging.debug('Checking rcvar')
-	rcvar = get_value('rcvar', lines[num])
-	logging.debug('rcvar discovered as %s' % rcvar if rcvar else 'rcvar not discovered')
-	if not rcvar:
-		error('rcvar_missing', num, filename)
-	elif check_quoted(rcvar):
-		error('rcvar_quoted', num, filename)
-	elif rcvar != '%s_enable' % name:
-		error('rcvar_incorrect', num, filename)
-	else:
-		num += 1
-
-	logging.debug('Checking load_rc_config')
-	if lines[num] == '':
-		num += 1
-	else:
-		error('rcvar_extra', num, filename)
-
-	if re.match('load_rc_config (?:\$name|%s)' % name, lines[num]):
-		num += 1
-	else:
-		error('load_rc_config_missing', num, filename)
-
-	if lines[num] == '':
-		num += 1
-	else:
-		error('load_rc_config_extra', num, filename)
+    logging.debug('Checking sourcing lines')
+    while lines[num] == '' or lines[num][0] == '#':
+        num += 1
+
+    if lines[num] != '. /etc/rc.subr':
+        error('rc_subr_late', num, filename)
+
+    logging.debug('Checking name assignment')
+    while lines[num] == '' or lines[num][0] == '#' or lines[num][0] == '.':
+        num += 1
+
+    name = get_value('name', lines[num])
+    if not name:
+        error('name_missing', num, filename)
+    elif check_quoted(name):
+        error('name_quoted', num, filename)
+    else:
+        logging.debug('name discovered as %s' % name)
+        num += 1
+
+    logging.debug('Checking rcvar')
+    rcvar = get_value('rcvar', lines[num])
+    logging.debug('rcvar discovered as %s' % rcvar if rcvar else 'rcvar not discovered')
+
+    if not rcvar:
+        error('rcvar_missing', num, filename)
+    elif check_quoted(rcvar):
+        error('rcvar_quoted', num, filename)
+    elif rcvar != '%s_enable' % name:
+        error('rcvar_incorrect', num, filename)
+    else:
+        num += 1
+
+    logging.debug('Checking load_rc_config')
+    if lines[num] == '':
+        num += 1
+    else:
+        error('rcvar_extra', num, filename)
+
+    if re.match('load_rc_config (?:\$name|%s)' % name, lines[num]):
+        num += 1
+    else:
+        error('load_rc_config_missing', num, filename)
+
+    if lines[num] == '':
+        num += 1
+    else:
+        error('load_rc_config_extra', num, filename)
 
-	return num
+    return num
 
 def check_defaults(lines, num, filename):
-	logging.debug('Checking defaults set')
+    logging.debug('Checking defaults set')
+
+    default = { }
+    try:
+        while lines[num]:
+            while lines[num][0] == '#' or lines[num][:4] == 'eval':
+                num += 1
+            if lines[num][0] == ':':
+                # Shorthand set self-default assignment
+                (target, operator, value) = re.match(': \${([^:=]+)(:?=)([^}]+)}', lines[num]).groups()
+                if operator == ':=' and not mandatory(target):
+                    error('defaults_non_mandatory_colon', num, filename)
+                elif operator == '=' and mandatory(target):
+                    error('defaults_mandatory_colon', num, filename)
+
+            else:
+                # Longhand set default assignment
+                (target, source, operator, value) = re.match('([^=]+)=\${([^:-]+)(:?-)([^}]+)}', lines[num]).groups()
+                if target == source:
+                    error('defaults_old_style', num, filename)
+
+                if operator == ':-' and not mandatory(target):
+                    error('defaults_non_mandatory_colon', num, filename)
+                elif operator == '-' and mandatory(target):
+                    error('defaults_mandatory_colon', num, filename)
+
+            if check_quoted(value):
+                error('defaults_value_quoted', num, filename)
 
-	default = { }
-	try:
-	    while lines[num]:
-		while lines[num][0] == '#' or lines[num][:4] == 'eval': num += 1
-		if lines[num][0] == ':':
-			# Shorthand set self-default assignment
-			(target, operator, value) = re.match(': \${([^:=]+)(:?=)([^}]+)}', lines[num]).groups()
-			if operator == ':=' and not mandatory(target):
-				error('defaults_non_mandatory_colon', num, filename)
-			elif operator == '=' and mandatory(target):
-				error('defaults_mandatory_colon', num, filename)
-
-		else:
-			# Longhand set default assignment
-			(target, source, operator, value) = re.match('([^=]+)=\${([^:-]+)(:?-)([^}]+)}', lines[num]).groups()
-			if target == source:
-				error('defaults_old_style', num, filename)
-
-			if operator == ':-' and not mandatory(target):
-				error('defaults_non_mandatory_colon', num, filename)
-			elif operator == '-' and mandatory(target):
-				error('defaults_mandatory_colon', num, filename)
-
-		if check_quoted(value):
-			error('defaults_value_quoted', num, filename)
-
-		num += 1
-	except:
-		error('defaults_invalid', num, filename)
-
-	# Allow line breaks in the middle; if we put
-	# gaps in that's usually good style.  Lookahead!
-	if lines[num+1] and (':' in lines[num+1] or '-' in lines[num+1]):
-		return check_defaults(lines, num, filename)
-	else:
-		return num
+            num += 1
+    except:
+        error('defaults_invalid', num, filename)
+
+    # Allow line breaks in the middle; if we put
+    # gaps in that's usually good style.  Lookahead!
+    if lines[num+1] and (':' in lines[num+1] or '-' in lines[num+1]):
+        return check_defaults(lines, num, filename)
+    else:
+        return num
 
 def check_definitions(lines, num, filename):
-	logging.debug('Checking the basic definitions')
+    logging.debug('Checking the basic definitions')
 
-	num += 1
+    num += 1
 
-	while lines[num]:
-		while lines[num][0] == '#' or lines[num][:4] == 'eval': num += 1
-		try:
-			(var, value) = get_assignment(lines[num])
-		except:
-			error('definitions_missing', num, filename)
-			return num
-
-		if check_quoted(value):
-			if ' ' not in lines[num] and '	' not in lines[num]:
-				error('definitions_quoted', num, filename)
-		num += 1
-
-	# As in check_defaults, allow line breaks in the middle; if we put
-	# gaps in that's usually good style.  Lookahead!
-	if lines[num+1] and '=' in lines[num+1]:
-		return check_definitions(lines, num, filename)
-	else:
-		return num
+    while lines[num]:
+        while lines[num][0] == '#' or lines[num][:4] == 'eval': num += 1
+        try:
+            (var, value) = get_assignment(lines[num])
+        except:
+            error('definitions_missing', num, filename)
+            return num
+
+        if check_quoted(value):
+            if ' ' not in lines[num] and '	' not in lines[num]:
+                error('definitions_quoted', num, filename)
+        num += 1
+
+    # As in check_defaults, allow line breaks in the middle; if we put
+    # gaps in that's usually good style.  Lookahead!
+    if lines[num+1] and '=' in lines[num+1]:
+        return check_definitions(lines, num, filename)
+    else:
+        return num
 
 def check_functions(lines, num, filename):
-	logging.debug('Now checking functions')
+    logging.debug('Now checking functions')
 
-	num += 1
-	func = { }
+    num += 1
+    func = { }
 
-	while lines[num]:
-		while not lines[num] or lines[num][0] == '#': num += 1
+    while lines[num]:
+        while not lines[num] or lines[num][0] == '#': num += 1
 
-		if lines[num][-2:] != '()':
-			if lines[num][-1] == '{':
-				error('functions_brace_inline', num, filename)
-			else:
-				logging.debug('No functions left!')
-				return num
-		if ' ' in lines[num]:
-			error('functions_spaces', num, filename)
-		func['name'] = lines[num][:-2]
-
-		num += 1
-		if lines[num] != '{':
-			error('functions_brace_missing', num, filename)
-
-		num += 1
-		tmp = num
-		try:
-			while lines[num] != '}':
-				tmp += 1
-				if lines[num] and lines[num][0] != '#':
-					func['length'] += 1 
-		except:
-			error('functions_neverending', num, filename)
-			return num
+        if lines[num][-2:] != '()':
+            if lines[num][-1] == '{':
+                error('functions_brace_inline', num, filename)
+            else:
+                logging.debug('No functions left!')
+                return num
+        if ' ' in lines[num]:
+            error('functions_spaces', num, filename)
+        func['name'] = lines[num][:-2]
+
+        num += 1
+        if lines[num] != '{':
+            error('functions_brace_missing', num, filename)
+
+        num += 1
+        tmp = num
+        try:
+            while lines[num] != '}':
+                tmp += 1
+                if lines[num] and lines[num][0] != '#':
+                    func['length'] += 1 
+        except:
+            error('functions_neverending', num, filename)
+            return num
 
-		if func['length'] == 1:
-			error('functions_short', num, filename)
+        if func['length'] == 1:
+            error('functions_short', num, filename)
 
 def general_checks(lines, filename):
-	logging.debug('Checking for unrecommended sequences')
-	for num in range(0, len(lines)):
-		for regex in problems.keys():
-			if lines[num] and re.search(regex, lines[num]):
-				logging.warn("[%d]%s: %s " % (num, filename, problems[key][1]))
-				explain(problem)
+    logging.debug('Checking for unrecommended sequences')
+    for num in range(0, len(lines)):
+        for regex in problems.keys():
+            if lines[num] and re.search(regex, lines[num]):
+                logging.warn("[%d]%s: %s " % (num, filename, problems[key][1]))
+                explain(problem)
 
 def do_rclint(filename):
-	logging.debug('Suck in file %s' % filename)
-	try:
-		lines=[line.rstrip('\n') for line in open(filename)]
-	except: 
-		logging.error('Cannot open %s for testing' % filename)
-		return
-	lineno = { 'begin': 0 }
-
-	lineno['header'] = check_header(lines, lineno['begin'], filename)
-	lineno['intro'] = check_intro(lines, lineno['header'], filename)
-	lineno['defaults'] = check_defaults(lines, lineno['intro'], filename)
-	lineno['definitions'] = check_definitions(lines, lineno['defaults'], filename)
-	lineno['functions'] = check_functions(lines, lineno['definitions'], filename)
+    logging.debug('Suck in file %s' % filename)
+    try:
+        lines=[line.rstrip('\n') for line in open(filename)]
+    except: 
+        logging.error('Cannot open %s for testing' % filename)
+        return
+    lineno = {'begin': 0}
+
+    lineno['header'] = check_header(lines, lineno['begin'], filename)
+    lineno['intro'] = check_intro(lines, lineno['header'], filename)
+    lineno['defaults'] = check_defaults(lines, lineno['intro'], filename)
+    lineno['definitions'] = check_definitions(lines, lineno['defaults'], filename)
+    lineno['functions'] = check_functions(lines, lineno['definitions'], filename)
 
-	general_checks(lines, filename)
+    general_checks(lines, filename)
 
 parser = argparse.ArgumentParser()
 parser.add_argument('filenames', nargs = '+')
@@ -307,4 +315,4 @@ errors = read_db('errors', args.language
 problems = read_db('problems', args.language[0])
 
 for file in args.filenames:
-	do_rclint(file)
+    do_rclint(file)


More information about the svn-src-user mailing list