From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751989AbdHAFEx (ORCPT ); Tue, 1 Aug 2017 01:04:53 -0400 Received: from mail3-relais-sop.national.inria.fr ([192.134.164.104]:11251 "EHLO mail3-relais-sop.national.inria.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751758AbdHAFEw (ORCPT ); Tue, 1 Aug 2017 01:04:52 -0400 X-IronPort-AV: E=Sophos;i="5.41,305,1498514400"; d="scan'208";a="233349022" Date: Tue, 1 Aug 2017 07:04:50 +0200 (CEST) From: Julia Lawall X-X-Sender: jll@hadrien To: "Gustavo A. R. Silva" cc: Julia Lawall , Gilles Muller , Nicolas Palix , Michal Marek , cocci@systeme.lip6.fr, linux-kernel@vger.kernel.org, Pavel Machek , Borislav Petkov , Peter Senna Tschudin Subject: Re: [PATCH v2] Coccinelle: Script to remove unnecessary static on local variables In-Reply-To: <20170801043804.GA4265@embeddedgus> Message-ID: References: <20170801043804.GA4265@embeddedgus> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Acked-by: Julia Lawall On Mon, 31 Jul 2017, Gustavo A. R. Silva wrote: > Coccinelle script to remove unnecessary static on local variables when > the variables are not used before update. > > Signed-off-by: Gustavo A. R. Silva > --- > Changes in v2: > Update header and Copyright note. > > scripts/coccinelle/misc/static_unnecessary.cocci | 96 ++++++++++++++++++++++++ > 1 file changed, 96 insertions(+) > create mode 100644 scripts/coccinelle/misc/static_unnecessary.cocci > > diff --git a/scripts/coccinelle/misc/static_unnecessary.cocci b/scripts/coccinelle/misc/static_unnecessary.cocci > new file mode 100644 > index 0000000..2b10586 > --- /dev/null > +++ b/scripts/coccinelle/misc/static_unnecessary.cocci > @@ -0,0 +1,96 @@ > +/// Drop static on local variable when the variable is not used before update. > +//# > +//# Removing unnecessary static on local variables reduces the code > +//# size and increases maintainability. > +//# > +//# On the other hand, even though it is rare, be aware that if a > +//# large object is initialized all at once, it might not be wise > +//# to remove the static because that would increase the risk of a > +//# stack overflow. > +/// > +// Confidence: Moderate > +// Copyright: (C) 2017 Julia Lawall, Inria. GPLv2. > +// URL: http://coccinelle.lip6.fr/ > +// Copyright: (C) 2017 Gustavo A. R. Silva. GPLv2. > +// Work supported by a grant from > +// The Linux Foundation's Core Infrastructure Initiative. > +// URL: https://www.coreinfrastructure.org/ > +// Options: --no-includes --include-headers > +// Keywords: static > + > +virtual patch > +virtual context > +virtual org > +virtual report > + > +// > +@bad exists@ > +position p; > +identifier x; > +expression e; > +type T; > +@@ > + > +T x@p; > +... when != x = e > +x = <+...x...+> > + > +@worse exists@ > +position p; > +identifier x; > +type T; > +@@ > + > +T x@p; > +... > + &x > + > +@modify depends on patch && !context && !org && !report@ > +identifier x; > +expression e; > +type T; > +position p != {bad.p,worse.p}; > +@@ > + > +-static > + T x@p; > + ... when != x > + when strict > +?x = e; > +// > + > + > +// ---------------------------------------------------------------------------- > + > +@modify_context depends on !patch && (context || org || report) forall@ > +type T; > +identifier x; > +expression e; > +position p != {bad.p,worse.p}; > +position j0; > +@@ > + > +* static > + T x@j0@p; > + ... when != x > + when strict > +?x = e; > + > +// ---------------------------------------------------------------------------- > + > +@script:python modify_org depends on org@ > +j0 << modify_context.j0; > +@@ > + > +msg = "Unnecessary static on local variable." > +coccilib.org.print_todo(j0[0], msg) > + > +// ---------------------------------------------------------------------------- > + > +@script:python modify_report depends on report@ > +j0 << modify_context.j0; > +@@ > + > +msg = "Unnecessary static on local variable." > +coccilib.report.print_report(j0[0], msg) > + > -- > 2.5.0 > >