> On Jul 14, 2017, at 1:39 PM, Wiles, Keith <keith.wi...@intel.com> wrote: > > >> On Jul 14, 2017, at 12:07 PM, Thomas Monjalon <tho...@monjalon.net> wrote: >> >> Based on Stephen's idea (originally implemented in a Perl script), >> this is a shell script to find duplicated includes in a file. >> It looks for all the .c and .h files of the git repository. >> >> It is fast enough because automatically well parallelized. >> >> Suggested-by: Stephen Hemminger <step...@networkplumber.org> >> Signed-off-by: Thomas Monjalon <tho...@monjalon.net> >> --- >> devtools/check-dup-includes.sh | 35 +++++++++++++++++++++++++++++++++++ >> 1 file changed, 35 insertions(+) >> create mode 100755 devtools/check-dup-includes.sh >> >> diff --git a/devtools/check-dup-includes.sh b/devtools/check-dup-includes.sh >> new file mode 100755 >> index 000000000..ba9871255 >> --- /dev/null >> +++ b/devtools/check-dup-includes.sh >> @@ -0,0 +1,35 @@ >> +#! /bin/sh -e >> + >> +# Copyright 2017 Mellanox Technologies, Ltd. All rights reserved. >> +# >> +# Redistribution and use in source and binary forms, with or without >> +# modification, are permitted provided that the following conditions >> +# are met: >> +# >> +# * Redistributions of source code must retain the above copyright >> +# notice, this list of conditions and the following disclaimer. >> +# * Redistributions in binary form must reproduce the above copyright >> +# notice, this list of conditions and the following disclaimer in >> +# the documentation and/or other materials provided with the >> +# distribution. >> +# >> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, >> +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF >> +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. >> +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY >> +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, >> +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE >> +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. >> + >> +# Check C files in the git repository for duplicated includes. >> + >> +cd $(dirname $(readlink -m $0))/.. > > I tried the script it works, but I am concerned about the ‘cd’ above as it > does all of the the repo. I would like to see it do just the directory and > sub-directories if a path is given. If I am testing a specific PMD or library > then I would not want to do all of the repo. >
I was thinking about something like the following: if [ "$1x" = "x" ]; then cd $(dirname $(readlink -m $0))/.. fi >> + >> +# speed up by ignoring Unicode details >> +export LC_ALL=C >> + >> +for file in $(git ls-files '*.[ch]') ; do >> + sed -rn 's,^[[:space:]]*#include[[:space:]]*[<"](.*)[>"].*,\1,p' $file | >> + sort | uniq -d | >> + sed "s,^,$file: duplicated include: ," >> +done >> -- >> 2.13.2 >> > > Regards, > Keith > Regards, Keith