Jestem nowy w Perlu, a obecnie mam za zadanie porządkowanie i utrzymywanie dużego i dość niechlujnego projektu Perla. Używam perl-krytyka, aby pomóc mi wykryć problemy w kodzie (a także nauczyć mnie najlepszych praktyk).Jak wykryć nieosiągalny kod w warunku Perla, który zawsze jest fałszywy?
Istniejący kod zawiera miejsca, w których programista utworzył nieosiągalny kod. Na przykład, dodali „& & 0” jako leniwe sposób komentując niektóre z gałęzi kodu:
if ($req->param('donut') && 0) {
unreachable code...
} else {
always branches to here...
}
Miałem nadzieję, że Perl lub Krytyk by ostrzec mnie martwy kod w takich przypadkach (gdzie wartość warunkowa ma stałą wartość, która jest wartością false), ale tak nie jest.
Czy istnieje narzędzie lub fragment skryptu, którego mogę użyć, który może niezawodnie wykryć tego rodzaju rzeczy?
Oczywiście mógłbym szukać „& & 0” w źródle, ale istnieje wiele sposobów, że koder mogły powstać martwy kod oprócz dołączanie „& & 0” do if.
+1 za poinformowanie mnie o B :: Deparse.Wprawdzie efekt uboczny pierwszej części warunku był dla mnie jasny (co oznacza, że samo wyrażenie warunkowe nie może być skompilowane), nie zdawałem sobie sprawy ze zmiany kontekstu wprowadzonego przez drugą część warunkowego warunku. . –