lkml.org 
[lkml]   [2012]   [May]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH 1/1] checkpatch: don't fake typedefs with #define
    On 17/05/12 14:24 -0700, ext Joe Perches wrote:
    > On Fri, 2012-05-18 at 00:16 +0300, Phil Carmody wrote:
    > > On 17/05/12 13:54 -0700, ext Joe Perches wrote:
    > > > > +# check for deliberate avoidance of the above anti-typedef rule
    > > > > + if ($line =~ /#\s*define\s+$Ident\s+$Type\b/) {
    > > > > + WARN("NEW_TYPEDEFS",
    > > > > + "do not fake typedefs using #define\n" . $herecurr);
    > > > > + }
    > > > > +
    > > >
    > > > I think the false positive rate is pretty high.
    > > > I used this and don't see too many I'd remove.
    > > >
    > > > $ git grep -E "#\s*define\s+\w+\s+(struct|unsigned|char|short|int|long|const)\b"

    I hadn't actually run that before, but to be honest, I think
    few of them have much justification. Or at least, were that
    code to be written today by one of the regular contributors,
    it probably wouldn't be written with such a #define. A lot
    do go directly against the advice in Documentation/CodingStyle.

    > > > Got an example you want this to find?
    > >
    > > Too many. Alas I can't share them.
    >
    > Too bad.
    >
    > If all the defines end in _t maybe you could use
    > if ($line =~ /^\+\s*#\s*define\s+\w+_t\s+$Type\b/) {
    > etc...
    >

    Well, certainly structs are the majority of the immediate ones I'd
    most like to nail, so how about this:

    diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
    index faea0ec..0db7f84 100755
    --- a/scripts/checkpatch.pl
    +++ b/scripts/checkpatch.pl
    @@ -2299,6 +2299,12 @@ sub process {
    "do not add new typedefs\n" . $herecurr);
    }

    +# check for deliberate avoidance of the above anti-typedef rule
    + if ($line =~ /#\s*define\s+$Ident\s+(enum|union|struct)\s+$Ident\b/) {
    + WARN("NEW_TYPEDEFS",
    + "do not fake typedefs using #define\n" . $herecurr);
    + }
    +
    # * goes on variable not on type
    # (char*[ const])
    while ($line =~ m{(\($NonptrType(\s*(?:$Modifier\b\s*|\*\s*)+)\))}g) {

    --
    Phil Carmody
    Tel: +372 5697 1161


    \
     
     \ /
      Last update: 2012-05-21 14:21    [W:0.037 / U:0.416 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site