diff --git a/hudson-sflphone-script.sh b/hudson-sflphone-script.sh
index a34919d738319aa768d90c05ce9297d2faff8072..476f0eba1c92458ae381c96f371436335e87f955 100755
--- a/hudson-sflphone-script.sh
+++ b/hudson-sflphone-script.sh
@@ -4,10 +4,26 @@
 #
 # Author: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>
 
+XML_RESULTS="cppunitresults.xml"
+TEST=0
+BUILD=
+CODE_ANALYSIS=0
+
+function run_code_analysis {
+	# Check if cppcheck is installed on the system
+	if [ `which cppcheck &>/dev/null ; echo $?` -ne 1 ] ; then
+		cppcheck . --enable=all --xml 2> cppcheck-report.xml
+	fi
+}
+
 function build_daemon {
 
 	# Compile the daemon
 	pushd daemon
+	# Run static analysis code tool
+	if [ $CODE_ANALYSIS == 1 ]; then
+		run_code_analysis
+	fi
 	make distclean
 	./autogen.sh
 	# Compile pjproject first
@@ -18,12 +34,15 @@ function build_daemon {
 	popd
 	./configure --prefix=/usr
 	make clean
+	# Compile src code
 	make -j
+	# Generate documentation
 	make doc
+	# Compile unit tests
 	make check
 	popd
 
-	if [ $1 == 1 ]; then
+	if [ $TEST == 1 ]; then
 		# Run the unit tests for the daemon
 		pushd daemon/test
 		# Remove the previous XML test file
@@ -63,11 +82,8 @@ fi
 
 
 git clean -f -d -x
-XML_RESULTS="cppunitresults.xml"
-TEST=0
-BUILD=
 
-while getopts ":b: t" opt; do
+while getopts ":b: t a" opt; do
 	case $opt in
 		b)
 			echo "-b was triggered. Parameter: $OPTARG" >&2
@@ -77,6 +93,10 @@ while getopts ":b: t" opt; do
 			echo "-t was triggered. Tests will be run" >&2
 			TEST=1
 			;;
+		a)
+			echo "-a was triggered. Static code analysis will be run" >&2
+			CODE_ANALYSIS=1
+			;;
 		\?)
 			echo "Invalid option: -$OPTARG" >&2
 			exit 1
@@ -89,7 +109,7 @@ while getopts ":b: t" opt; do
 done
 
 # Call appropriate build function, with parameters if needed
-build_$BUILD $TEST
+build_$BUILD
 
 # SUCCESS
 exit 0