Pracuje to na urovni jednoho zdrojoveho textu (souboru), tudiz to odhali nepouzite private metody a promenne. U public veci si musi kazdy pomoct jak umi - neco muze napovedet obfuskator pokud mu spravne zadate entry points vasi aplikace.
Osobni zkusenost je, ze to vycisti importy (ackoliv nepozna, ze 'import a.b.*;' je zbytecny), ty zbytecne private veci a zbytek zavisi na tom jak vyvjari dodrzuji coding conventions behem vyvoje. Uzitecne a v kombinaci s IDE i snadne k pouziti. Doporucuju.
Tak to je skoda. Dost z toho umi i CheckStyle (take jen pro jeden soubor). Ale ten neumi poznat nepouzitou (nebo neprectenou) promennou, prip. mrtvy kod.
Chtelo by to neco co sleduje i vsechny mozne cesty programem (i skrz vice trid). Jenze to uz je asi dost komplexni a kdo tohle naprogramoval tak uz to zrejme prodava jako komercni produkt a slusne na tom vydelava ... :-)
Ten dukaz Turingovym strojem o nemožnosti určit, zda program skončí nebo ne, je jen o tom, že se jednou programu zadá vstup tak, aby skončil a jednou tak aby neskončil a potom nelze rozhodnout.
Toto zadání je však nesmyslné. Na vstupu samozřejmě záleží a minimálně jeho gramatika by měla být součástí ověřování.
Z toho "důkazu" se potom celá léta vyvozuje, že nelze vytvořit systém, který by prověřil program a řekl je-li ok nebo ne. Přitom je možné vytvořit velmi užitečný systém, který bude prověřovat vstupní podmínky, Assert .... a mohl by pro určité známé konstrukce potvrdit správnost/nesprávnost.
Asi Vas sklamem, ale ani pri specifikovani vstupnych podmienok velmi dalej nezajdete. Presnejsie povedane, ano, existuju triedy programovych schem, pre ktore sa pri zadanych vstupnych podmienkach da urcit, ci program skutocne skonci.
V praxi vsak taketo programy nenajdete - max. algoritmus na par desiatok riadkov, ktory bol pisany specialnym sposobom, prave kvoli moznosti dokazu konecnosti alebo spravnosti.
Prip. si prectete tenhle clanek, myslim ze tam zastaveni touringova stroje apod. neresili, viz. http://www.stanford.edu/~engler/p401-xie.pdf
Tipnul bych si ze je to neco na zpusob prohledavani grafu (z daneho startovaciho bodu) a oznaceni nedostupnych uzlu. Ale je fakt, ze ten algoritmus detailne nepopisovali.