#!/bin/bash
# Copyright 2006-2017, Matthew Welland.
#
# This file is part of Megatest.
#
# Megatest 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.
#
# Megatest 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 Megatest. If not, see <http://www.gnu.org/licenses/>.
echo "Finding unused globals:"
for var in $(egrep '^\s*\(define\s+\*' *.scm|awk '{print $2}'|sort -u);do
if ! $(egrep -v '^\s*\(define' *scm| grep "$var" > /dev/null);then
echo "$var not used";
fi;
done
echo
echo "Finding globals without proper definition in common.scm:"
for var in $(egrep -v '^\s*\(define' *.scm|\
grep -P -v '^\s*;'|\
grep -P '\*[a-zA-Z]+\S+\*'|\
tr '*' '/' |\
perl -p -e 's%.*(\/\S+\/).*%$1%'|\
egrep '\/[a-zA-Z]+\S+\/'|\
sort -u);do
newvar=$(echo $var | tr '/' '*')
# echo "VAR is $var, newvar is $newvar"
if ! $(grep -P '^\s*\(define\s+' common.scm|\
grep -P -v '^\s*;'|\
grep "$newvar" > /dev/null);then
echo "$newvar not defined in common.scm"
fi
done