From: "Yann E. MORIN" <yann.morin.1998@free.fr>
To: Michael Opdenacker <michael.opdenacker@free-electrons.com>
Cc: mmarek@suse.cz, akpm@linux-foundation.org, joe@perches.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] scripts/checkkconfig.py: find unused Kconfig parameters
Date: Tue, 29 Oct 2013 19:06:19 +0100 [thread overview]
Message-ID: <20131029180619.GC3411@free.fr> (raw)
In-Reply-To: <1382592209-10246-1-git-send-email-michael.opdenacker@free-electrons.com>
Michael, All,
On 2013-10-24 07:23 +0200, Michael Opdenacker spake thusly:
> This is the first version of a script to look for
> Kconfig parameters which are still defined but no longer
> used in the kernel source code.
>
> The script may be extended in the future to perform
> more checks. This explains why a rather generic name was chosen.
>
> Several issues have already been reported and fixed
> thanks to the use of this script. It is time to share it now!
I'm not much of a Python guy, so I'll gleefully rely on the previous
comments to guide you in your endeavour.
/me is feeling poetical, tonight! ;-)
I however have a suggestion, see below.
> Signed-off-by: Michael Opdenacker <michael.opdenacker@free-electrons.com>
> ---
> scripts/checkkconfig.py | 131 ++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 131 insertions(+)
> create mode 100755 scripts/checkkconfig.py
>
> diff --git a/scripts/checkkconfig.py b/scripts/checkkconfig.py
> new file mode 100755
> index 0000000..4155656
> --- /dev/null
> +++ b/scripts/checkkconfig.py
> @@ -0,0 +1,131 @@
[--SNIP--]
> +def count_param(param):
> +
> + global source_file, bad_params_in_file
> +
> + if os.path.isdir('.git'):
> + # Use git grep when available
> + count = subprocess.check_output('git grep ' + param + '| grep -v defconfig | wc -l', shell=True)
> + else:
> + # Fallback to regular grep
> + count = subprocess.check_output('grep -R ' + param + ' . | grep -v defconfig | wc -l', shell=True)
> +
> + num = int(count.strip())
> +
> + if num == 1:
> + 'WARNING: parameter ' + param + ' is used nowhere'
> +
> + file=source_file[param]
> +
> + if bad_params_in_file.has_key(file):
> + bad_params_in_file[file].append(param)
> + else:
> + bad_params_in_file[file]=[param]
> +
> +
> +########################################################
> +# Main program
> +########################################################
[--SNIP--]
> +for param in has_select.keys():
> +
> + # Progress information... running the script can take hours!
I guess all these grep spawning are what makes it slow.
I wonder if it would not be possible to invert the loop (in pseudo
Python code):
for f in all_interesting_files:
read f in memory
for s in all_symbols:
if symbol is in f:
remove f from all_symbols
break the inner-most loop
This way:
- you scan the tree only once
- as soon as a symbol is matched, it is removed, thus decreasing
the amount of checks done in further loops.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
next prev parent reply other threads:[~2013-10-29 18:06 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-24 5:23 [PATCH] scripts/checkkconfig.py: find unused Kconfig parameters Michael Opdenacker
2013-10-24 7:30 ` Joe Perches
2013-10-25 13:38 ` Michael Opdenacker
2013-10-25 13:45 ` Michal Marek
2013-10-30 3:07 ` Michael Opdenacker
2013-10-24 9:39 ` Michal Marek
2013-10-29 18:06 ` Yann E. MORIN [this message]
2013-10-30 3:14 ` Michael Opdenacker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20131029180619.GC3411@free.fr \
--to=yann.morin.1998@free.fr \
--cc=akpm@linux-foundation.org \
--cc=joe@perches.com \
--cc=linux-kernel@vger.kernel.org \
--cc=michael.opdenacker@free-electrons.com \
--cc=mmarek@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox