diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2010-07-02 16:34:55 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2010-07-02 16:34:55 +0000 |
commit | f3e3b4762bfe7caec5bfa50e758bea45ef74e7de (patch) | |
tree | a5caf16ff39d0296297d0b5a82b6f1a6c42560c4 /contrib | |
parent | 14e444c392d7ab69d0dcd299df8abbac067d07dc (diff) | |
download | gcc-f3e3b4762bfe7caec5bfa50e758bea45ef74e7de.tar.gz |
Script to check patches violating the GNU style.
2010-07-02 Sebastian Pop <sebastian.pop@amd.com>
* check_GNU_style.sh: New.
From-SVN: r161729
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/ChangeLog | 4 | ||||
-rwxr-xr-x | contrib/check_GNU_style.sh | 117 |
2 files changed, 121 insertions, 0 deletions
diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 267627adcdb..89c781745b7 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,7 @@ +2010-07-02 Sebastian Pop <sebastian.pop@amd.com> + + * check_GNU_style.sh: New. + 2010-07-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * make_sunver.pl: New file. diff --git a/contrib/check_GNU_style.sh b/contrib/check_GNU_style.sh new file mode 100755 index 00000000000..6396417fab7 --- /dev/null +++ b/contrib/check_GNU_style.sh @@ -0,0 +1,117 @@ +#!/bin/sh + +# Checks some of the GNU style formatting rules in a set of patches. +# Copyright (C) 2010 Free Software Foundation, Inc. +# Contributed by Sebastian Pop <sebastian.pop@amd.com> + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +usage() { + cat <<EOF +check_GNU_style.sh [patch]... + + Checks the patches for some of the GNU style formatting problems. + Please note that these checks are not always accurate, and + complete. The reference documentation of the GNU Coding Standards + can be found here: http://www.gnu.org/prep/standards_toc.html + and there are also some additional coding conventions for GCC: + http://gcc.gnu.org/codingconventions.html + +EOF + exit 1 +} + +test $# -eq 0 && usage + +tmp=check_GNU_style.tmp + +# Grep +g (){ + msg="$1" + arg="$2" + shift 2 + grep -nH '^+' $* \ + | grep -v ':+++' \ + | egrep --color=always -- "$arg" \ + > $tmp && printf "\n$msg\n" + cat $tmp +} + +# And Grep +ag (){ + msg="$1" + arg1="$2" + arg2="$3" + shift 3 + grep -nH '^+' $* \ + | grep -v ':+++' \ + | egrep --color=always -- "$arg1" \ + | egrep --color=always -- "$arg2" \ + > $tmp && printf "\n$msg\n" + cat $tmp +} + +# reVerse Grep +vg (){ + msg="$1" + varg="$2" + arg="$3" + shift 3 + grep -nH '^+' $* \ + | grep -v ':+++' \ + | egrep -v -- "$varg" \ + | egrep --color=always -- "$arg" \ + > $tmp && printf "\n$msg\n" + cat $tmp +} + +col (){ + msg="$1" + shift 1 + grep -nH '^+' $* \ + | grep -v ':+++' \ + | cut -f 2 -d '+' \ + | awk '{ if (length ($0) > 80) print $0 }' \ + > $tmp && printf "\n$msg\n" + cat $tmp +} + +col 'Lines should not exceed 80 characters.' $* + +g 'Trailing whitespace.' \ + '[[:space:]]$' $* + +g 'Space before dot.' \ + '[[:alnum:]][[:blank:]]+\.' $* + +g 'Dot, space, space, new sentence.' \ + '[[:alnum:]]\.([[:blank:]]|[[:blank:]]{3,})[[:alnum:]]' $* + +g 'Dot, space, space, end of comment.' \ + '[[:alnum:]]\.([[:blank:]]{0,1}|[[:blank:]]{3,})\*/' $* + +g 'Sentences should end with a dot. Dot, space, space, end of the comment.' \ + '[[:alnum:]][[:blank:]]*\*/' $* + +vg 'There should be exactly one space between function name and parentheses.' \ + '\#define' '[[:alnum:]]([^[:blank:]]|[[:blank:]]{2,})\(' $* + +g 'There should be no space before closing parentheses.' \ + '[[:graph:]][[:blank:]]+\)' $* + +ag 'Braces should be on a separate line.' \ + '\{' 'if[[:blank:]]\(|while[[:blank:]]\(|switch[[:blank:]]\(' $* + + |