On Thu, 2015-08-27 at 07:49 +0530, Viresh Kumar wrote: > Few colleagues asked me why isn't checkpatch warning for (NULL == ptr) > or (NULL != ptr) checks, as it warns for (ptr == NULL) and (ptr != NULL). > > Did you miss it? or was it intentional ?
I didn't miss it. NULL == foo is relatively unusual and not really worth the bother. And because most likely, "CONST test variable" checks like NULL != foo and 0 < bar should probably be a separate test. Something like: --- scripts/checkpatch.pl | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index e14dcdb..457ddef 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -4231,6 +4231,29 @@ sub process { } } +# comparisons with a constant on the left + if ($^V && $^V ge 5.10.0 && + $line =~ /\b($Constant|[A-Z_]+)\s*($Compare)\s*($LvalOrFunc)/) { + my $const = $1; + my $comp = $2; + my $to = $3; + my $newcomp = $comp; + if (WARN("CONSTANT_COMPARISON", + "Comparisons should place the constant on the right side of the test\n" . $herecurr) && + $fix) { + if ($comp eq "<") { + $newcomp = ">="; + } elsif ($comp eq "<=") { + $newcomp = ">"; + } elsif ($comp eq ">") { + $newcomp = "<="; + } elsif ($comp eq ">=") { + $newcomp = "<"; + } + $fixed[$fixlinenr] =~ s/\(\s*\Q$const\E\s*$Compare\s*\Q$to\E\s*\)/($to $newcomp $const)/; + } + } + # Return of what appears to be an errno should normally be negative if ($sline =~ /\breturn(?:\s*\(+\s*|\s+)(E[A-Z]+)(?:\s*\)+\s*|\s*)[;:,]/) { my $name = $1; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/