Message ID | 1358328907-18376-1-git-send-email-colin.king@canonical.com |
---|---|
State | Accepted |
Headers | show |
On Wed, Jan 16, 2013 at 5:35 PM, Colin King <colin.king@canonical.com> wrote: > From: Colin Ian King <colin.king@canonical.com> > > Add a bash script to automatically fetch and build the latest version > of smatch and then build fwts with this to find any coding errors. > > This may find some false positives, but smatch is very useful at finding > some more subtle bugs so I think the false positives are worth the pain. > > Signed-off-by: Colin Ian King <colin.king@canonical.com> > --- > smatchify.sh | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 119 insertions(+) > create mode 100755 smatchify.sh > > diff --git a/smatchify.sh b/smatchify.sh > new file mode 100755 > index 0000000..c6efe59 > --- /dev/null > +++ b/smatchify.sh > @@ -0,0 +1,119 @@ > +#!/bin/bash > +# > +# Copyright (C) 2012-2013 Canonical > +# > +# 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 2 > +# 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. > +# > + > +SMATCH_DIR=smatch > +SMATCH_REPO=git://repo.or.cz/smatch > +DEPENDENCIES="libxml2-dev llvm-dev libsqlite3-dev" > + > +INCLUDES="-I/usr/lib/gcc/i686-linux-gnu/ -I/usr/include/x86_64-linux-gnu" > + > +HERE=$(pwd) > + > +# > +# Install any packages we depend on to build smatch > +# > +smatch_install_dependencies() > +{ > + install="" > + > + echo "Checking for dependencies for smatch.." > + > + for d in ${DEPENDENCIES} > + do > + if [ "$(dpkg -l | grep $d)" == "" ]; then > + install="$install $d" > + fi > + done > + if [ "$install" != "" ]; then > + echo "Need to install:$install" > + sudo apt-get install $install > + if [ $? -ne 0 ]; then > + echo "Installation of packages failed" > + exit 1 > + fi > + fi > +} > + > +# > +# Get an upto date version of smatch > +# > +smatch_get() > +{ > + if [ -d ${SMATCH_DIR} ]; then > + echo "Getting latest version of smatch.." > + cd ${SMATCH_DIR} > + git checkout -f master >& /dev/null > + git fetch origin >& /dev/null > + git fetch origin master >& /dev/null > + git reset --hard FETCH_HEAD >& /dev/null > + cd ${HERE} > + else > + echo "Getting smatch.." > + git clone ${SMATCH_REPO} ${SMATCH_DIR} > + fi > +} > + > +# > +# Build smatch > +# > +smatch_build() > +{ > + cd ${SMATCH_DIR} > + echo "Smatch: make clean.." > + make clean >& /dev/null > + echo "Smatch: make.." > + make > /dev/null 2>&1 > + if [ $? -eq 0 ]; then > + echo "Build of smatch succeeded" > + else > + echo "Build of smatchfailed" > + exit 1 > + fi > + cd ${HERE} > +} > + > +# > +# Build fwts using smatch > +# > +smatch_fwts() > +{ > + echo "Building fwts.." > + autoreconf -ivf > /dev/null > + ./configure > /dev/null > + make clean > + > + make CHECK="${HERE}/${SMATCH_DIR}/smatch --full-path" \ > + CC="${HERE}/${SMATCH_DIR}/cgcc $INCLUDES" | tee smatch.log > +} > + > +# > +# Check for errors > +# > +smatch_errors() > +{ > + errors=$(grep "error: " smatch.log | wc -l) > + echo " " > + echo "Smatch found $errors errors, see smatch.log for more details." > +} > + > +smatch_install_dependencies > +smatch_get > +smatch_build > +smatch_fwts > +smatch_errors > -- > 1.8.0 > Acked-by: Keng-Yu Lin <kengyu@canonical.com>
On 01/16/2013 05:35 PM, Colin King wrote: > From: Colin Ian King <colin.king@canonical.com> > > Add a bash script to automatically fetch and build the latest version > of smatch and then build fwts with this to find any coding errors. > > This may find some false positives, but smatch is very useful at finding > some more subtle bugs so I think the false positives are worth the pain. > > Signed-off-by: Colin Ian King <colin.king@canonical.com> > --- > smatchify.sh | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 119 insertions(+) > create mode 100755 smatchify.sh > > diff --git a/smatchify.sh b/smatchify.sh > new file mode 100755 > index 0000000..c6efe59 > --- /dev/null > +++ b/smatchify.sh > @@ -0,0 +1,119 @@ > +#!/bin/bash > +# > +# Copyright (C) 2012-2013 Canonical > +# > +# 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 2 > +# 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. > +# > + > +SMATCH_DIR=smatch > +SMATCH_REPO=git://repo.or.cz/smatch > +DEPENDENCIES="libxml2-dev llvm-dev libsqlite3-dev" > + > +INCLUDES="-I/usr/lib/gcc/i686-linux-gnu/ -I/usr/include/x86_64-linux-gnu" > + > +HERE=$(pwd) > + > +# > +# Install any packages we depend on to build smatch > +# > +smatch_install_dependencies() > +{ > + install="" > + > + echo "Checking for dependencies for smatch.." > + > + for d in ${DEPENDENCIES} > + do > + if [ "$(dpkg -l | grep $d)" == "" ]; then > + install="$install $d" > + fi > + done > + if [ "$install" != "" ]; then > + echo "Need to install:$install" > + sudo apt-get install $install > + if [ $? -ne 0 ]; then > + echo "Installation of packages failed" > + exit 1 > + fi > + fi > +} > + > +# > +# Get an upto date version of smatch > +# > +smatch_get() > +{ > + if [ -d ${SMATCH_DIR} ]; then > + echo "Getting latest version of smatch.." > + cd ${SMATCH_DIR} > + git checkout -f master >& /dev/null > + git fetch origin >& /dev/null > + git fetch origin master >& /dev/null > + git reset --hard FETCH_HEAD >& /dev/null > + cd ${HERE} > + else > + echo "Getting smatch.." > + git clone ${SMATCH_REPO} ${SMATCH_DIR} > + fi > +} > + > +# > +# Build smatch > +# > +smatch_build() > +{ > + cd ${SMATCH_DIR} > + echo "Smatch: make clean.." > + make clean >& /dev/null > + echo "Smatch: make.." > + make > /dev/null 2>&1 > + if [ $? -eq 0 ]; then > + echo "Build of smatch succeeded" > + else > + echo "Build of smatchfailed" > + exit 1 > + fi > + cd ${HERE} > +} > + > +# > +# Build fwts using smatch > +# > +smatch_fwts() > +{ > + echo "Building fwts.." > + autoreconf -ivf > /dev/null > + ./configure > /dev/null > + make clean > + > + make CHECK="${HERE}/${SMATCH_DIR}/smatch --full-path" \ > + CC="${HERE}/${SMATCH_DIR}/cgcc $INCLUDES" | tee smatch.log > +} > + > +# > +# Check for errors > +# > +smatch_errors() > +{ > + errors=$(grep "error: " smatch.log | wc -l) > + echo " " > + echo "Smatch found $errors errors, see smatch.log for more details." > +} > + > +smatch_install_dependencies > +smatch_get > +smatch_build > +smatch_fwts > +smatch_errors > Acked-by: Ivan Hu <ivan.hu@canonical.com>
On 01/16/2013 01:35 AM, Colin King wrote: > From: Colin Ian King <colin.king@canonical.com> > > Add a bash script to automatically fetch and build the latest version > of smatch and then build fwts with this to find any coding errors. > > This may find some false positives, but smatch is very useful at finding > some more subtle bugs so I think the false positives are worth the pain. > > Signed-off-by: Colin Ian King <colin.king@canonical.com> > --- > smatchify.sh | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 119 insertions(+) > create mode 100755 smatchify.sh > > diff --git a/smatchify.sh b/smatchify.sh > new file mode 100755 > index 0000000..c6efe59 > --- /dev/null > +++ b/smatchify.sh > @@ -0,0 +1,119 @@ > +#!/bin/bash > +# > +# Copyright (C) 2012-2013 Canonical > +# > +# 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 2 > +# 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. > +# > + > +SMATCH_DIR=smatch > +SMATCH_REPO=git://repo.or.cz/smatch > +DEPENDENCIES="libxml2-dev llvm-dev libsqlite3-dev" > + > +INCLUDES="-I/usr/lib/gcc/i686-linux-gnu/ -I/usr/include/x86_64-linux-gnu" > + > +HERE=$(pwd) > + > +# > +# Install any packages we depend on to build smatch > +# > +smatch_install_dependencies() > +{ > + install="" > + > + echo "Checking for dependencies for smatch.." > + > + for d in ${DEPENDENCIES} > + do > + if [ "$(dpkg -l | grep $d)" == "" ]; then > + install="$install $d" > + fi > + done > + if [ "$install" != "" ]; then > + echo "Need to install:$install" > + sudo apt-get install $install > + if [ $? -ne 0 ]; then > + echo "Installation of packages failed" > + exit 1 > + fi > + fi > +} > + > +# > +# Get an upto date version of smatch > +# > +smatch_get() > +{ > + if [ -d ${SMATCH_DIR} ]; then > + echo "Getting latest version of smatch.." > + cd ${SMATCH_DIR} > + git checkout -f master >& /dev/null > + git fetch origin >& /dev/null > + git fetch origin master >& /dev/null > + git reset --hard FETCH_HEAD >& /dev/null > + cd ${HERE} > + else > + echo "Getting smatch.." > + git clone ${SMATCH_REPO} ${SMATCH_DIR} > + fi > +} > + > +# > +# Build smatch > +# > +smatch_build() > +{ > + cd ${SMATCH_DIR} > + echo "Smatch: make clean.." > + make clean >& /dev/null > + echo "Smatch: make.." > + make > /dev/null 2>&1 > + if [ $? -eq 0 ]; then > + echo "Build of smatch succeeded" > + else > + echo "Build of smatchfailed" > + exit 1 > + fi > + cd ${HERE} > +} > + > +# > +# Build fwts using smatch > +# > +smatch_fwts() > +{ > + echo "Building fwts.." > + autoreconf -ivf > /dev/null > + ./configure > /dev/null > + make clean > + > + make CHECK="${HERE}/${SMATCH_DIR}/smatch --full-path" \ > + CC="${HERE}/${SMATCH_DIR}/cgcc $INCLUDES" | tee smatch.log > +} > + > +# > +# Check for errors > +# > +smatch_errors() > +{ > + errors=$(grep "error: " smatch.log | wc -l) > + echo " " > + echo "Smatch found $errors errors, see smatch.log for more details." > +} > + > +smatch_install_dependencies > +smatch_get > +smatch_build > +smatch_fwts > +smatch_errors > Acked-by: Alex Hung <alex.hung@canonical.com>
diff --git a/smatchify.sh b/smatchify.sh new file mode 100755 index 0000000..c6efe59 --- /dev/null +++ b/smatchify.sh @@ -0,0 +1,119 @@ +#!/bin/bash +# +# Copyright (C) 2012-2013 Canonical +# +# 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 2 +# 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. +# + +SMATCH_DIR=smatch +SMATCH_REPO=git://repo.or.cz/smatch +DEPENDENCIES="libxml2-dev llvm-dev libsqlite3-dev" + +INCLUDES="-I/usr/lib/gcc/i686-linux-gnu/ -I/usr/include/x86_64-linux-gnu" + +HERE=$(pwd) + +# +# Install any packages we depend on to build smatch +# +smatch_install_dependencies() +{ + install="" + + echo "Checking for dependencies for smatch.." + + for d in ${DEPENDENCIES} + do + if [ "$(dpkg -l | grep $d)" == "" ]; then + install="$install $d" + fi + done + if [ "$install" != "" ]; then + echo "Need to install:$install" + sudo apt-get install $install + if [ $? -ne 0 ]; then + echo "Installation of packages failed" + exit 1 + fi + fi +} + +# +# Get an upto date version of smatch +# +smatch_get() +{ + if [ -d ${SMATCH_DIR} ]; then + echo "Getting latest version of smatch.." + cd ${SMATCH_DIR} + git checkout -f master >& /dev/null + git fetch origin >& /dev/null + git fetch origin master >& /dev/null + git reset --hard FETCH_HEAD >& /dev/null + cd ${HERE} + else + echo "Getting smatch.." + git clone ${SMATCH_REPO} ${SMATCH_DIR} + fi +} + +# +# Build smatch +# +smatch_build() +{ + cd ${SMATCH_DIR} + echo "Smatch: make clean.." + make clean >& /dev/null + echo "Smatch: make.." + make > /dev/null 2>&1 + if [ $? -eq 0 ]; then + echo "Build of smatch succeeded" + else + echo "Build of smatchfailed" + exit 1 + fi + cd ${HERE} +} + +# +# Build fwts using smatch +# +smatch_fwts() +{ + echo "Building fwts.." + autoreconf -ivf > /dev/null + ./configure > /dev/null + make clean + + make CHECK="${HERE}/${SMATCH_DIR}/smatch --full-path" \ + CC="${HERE}/${SMATCH_DIR}/cgcc $INCLUDES" | tee smatch.log +} + +# +# Check for errors +# +smatch_errors() +{ + errors=$(grep "error: " smatch.log | wc -l) + echo " " + echo "Smatch found $errors errors, see smatch.log for more details." +} + +smatch_install_dependencies +smatch_get +smatch_build +smatch_fwts +smatch_errors