Add an ability to specify max line length
Change-Id: I554b4a993b30462d454ef4984a9091c38365f9fa Closes-Bug: #1842109
This commit is contained in:
parent
949a320cce
commit
f5a24b097c
@ -59,8 +59,8 @@ def check_no_trailing_whitespace(line, report):
|
|||||||
report.print_error(MESSAGES['E001'].msg, line)
|
report.print_error(MESSAGES['E001'].msg, line)
|
||||||
|
|
||||||
|
|
||||||
def check_no_long_lines(line, report):
|
def check_no_long_lines(line, report, max_line_length):
|
||||||
if len(line.rstrip("\r\n")) > 79:
|
if len(line.rstrip("\r\n")) > max_line_length:
|
||||||
report.print_error(MESSAGES['E006'].msg, line)
|
report.print_error(MESSAGES['E006'].msg, line)
|
||||||
|
|
||||||
|
|
||||||
@ -306,7 +306,7 @@ class BashateRun(object):
|
|||||||
'error': error.replace(":", "", 1),
|
'error': error.replace(":", "", 1),
|
||||||
'line': line.rstrip('\n')})
|
'line': line.rstrip('\n')})
|
||||||
|
|
||||||
def check_files(self, files, verbose):
|
def check_files(self, files, verbose, max_line_length=79):
|
||||||
logical_line = ""
|
logical_line = ""
|
||||||
token = False
|
token = False
|
||||||
|
|
||||||
@ -401,7 +401,7 @@ class BashateRun(object):
|
|||||||
# separatley. Stick with what works...
|
# separatley. Stick with what works...
|
||||||
for line in logical_line:
|
for line in logical_line:
|
||||||
check_no_trailing_whitespace(line, report)
|
check_no_trailing_whitespace(line, report)
|
||||||
check_no_long_lines(line, report)
|
check_no_long_lines(line, report, max_line_length)
|
||||||
check_for_do(line, report)
|
check_for_do(line, report)
|
||||||
check_if_then(line, report)
|
check_if_then(line, report)
|
||||||
check_function_decl(line, report)
|
check_function_decl(line, report)
|
||||||
@ -431,6 +431,8 @@ def main(args=None):
|
|||||||
help='Rules to always warn (rather than error)')
|
help='Rules to always warn (rather than error)')
|
||||||
parser.add_argument('-e', '--error',
|
parser.add_argument('-e', '--error',
|
||||||
help='Rules to always error (rather than warn)')
|
help='Rules to always error (rather than warn)')
|
||||||
|
parser.add_argument('--max-line-length', default=79, type=int,
|
||||||
|
help='Max line length')
|
||||||
parser.add_argument('-v', '--verbose', action='store_true', default=False)
|
parser.add_argument('-v', '--verbose', action='store_true', default=False)
|
||||||
parser.add_argument('--version', action='store_true',
|
parser.add_argument('--version', action='store_true',
|
||||||
help='show bashate version number and exit',
|
help='show bashate version number and exit',
|
||||||
@ -457,7 +459,7 @@ def main(args=None):
|
|||||||
run.register_errors(opts.error)
|
run.register_errors(opts.error)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
run.check_files(files, opts.verbose)
|
run.check_files(files, opts.verbose, opts.max_line_length)
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
print("bashate: %s" % e)
|
print("bashate: %s" % e)
|
||||||
return 1
|
return 1
|
||||||
|
@ -93,11 +93,11 @@ _messages = {
|
|||||||
'long_msg':
|
'long_msg':
|
||||||
"""
|
"""
|
||||||
This check mimics the widely accepted convention from PEP8 and
|
This check mimics the widely accepted convention from PEP8 and
|
||||||
many other places that lines longer than 79 columns can not
|
many other places that lines longer than a standard terminal width
|
||||||
only cause problems when reading/writing code, but also often
|
(default=79 columns) can not only cause problems when reading/writing
|
||||||
indicates a bad smell, e.g. too many levels of indentation due
|
code, but also often indicates a bad smell, e.g. too many levels
|
||||||
to overly complex functions which require refactoring into
|
of indentation due to overly complex functions which require
|
||||||
smaller chunks.
|
refactoring into smaller chunks.
|
||||||
""",
|
""",
|
||||||
'default': 'W'
|
'default': 'W'
|
||||||
},
|
},
|
||||||
|
8
bashate/tests/samples/E006_bad_custom_length.sh
Normal file
8
bashate/tests/samples/E006_bad_custom_length.sh
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# lines longer than 10 columns give warnings
|
||||||
|
|
||||||
|
: 0123456789
|
||||||
|
: 1 2 3 4 5 6 7 8
|
||||||
|
|
||||||
|
: 012345
|
@ -64,8 +64,11 @@ class TestBashate(base.TestCase):
|
|||||||
|
|
||||||
result = bashate.main(['--verbose',
|
result = bashate.main(['--verbose',
|
||||||
'/path/to/fileA', '/path/to/fileB'])
|
'/path/to/fileA', '/path/to/fileB'])
|
||||||
m_run_obj.check_files.assert_called_with(['/path/to/fileA',
|
m_run_obj.check_files.assert_called_with(
|
||||||
'/path/to/fileB'], True)
|
['/path/to/fileA', '/path/to/fileB'],
|
||||||
|
True,
|
||||||
|
79
|
||||||
|
)
|
||||||
expected_return = 1
|
expected_return = 1
|
||||||
self.assertEqual(expected_return, result)
|
self.assertEqual(expected_return, result)
|
||||||
|
|
||||||
@ -176,6 +179,14 @@ class TestBashateSamples(base.TestCase):
|
|||||||
self.assert_error_found('E006', 6)
|
self.assert_error_found('E006', 6)
|
||||||
self.assert_error_found('E006', 8)
|
self.assert_error_found('E006', 8)
|
||||||
|
|
||||||
|
def test_sample_E006_bad_custom_max_line_length(self):
|
||||||
|
test_files = ['bashate/tests/samples/E006_bad_custom_length.sh']
|
||||||
|
self.run.check_files(test_files, False, 10)
|
||||||
|
|
||||||
|
self.assertEqual(self.run.warning_count, 2)
|
||||||
|
self.assert_error_found('E006', 5)
|
||||||
|
self.assert_error_found('E006', 6)
|
||||||
|
|
||||||
def test_sample_E006_good(self):
|
def test_sample_E006_good(self):
|
||||||
test_files = ['bashate/tests/samples/E006_good.sh']
|
test_files = ['bashate/tests/samples/E006_good.sh']
|
||||||
self.run.check_files(test_files, False)
|
self.run.check_files(test_files, False)
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Adds an option ``--max-line-length`` to specify the maximum length
|
||||||
|
of lines for check E006.
|
Loading…
Reference in New Issue
Block a user