public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH 0/20] fix misspelling of current function in string
@ 2014-12-07 19:20 Julia Lawall
  2014-12-07 19:20 ` [PATCH 7/20] drm/i915: " Julia Lawall
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Julia Lawall @ 2014-12-07 19:20 UTC (permalink / raw)
  To: linux-wireless
  Cc: devel, linux-samsung-soc, linux-scsi, kernel-janitors, intel-gfx,
	linux-usb, linux, linux-kernel, dri-devel, netdev, linux-mtd,
	linux-pci, joe, linux-arm-kernel

These patches replace what appears to be a reference to the name of the
current function but is misspelled in some way by either the name of the
function itself, or by %s and then __func__ in an argument list.

// <smpl>
// sudo apt-get install python-pip
// sudo pip install python-Levenshtein
// spatch requires the argument --in-place

virtual after_start

@initialize:ocaml@
@@

let extensible_functions = ref ([] : string list)
let restarted = ref false

let restart _ =
  restarted := true;
  let it = new iteration() in
  it#add_virtual_rule After_start;
  Printf.eprintf "restarting\n";
  it#register()

@initialize:python@
@@
import re
from Levenshtein import distance
mindist = 1 // 1 to find only misspellings
maxdist = 2
ignore_leading = True

// ---------------------------------------------------------------------

@r0@
constant char [] c;
identifier f;
@@

f(...,c,...)

@script:ocaml@
c << r0.c;
f << r0.f;
@@

(if not !restarted then restart());
match Str.split_delim (Str.regexp "%") c with
  _::_::_ ->
    if not (List.mem f !extensible_functions)
    then extensible_functions := f :: !extensible_functions
| _ -> ()

// ---------------------------------------------------------------------

@r depends on after_start@
constant char [] c;
position p;
identifier f;
@@

f(...,c@p,...)

@script:python flt@
c << r.c;
p << r.p;
matched;
@@

func = p[0].current_element
wpattern = "[a-zA-Z_][a-zA-Z0-9_]*"
if ignore_leading:
   func = func.strip("_")
   wpattern = "[a-zA-Z][a-zA-Z0-9_]*"
lf = len(func)
cocci.include_match(False)
// ignore extremely short function names
if lf > 3:
   words = [w for w in re.findall(wpattern, c) if abs(len(w) - lf) <= maxdist]
   for w in words:
       d = distance(w, func) 
       if mindist <= d and d <= maxdist:
          coccinelle.matched = w
          cocci.include_match(True)
     	  //print "%s:%d:%s():%d: %s" % (p[0].file, int(p[0].line), func, d, c)
	  break

@script:ocaml r2@
c << r.c;
f << r.f;
matched << flt.matched;
fixed;
@@

let pieces = Str.split_delim (Str.regexp_string matched) c in
match pieces with
  [before;after] ->
    let preceeding =
      List.length(Str.split (Str.regexp_string "%") before) > 1 in
    if preceeding
    then Coccilib.include_match false
    else
      if List.mem f !extensible_functions
      then fixed := before ^ "%s" ^ after
      else Coccilib.include_match false
| _ -> Coccilib.include_match false

@changed1@
constant char [] r.c;
identifier r2.fixed;
position r.p;
identifier r.f;
@@

f(...,
-c@p
+fixed,__func__
 ,...)

// -------------------------------------------------------------------

@s depends on after_start@
constant char [] c;
position p;
identifier f;
@@

f(...,c@p,...)

@script:python flt2@
c << s.c;
p << s.p;
matched;
@@

func = p[0].current_element
wpattern = "[a-zA-Z_][a-zA-Z0-9_]*"
if ignore_leading:
   func = func.strip("_")
   wpattern = "[a-zA-Z][a-zA-Z0-9_]*"
lf = len(func)
cocci.include_match(False)
// ignore extremely short function names
if lf > 3:
   words = [w for w in re.findall(wpattern, c) if abs(len(w) - lf) <= maxdist]
   for w in words:
       d = distance(w, func) 
       if mindist <= d and d <= maxdist:
          coccinelle.matched = w
          cocci.include_match(True)
     	  //print "%s:%d:%s():%d: %s" % (p[0].file, int(p[0].line), func, d, c)
	  break

@script:ocaml s2@
c << s.c;
f << s.f;
p << s.p;
matched << flt2.matched;
fixed;
@@

let ce = (List.hd p).current_element in
let pieces = Str.split_delim (Str.regexp_string matched) c in
match pieces with
  [before;after] ->
    let preceeding =
      List.length(Str.split (Str.regexp_string "%") before) > 1 in
    if preceeding
    then Coccilib.include_match false
    else
      if List.mem f !extensible_functions
      then Coccilib.include_match false
      else fixed := before ^ ce ^ after
| _ -> Coccilib.include_match false

@changed2@
constant char [] s.c;
identifier s2.fixed;
position s.p;
identifier s.f;
@@

f(...,
-c@p
+fixed
 ,...)
// </smpl>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 7/20] drm/i915: fix misspelling of current function in string
  2014-12-07 19:20 [PATCH 0/20] fix misspelling of current function in string Julia Lawall
@ 2014-12-07 19:20 ` Julia Lawall
  2014-12-08 10:24   ` Jani Nikula
  2014-12-07 23:44 ` [PATCH 0/20] " Julian Calaby
  2014-12-08  3:55 ` Joe Perches
  2 siblings, 1 reply; 8+ messages in thread
From: Julia Lawall @ 2014-12-07 19:20 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: kernel-janitors, linux, joe, Jani Nikula, David Airlie, intel-gfx,
	dri-devel, linux-kernel

Replace a misspelled function name by %s and then __func__.

This was done using Coccinelle, including the use of Levenshtein distance,
as proposed by Rasmus Villemoes.

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>

---
The semantic patch is difficult to summarize, but is available in the cover
letter of this patch series.

The message is sort of ambiguous, but I assume that it is intended to refer
to the function in which the problem is detected.

 drivers/gpu/drm/i915/i915_gem.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index d2ba315..fa21d1c 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -4335,7 +4335,7 @@ i915_gem_unpin_ioctl(struct drm_device *dev, void *data,
 	}
 
 	if (obj->pin_filp != file) {
-		DRM_DEBUG("Not pinned by caller in i915_gem_pin_ioctl(): %d\n",
+		DRM_DEBUG("Not pinned by caller in %s(): %d\n", __func__,
 			  args->handle);
 		ret = -EINVAL;
 		goto out;

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 0/20] fix misspelling of current function in string
  2014-12-07 19:20 [PATCH 0/20] fix misspelling of current function in string Julia Lawall
  2014-12-07 19:20 ` [PATCH 7/20] drm/i915: " Julia Lawall
@ 2014-12-07 23:44 ` Julian Calaby
  2014-12-08  6:43   ` Julia Lawall
  2014-12-08  3:55 ` Joe Perches
  2 siblings, 1 reply; 8+ messages in thread
From: Julian Calaby @ 2014-12-07 23:44 UTC (permalink / raw)
  To: Julia Lawall
  Cc: devel@driverdev.osuosl.org, linux-samsung-soc, linux-scsi,
	linux-pci, linux-wireless, intel-gfx, linux-usb, kernel-janitors,
	linux-kernel@vger.kernel.org, dri-devel, netdev, linux-mtd, linux,
	Joe Perches, Mailing List, Arm

Hi Julia,

On Mon, Dec 8, 2014 at 6:20 AM, Julia Lawall <Julia.Lawall@lip6.fr> wrote:
> These patches replace what appears to be a reference to the name of the
> current function but is misspelled in some way by either the name of the
> function itself, or by %s and then __func__ in an argument list.

Would there be any value in doing this for _all_ cases where the
function name is written in a format string?

Thanks,

-- 
Julian Calaby

Email: julian.calaby@gmail.com
Profile: http://www.google.com/profiles/julian.calaby/

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 0/20] fix misspelling of current function in string
  2014-12-07 19:20 [PATCH 0/20] fix misspelling of current function in string Julia Lawall
  2014-12-07 19:20 ` [PATCH 7/20] drm/i915: " Julia Lawall
  2014-12-07 23:44 ` [PATCH 0/20] " Julian Calaby
@ 2014-12-08  3:55 ` Joe Perches
  2 siblings, 0 replies; 8+ messages in thread
From: Joe Perches @ 2014-12-08  3:55 UTC (permalink / raw)
  To: Julia Lawall
  Cc: devel, linux-samsung-soc, linux-scsi, linux-pci, linux-wireless,
	intel-gfx, linux-usb, kernel-janitors, linux-kernel, dri-devel,
	netdev, linux-mtd, linux, linux-arm-kernel

On Sun, 2014-12-07 at 20:20 +0100, Julia Lawall wrote:
> These patches replace what appears to be a reference to the name of the
> current function but is misspelled in some way by either the name of the
> function itself, or by %s and then __func__ in an argument list.

At least a few of these seem to be function tracing
style uses that might as well be deleted instead.

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 0/20] fix misspelling of current function in string
  2014-12-07 23:44 ` [PATCH 0/20] " Julian Calaby
@ 2014-12-08  6:43   ` Julia Lawall
  2014-12-10  2:56     ` Julian Calaby
  0 siblings, 1 reply; 8+ messages in thread
From: Julia Lawall @ 2014-12-08  6:43 UTC (permalink / raw)
  To: Julian Calaby
  Cc: devel@driverdev.osuosl.org, linux-samsung-soc, linux-scsi, linux,
	linux-wireless, intel-gfx, linux-usb, kernel-janitors,
	linux-kernel@vger.kernel.org, dri-devel, Julia Lawall, netdev,
	linux-mtd, linux-pci, Joe Perches, Mailing List, Arm

On Mon, 8 Dec 2014, Julian Calaby wrote:

> Hi Julia,
> 
> On Mon, Dec 8, 2014 at 6:20 AM, Julia Lawall <Julia.Lawall@lip6.fr> wrote:
> > These patches replace what appears to be a reference to the name of the
> > current function but is misspelled in some way by either the name of the
> > function itself, or by %s and then __func__ in an argument list.
> 
> Would there be any value in doing this for _all_ cases where the
> function name is written in a format string?

Probably.  But there are a lot of them.  Even for the misspellings, I have 
only don about 1/3 of the cases.

On the other hand, the misspelling have to be checked carefully, because a 
misspelling of one thing could be the correct spelling of the thing thst 
was actually intended.

Joe, however, points out that a lot of these prints are just for function 
tracing, and could be removed.  I worked on another semantic patch that 
tries to do that.  It might be better to remove those prints completely, 
rather than sending one patch to transform them and then one patch to 
remove them after that.  That is why for this series I did only the ones 
where there was actually a problem.

julia
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 7/20] drm/i915: fix misspelling of current function in string
  2014-12-07 19:20 ` [PATCH 7/20] drm/i915: " Julia Lawall
@ 2014-12-08 10:24   ` Jani Nikula
  2014-12-08 14:15     ` Daniel Vetter
  0 siblings, 1 reply; 8+ messages in thread
From: Jani Nikula @ 2014-12-08 10:24 UTC (permalink / raw)
  To: Julia Lawall, Daniel Vetter
  Cc: kernel-janitors, linux, joe, David Airlie, intel-gfx, dri-devel,
	linux-kernel

On Sun, 07 Dec 2014, Julia Lawall <Julia.Lawall@lip6.fr> wrote:
> Replace a misspelled function name by %s and then __func__.
>
> This was done using Coccinelle, including the use of Levenshtein distance,
> as proposed by Rasmus Villemoes.
>
> Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
>
> ---
> The semantic patch is difficult to summarize, but is available in the cover
> letter of this patch series.
>
> The message is sort of ambiguous, but I assume that it is intended to refer
> to the function in which the problem is detected.

Hmm, DRM_DEBUG prints __func__ too.

Jani.

>
>  drivers/gpu/drm/i915/i915_gem.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index d2ba315..fa21d1c 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -4335,7 +4335,7 @@ i915_gem_unpin_ioctl(struct drm_device *dev, void *data,
>  	}
>  
>  	if (obj->pin_filp != file) {
> -		DRM_DEBUG("Not pinned by caller in i915_gem_pin_ioctl(): %d\n",
> +		DRM_DEBUG("Not pinned by caller in %s(): %d\n", __func__,
>  			  args->handle);
>  		ret = -EINVAL;
>  		goto out;
>

-- 
Jani Nikula, Intel Open Source Technology Center

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 7/20] drm/i915: fix misspelling of current function in string
  2014-12-08 10:24   ` Jani Nikula
@ 2014-12-08 14:15     ` Daniel Vetter
  0 siblings, 0 replies; 8+ messages in thread
From: Daniel Vetter @ 2014-12-08 14:15 UTC (permalink / raw)
  To: Jani Nikula
  Cc: linux, intel-gfx, kernel-janitors, linux-kernel, dri-devel,
	Julia Lawall, joe, Daniel Vetter

On Mon, Dec 08, 2014 at 12:24:27PM +0200, Jani Nikula wrote:
> On Sun, 07 Dec 2014, Julia Lawall <Julia.Lawall@lip6.fr> wrote:
> > Replace a misspelled function name by %s and then __func__.
> >
> > This was done using Coccinelle, including the use of Levenshtein distance,
> > as proposed by Rasmus Villemoes.
> >
> > Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
> >
> > ---
> > The semantic patch is difficult to summarize, but is available in the cover
> > letter of this patch series.
> >
> > The message is sort of ambiguous, but I assume that it is intended to refer
> > to the function in which the problem is detected.
> 
> Hmm, DRM_DEBUG prints __func__ too.

We've killed the pin ioctl for 3.20 hence didn't even bother to come up
with an opinion ;-)
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 0/20] fix misspelling of current function in string
  2014-12-08  6:43   ` Julia Lawall
@ 2014-12-10  2:56     ` Julian Calaby
  0 siblings, 0 replies; 8+ messages in thread
From: Julian Calaby @ 2014-12-10  2:56 UTC (permalink / raw)
  To: Julia Lawall
  Cc: devel@driverdev.osuosl.org, linux-samsung-soc, linux-scsi,
	linux-pci, linux-wireless, intel-gfx, linux-usb, kernel-janitors,
	linux-kernel@vger.kernel.org, dri-devel, netdev, linux-mtd, linux,
	Joe Perches, Mailing List, Arm

Hi Julia,

On Mon, Dec 8, 2014 at 5:43 PM, Julia Lawall <julia.lawall@lip6.fr> wrote:
> On Mon, 8 Dec 2014, Julian Calaby wrote:
>
>> Hi Julia,
>>
>> On Mon, Dec 8, 2014 at 6:20 AM, Julia Lawall <Julia.Lawall@lip6.fr> wrote:
>> > These patches replace what appears to be a reference to the name of the
>> > current function but is misspelled in some way by either the name of the
>> > function itself, or by %s and then __func__ in an argument list.
>>
>> Would there be any value in doing this for _all_ cases where the
>> function name is written in a format string?
>
> Probably.  But there are a lot of them.  Even for the misspellings, I have
> only don about 1/3 of the cases.
>
> On the other hand, the misspelling have to be checked carefully, because a
> misspelling of one thing could be the correct spelling of the thing thst
> was actually intended.
>
> Joe, however, points out that a lot of these prints are just for function
> tracing, and could be removed.  I worked on another semantic patch that
> tries to do that.  It might be better to remove those prints completely,
> rather than sending one patch to transform them and then one patch to
> remove them after that.  That is why for this series I did only the ones
> where there was actually a problem.

Ok, that makes sense.

Either way though, this is a really interesting application of the
semantic patching. Nice work!

Thanks,

-- 
Julian Calaby

Email: julian.calaby@gmail.com
Profile: http://www.google.com/profiles/julian.calaby/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-12-10  2:56 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-07 19:20 [PATCH 0/20] fix misspelling of current function in string Julia Lawall
2014-12-07 19:20 ` [PATCH 7/20] drm/i915: " Julia Lawall
2014-12-08 10:24   ` Jani Nikula
2014-12-08 14:15     ` Daniel Vetter
2014-12-07 23:44 ` [PATCH 0/20] " Julian Calaby
2014-12-08  6:43   ` Julia Lawall
2014-12-10  2:56     ` Julian Calaby
2014-12-08  3:55 ` Joe Perches

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox