#!/bin/bash # # $Id$ # # Mesures quality improvement of mondorescue project # # Adapt to your needs dname=`dirname $0` prem=`echo $dname |cut -c1` if [ ${prem} == "/" ]; then export TOOLHOME=$dname else export TOOLHOME=${PWD}/$dname fi d=$TOOLHOME/.. if [ $# -gt 0 ]; then if [ -d $1 ]; then d=$1 fi fi echo "Working on $d" echo " " cd $d # How many sprintf/strcat/strcpy vs asprintf are they for s in asprintf mr_asprintf sprintf snprintf strcat strncat strcpy strncpy fgets malloc mr_malloc malloc_string getline mr_getline ARBITRARY_MAXIMUM MAX_TAPECATALOG_ENTRIES MAX_MOUNTLIST_ENTRIES MAXIMUM_RAID_DEVS MAXIMUM_ADDITIONAL_RAID_VARS MAXIMUM_DISKS_PER_RAID_DEV MAX_TAPECAT_FNAME_LEN MAX_NOOF_MEDIA MAX_NEWT_COMMENT_LEN MAX_NOOF_SETS_HERE MAX_STR_LEN getcwd goto free mr_free paranoid_free paranoid_system mr_system assert; do echo "mondorescue $s usage : " tot=0 for i in `find . -name '*.c' -o -name '*.h' | egrep -v '\.svn|/\*|monitas|mindi-busybox' | xargs grep -r -c -w $s | egrep -v ":0$"`; do echo " === $i" ((tot=$tot+`echo $i | cut -d: -f2`)) done echo "total $s usage : $tot" done echo " " echo "Qualimetry: " pbg -w asprintf | grep -vE 'monitas|mindi-busybox|quality|/\*|asprintf\(&' > /tmp/mondo.quality cat /tmp/mondo.quality echo "mondorescue uses : `cat /tmp/mondo.quality | wc -l` asprintf without &" pbg -w getline | grep -vE 'monitas|mindi-busybox|quality|/\*|getline\(&' > /tmp/mondo.quality cat /tmp/mondo.quality echo "mondorescue uses : `cat /tmp/mondo.quality | wc -l` getline without &" pbg -w mr_asprintf | grep -vE '"|FNAME|ISOFS|syscall_sprintf|mr_mem|quality' > /tmp/mondo.quality cat /tmp/mondo.quality echo "mondorescue uses : `cat /tmp/mondo.quality | wc -l` mr_asprintf without \"" pbg 'mr_asprintf\(\&' > /tmp/mondo.quality cat /tmp/mondo.quality echo "mondorescue uses : `cat /tmp/mondo.quality | wc -l` mr_asprintf with \&" pbg 'mr_getline\(\&' > /tmp/mondo.quality cat /tmp/mondo.quality echo "mondorescue uses : `cat /tmp/mondo.quality | wc -l` mr_getline with \&" echo " " echo "Splint: " find . -name '*.c' -o -name '*.h' | xargs splint +posixlib -Dlinux rm -f /tmp/mondo.quality