12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- ///
- /// Removes unneeded variable used to store return value.
- ///
- // Confidence: Moderate
- // Copyright: (C) 2012 Peter Senna Tschudin, INRIA/LIP6. GPLv2.
- // URL: http://coccinelle.lip6.fr/
- // Comments: Comments on code can be deleted if near code that is removed.
- // "when strict" can be removed to get more hits, but adds false
- // positives
- // Options: --no-includes --include-headers
- virtual patch
- virtual report
- virtual context
- virtual org
- @depends on patch@
- type T;
- constant C;
- identifier ret;
- @@
- - T ret = C;
- ... when != ret
- when strict
- return
- - ret
- + C
- ;
- @depends on context@
- type T;
- constant C;
- identifier ret;
- @@
- * T ret = C;
- ... when != ret
- when strict
- * return ret;
- @r1 depends on report || org@
- type T;
- constant C;
- identifier ret;
- position p1, p2;
- @@
- T ret@p1 = C;
- ... when != ret
- when strict
- return ret@p2;
- @script:python depends on report@
- p1 << r1.p1;
- p2 << r1.p2;
- C << r1.C;
- ret << r1.ret;
- @@
- coccilib.report.print_report(p1[0], "Unneeded variable: \"" + ret + "\". Return \"" + C + "\" on line " + p2[0].line)
- @script:python depends on org@
- p1 << r1.p1;
- p2 << r1.p2;
- C << r1.C;
- ret << r1.ret;
- @@
- cocci.print_main("unneeded \"" + ret + "\" variable", p1)
- cocci.print_sec("return " + C + " here", p2)
|