📄 findstatic.pl
字号:
#!/usr/bin/perl -w# find a list of fns and variables in the code that could be static# usually called with something like this:# findstatic.pl `find . -name "*.o"`# Andrew Tridgell <tridge@samba.org>use strict;# use nm to find the symbolsmy($saved_delim) = $/;undef $/;my($syms) = `nm -o @ARGV`;$/ = $saved_delim;my(@lines) = split(/\n/s, $syms);my(%def);my(%undef);my(%stype);my(%typemap) = ( "T" => "function", "C" => "uninitialised variable", "D" => "initialised variable" );# parse the symbols into defined and undefined for (my($i)=0; $i <= $#{@lines}; $i++) { my($line) = $lines[$i]; if ($line =~ /(.*):[a-f0-9]* ([TCD]) (.*)/) { my($fname) = $1; my($symbol) = $3; push(@{$def{$fname}}, $symbol); $stype{$symbol} = $2; } if ($line =~ /(.*):\s* U (.*)/) { my($fname) = $1; my($symbol) = $2; push(@{$undef{$fname}}, $symbol); }}# look for defined symbols that are never referenced outside the place they # are definedforeach my $f (keys %def) { print "Checking $f\n"; my($found_one) = 0; foreach my $s (@{$def{$f}}) { my($found) = 0; foreach my $f2 (keys %undef) { if ($f2 ne $f) { foreach my $s2 (@{$undef{$f2}}) { if ($s2 eq $s) { $found = 1; $found_one = 1; } } } } if ($found == 0) { my($t) = $typemap{$stype{$s}}; print " '$s' is unique to $f ($t)\n"; } } if ($found_one == 0) { print " all symbols in '$f' are unused (main program?)\n"; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -