LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* Re: 【scripts/checkpatch.pl】why we expand table key to 8 characters ?
       [not found] <OF1E263C3C.2B407D65-ON48258273.00325117-48258273.0035DEE8@alitech.com>
@ 2018-04-18 19:53 ` Joe Perches
  0 siblings, 0 replies; only message in thread
From: Joe Perches @ 2018-04-18 19:53 UTC (permalink / raw)
  To: LKML

Forwarding on to LKML as I didn't realize it wasn't
on the original email chain.

On Wed, 2018-04-18 at 17:48 +0800, Dennis.Dai@alitech.com wrote:
> 
> Hi Joe & Andy,
> 
> Sorry to interrupt you for scripts/checkpatch.pl.
> 
> I always use scripts/checkpatch.pl in kernel to check my code style. It's
> very helpful to improve our code more readable.
> 
> We always set 4 characters for table key and most of others do this well in
> China, but I cann't understand why we expand the number to 8 characters and
> check the indent with 8 characters by following code ?

I don't personally mind allowing various tab widths,
but it should be with some command line option like
--tab-width=<n>

Perhaps:
---
 scripts/checkpatch.pl | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 24618dffc5cb..95dae55bc94d 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -49,6 +49,7 @@ my @ignore = ();
 my $help = 0;
 my $configuration_file = ".checkpatch.conf";
 my $max_line_length = 80;
+my $tab_width = 8;
 my $ignore_perl_version = 0;
 my $minimum_perl_version = 5.10.0;
 my $min_conf_desc_length = 4;
@@ -92,6 +93,7 @@ Options:
   --ignore TYPE(,TYPE2...)   ignore various comma separated message types
   --show-types               show the specific message type in the output
   --max-line-length=n        set the maximum line length, if exceeded, warn
+  --tab-width=n              set the expected tab indentation width (default:8)
   --min-conf-desc-length=n   set the min description length, if shorter, warn
   --root=PATH                PATH to the kernel tree root
   --no-summary               suppress the per-file summary
@@ -209,6 +211,7 @@ GetOptions(
 	'show-types!'	=> \$show_types,
 	'list-types!'	=> \$list_types,
 	'max-line-length=i' => \$max_line_length,
+	'tab-width=i'	=> \$tab_width,
 	'min-conf-desc-length=i' => \$min_conf_desc_length,
 	'root=s'	=> \$root,
 	'summary!'	=> \$summary,
@@ -1162,7 +1165,7 @@ sub expand_tabs {
 		if ($c eq "\t") {
 			$res .= ' ';
 			$n++;
-			for (; ($n % 8) != 0; $n++) {
+			for (; ($n % $tab_width) != 0; $n++) {
 				$res .= ' ';
 			}
 			next;
@@ -2175,7 +2178,7 @@ sub string_find_replace {
 sub tabify {
 	my ($leading) = @_;
 
-	my $source_indent = 8;
+	my $source_indent = $tab_width;
 	my $max_spaces_before_tab = $source_indent - 1;
 	my $spaces_to_tab = " " x $source_indent;
 
@@ -3056,7 +3059,7 @@ sub process {
 				"please, no space before tabs\n" . $herevet) &&
 			    $fix) {
 				while ($fixed[$fixlinenr] =~
-					   s/(^\+.*) {8,8}\t/$1\t\t/) {}
+					   s/(^\+.*) {$tab_width,$tab_width}\t/$1\t\t/) {}
 				while ($fixed[$fixlinenr] =~
 					   s/(^\+.*) +\t/$1\t/) {}
 			}
@@ -3078,11 +3081,11 @@ sub process {
 		if ($^V && $^V ge 5.10.0 &&
 		    $sline =~ /^\+\t+( +)(?:$c90_Keywords\b|\{\s*$|\}\s*(?:else\b|while\b|\s*$)|$Declare\s*$Ident\s*[;=])/) {
 			my $indent = length($1);
-			if ($indent % 8) {
+			if ($indent % $tab_width) {
 				if (WARN("TABSTOP",
 					 "Statements should start on a tabstop\n" . $herecurr) &&
 				    $fix) {
-					$fixed[$fixlinenr] =~ s@(^\+\t+) +@$1 . "\t" x ($indent/8)@e;
+					$fixed[$fixlinenr] =~ s@(^\+\t+) +@$1 . "\t" x ($indent/$tab_width)@e;
 				}
 			}
 		}
@@ -3100,8 +3103,8 @@ sub process {
 				my $newindent = $2;
 
 				my $goodtabindent = $oldindent .
-					"\t" x ($pos / 8) .
-					" "  x ($pos % 8);
+					"\t" x ($pos / $tab_width) .
+					" "  x ($pos % $tab_width);
 				my $goodspaceindent = $oldindent . " "  x $pos;
 
 				if ($newindent ne $goodtabindent &&
@@ -3572,11 +3575,11 @@ sub process {
 			#print "line<$line> prevline<$prevline> indent<$indent> sindent<$sindent> check<$check> continuation<$continuation> s<$s> cond_lines<$cond_lines> stat_real<$stat_real> stat<$stat>\n";
 
 			if ($check && $s ne '' &&
-			    (($sindent % 8) != 0 ||
+			    (($sindent % $tab_width) != 0 ||
 			     ($sindent < $indent) ||
 			     ($sindent == $indent &&
 			      ($s !~ /^\s*(?:\}|\{|else\b)/)) ||
-			     ($sindent > $indent + 8))) {
+			     ($sindent > $indent + $tab_width))) {
 				WARN("SUSPECT_CODE_INDENT",
 				     "suspect code indent for conditional statements ($indent, $sindent)\n" . $herecurr . "$stat_real\n");
 			}

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2018-04-18 19:54 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <OF1E263C3C.2B407D65-ON48258273.00325117-48258273.0035DEE8@alitech.com>
2018-04-18 19:53 ` 【scripts/checkpatch.pl】why we expand table key to 8 characters ? Joe Perches

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).