3# Skript fuer die Suche nach unbenutzten Shell- oder Lua-Funktionen.
4# Die Ausgabe sollte jedcoh mit Vorsicht verwendet werden: "grep -r FUNC_NAME"
5# ist ueblicherweise ein guter Einstieg in die Detail-Analyse.
10BASE_DIR=
$(cd
"$(dirname "$0
")/../packages"; pwd)
15 find on-*/files/usr/lib/lua -type f
22 grep -rl
"GUARD_TRAPS"
29 get_lua_files |
while read fname;
do grep
"^[ \t]*function[ \t]*" "$fname" ||
true;
done \
30 | sed
's/^[ \t]*function[ \t]*//' \
31 | sed
's/^\([a-zA-Z0-9_]\+\).*$/\1/' \
32 | grep -v
"[^a-zA-Z0-9_]" \
39 get_shell_files |
while read fname;
do grep
"^[a-zA-Z0-9_]\+[ \t]*(" "$fname" ||
true;
done \
40 | sed
's/^\([a-zA-Z0-9_]\+\).*$/\1/' \
41 | grep -v
"[^a-zA-Z0-9_]" \
49 # normaler lua-Funktionsaufruf
50 grep
"[^a-zA-Z0-9_]$funcname[ \t]*(" "$fname" ||
true
51 # Funktion als luci-Funktion fuer eine Web-Seite: 'call("foo")'
52 grep
"call(\"$funcname\")" "$fname" ||
true
56get_shell_func_calls() {
59 # shell-Funktionsaufruf
61 grep -E
"^(.*[^a-zA-Z0-9_]|)$funcname([^a-zA-Z0-9_].*|)$" "$fname" ||
true
62 ) | grep -vE
"(trap|$funcname\()" | grep -v
"^[ \t]*#" ||
true
66check_lua_function_in_use() {
70 count=
$(get_lua_files |
while read -r fname;
do get_lua_func_calls
"$fname" "$funcname";
done | wc -l)
71 # mehr als ein Vorkommen (inkl. der Definition der Funktion)? -> ok
72 [
"$count" -gt 1 ] &&
return 0
77check_shell_function_in_use() {
80 # shell-Funktionsaufrufe duerfen in shell- und in lua-Datei auftauchen
81 local count=
$( (get_shell_files; get_lua_files) |
while read fname;
do get_shell_func_calls
"$fname" "$funcname";
done | wc -l)
82 # mindestens ein Vorkommen? -> ok
83 [
"$count" -gt 0 ] &&
return 0
96 echo
"**************** eventuell unbenutzte lua-Funktionen *********************"
97 get_lua_funcs |
while read funcname;
do
98 check_lua_function_in_use
"$funcname" || echo
"$funcname"
102 echo
"*************** eventuell unbenutzte shell-Funktionen ********************"
103 get_shell_funcs |
while read funcname;
do
104 check_shell_function_in_use
"$funcname" || echo
"$funcname"
111 get_shell_funcs | sort
117 get_shell_files | sort
120 echo
"Syntax: $(basename "$0
") { check | lua-check | shell-check | lua-funcs | shell-funcs | lua-files | shell-files | help }"
set eu case $1 in system dhcp network wireless firewall reload_config true