[PATCH] checkpatch: Add line-length options, set default to 100

Joe Perches
2012-02-05T19:01:31Z

80 column line lengths can be a bit constraining.

Make the default 100 and still emit a warning
when that length is exceeded.

When option --strict is set, emit a check when
the length is > 80 too.

Add a command line option --line-length to set
the standard line length allowed.

Using command line option --ignore=LINE_LENGTH
will not emit any line-length messages.

Adding a .checkpatch.conf file with appropriate
command line options would also avoid line-length
messages.

Signed-off-by: Joe Perches <joe@perches.com>
---
scripts/checkpatch.pl | 21 +++++++++++++++------
1 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 2b52aeb..6923270 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -34,6 +34,9 @@ my @ignore = ();
my $help = 0;
my $configuration_file = ".checkpatch.conf";

+my $max_line_length_warn = 100; # normal cases
+my $max_line_length_strict = 80; # when using --strict
+
sub help {
my ($exitcode) = @_;

@@ -50,6 +53,7 @@ Options:
--terse one line per report
-f, --file treat FILE as regular source file
--subjective, --strict enable more subjective tests
+ --line-length=val set line length to emit a warning when exceeded
--ignore TYPE(,TYPE2...) ignore various comma separated message types
--show-types show the message "types" in the output
--root=PATH PATH to the kernel tree root
@@ -105,6 +109,7 @@ GetOptions(
'f|file!' => \$file,
'subjective!' => \$check,
'strict!' => \$check,
+ 'line-length=i' => \$max_line_length_warn,
'ignore=s' => \@ignore,
'show-types!' => \$show_types,
'root=s' => \$root,
@@ -1726,15 +1731,19 @@ sub process {
# check we are in a valid source file if not then ignore this hunk
next if ($realfile !~ /\.(h|c|s|S|pl|sh)$/);

-#80 column limit
+# check line length limits
if ($line =~ /^\+/ && $prevrawline !~ /\/\*\*/ &&
$rawline !~ /^.\s*\*\s*\@$Ident\s/ &&
!($line =~ /^\+\s*$logFunctions\s*\(\s*(?:(KERN_\S+\s*|[^"]*))?"[X\t]*"\s*(?:|,|\)\s*;)\s*$/ ||
- $line =~ /^\+\s*"[^"]*"\s*(?:\s*|,|\)\s*;)\s*$/) &&
- $length > 80)
- {
- WARN("LONG_LINE",
- "line over 80 characters\n" . $herecurr);
+ $line =~ /^\+\s*"[^"]*"\s*(?:\s*|,|\)\s*;)\s*$/)) {
+ if ($length > $max_line_length_strict) {
+ CHK("LONG_LINE",
+ "line longer than $max_line_length_strict characters\n" . $herecurr);
+ }
+ if ($length > $max_line_length_warn) {
+ WARN("LONG_LINE",
+ "line longer than $max_line_length_warn characters\n" . $herecurr);
+ }
}

# check for spaces before a quoted newline