ACK: [PATCH] script: smatchify.sh: build fwts and check with smatch
Alex Hung
alex.hung at canonical.com
Mon Feb 4 00:01:52 UTC 2013
On 01/16/2013 01:35 AM, Colin King wrote:
> From: Colin Ian King <colin.king at 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 at 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 at canonical.com>
More information about the fwts-devel
mailing list