-
Andre Maroneze authoredAndre Maroneze authored
compute-summary.sh 1.67 KiB
#!/usr/bin/env bash
# Compute a summary table listing general information about each directory
# Requires Git, Perl and POSIX utilities; uses a local version of cloc
targets=$(ls -d -- */ | tr -d '/' | LC_ALL=C sort)
out=summary.md
rm -f $out
# Compute a summary for each directory, using `cloc`
echo "| Directory | Description | URL | #Eva targets | #.c/.h files | #LoC | Tags |" > $out
echo "| --------- | ----------- | --- | --- | --- | --- | --- |" >> $out
for t in $targets
do
if [ ! -d $t/.frama-c -o ! -f $t/OSCS-README.txt ]; then
echo "$t: no .frama-c or OSCS-README.txt, skipping"
continue
fi
echo "Processing $t..."
csv="$(cd $t && git ls-files '*.[ch]' | ../cloc-2.00.pl --list-file=- --csv | grep -A9999 ^files | tail -1)"
desc="$(cd $t && sed '1!d' OSCS-README.txt)"
url="$(cd $t && sed '2!d' OSCS-README.txt)"
ntargets="$(cd $t && make -C .frama-c display-targets --no-print-directory | wc -w | tr -d "[:blank:]")"
nfiles=$(echo $csv | cut -d',' -f1)
loc=$(echo $csv | cut -d',' -f5)
tags="$(cd $t && sed '3!d' OSCS-README.txt)"
echo "|$t|$desc|$url|$ntargets|$nfiles|$loc|$tags|" >> $out
done
cat >>$out <<EOF
Note: the 'Tags' column refers to code features that may be found in the code.
A few examples are presented below.
- REM_RECURSION: the code contains recursive calls, but they were removed or
commented in the current Eva test cases.
- UNUSED_RECURSION: the code contains recursive calls (either in the main
application/library, or in test cases), but the current Eva targets do
not call them.
EOF
echo "Saved table to $out."
# Avoid accidentally modifying the file by hand
chmod -w $out