Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 ///
0003 /// Remove unneeded variable used to store return value.
0004 ///
0005 // Confidence: Moderate
0006 // Copyright: (C) 2012 Peter Senna Tschudin, INRIA/LIP6.
0007 // URL: https://coccinelle.gitlabpages.inria.fr/website
0008 // Comments: Comments on code can be deleted if near code that is removed.
0009 //           "when strict" can be removed to get more hits, but adds false
0010 //           positives
0011 // Options: --no-includes --include-headers
0012 
0013 virtual patch
0014 virtual report
0015 virtual context
0016 virtual org
0017 
0018 @depends on patch@
0019 type T;
0020 constant C;
0021 identifier ret;
0022 @@
0023 - T ret = C;
0024 ... when != ret
0025     when strict
0026 return
0027 - ret
0028 + C
0029 ;
0030 
0031 @depends on context@
0032 type T;
0033 constant C;
0034 identifier ret;
0035 @@
0036 * T ret = C;
0037 ... when != ret
0038     when strict
0039 * return ret;
0040 
0041 @r1 depends on report || org@
0042 type T;
0043 constant C;
0044 identifier ret;
0045 position p1, p2;
0046 @@
0047 T ret@p1 = C;
0048 ... when != ret
0049     when strict
0050 return ret@p2;
0051 
0052 @script:python depends on report@
0053 p1 << r1.p1;
0054 p2 << r1.p2;
0055 C << r1.C;
0056 ret << r1.ret;
0057 @@
0058 coccilib.report.print_report(p1[0], "Unneeded variable: \"" + ret + "\". Return \"" + C + "\" on line " + p2[0].line)
0059 
0060 @script:python depends on org@
0061 p1 << r1.p1;
0062 p2 << r1.p2;
0063 C << r1.C;
0064 ret << r1.ret;
0065 @@
0066 cocci.print_main("unneeded \"" + ret + "\" variable", p1)
0067 cocci.print_sec("return " + C + " here", p2)