Vraag Dode codedetectie in PHP [gesloten]


Ik heb een project met erg rommelige code - veel herhalingen en dode code hier en daar.

Enige tijd geleden was er nulcodedekking door eenheidstests, maar nu proberen we alle nieuwe code te schrijven in T.D.D. manier en het verlagen van technische schulden door ook "oude" code te verwerken door unit-tests (test-laatste techniek).

De complexiteit van bedrijfslogica is vrij hoog en soms kan niemand antwoorden of sommige methoden worden gebruikt of niet.

Hoe deze dead-codemethoden kunnen worden gevonden? Uitgebreide logboekregistratie? Hogere testdekking (het is niet zo eenvoudig omdat klanten nieuwe functies willen hebben)


31
2017-11-22 13:23


oorsprong


antwoorden:


xdebugMet de code coverage-tools kunt u testen welke regels code daadwerkelijk worden uitgevoerd, zonder traceerinstructies in alle functies / methoden.

Voorbeeld:

<?php
    xdebug_start_code_coverage();

    function a($a) {
        echo $a * 2.5;
    }

    function b($count) {
        for ($i = 0; $i < $count; $i++) {
            a($i + 0.17);
        }
    }

    b(6);
    b(10);

    var_dump(xdebug_get_code_coverage());  // array '/path/file.php' => array line_number => int 1 or 0.
?>  

13
2017-11-22 13:30



Het is nu wat laat, maar PHPDCD beweert dit statisch te doen, wat u een veel informatiever resultaat zou moeten geven dan het feit dat u de daadwerkelijke code moet profileren met xprof / xdebug.


13
2017-08-19 00:48



Ik zou aanraden om door het systeem te lopen met xdebug profiler (http://xdebug.org/docs/profiler).

Doorloop het systeem om de logboeken te bekijken http://code.google.com/p/webgrind/ en fysiek zien wat er wordt genoemd.


2
2017-11-22 14:07



Wat betreft profileergereedschappen, als u besluit die kant op te gaan, kunt u een kijkje nemen xhprof  http://developers.facebook.com/xhprof/
Het heeft een kleiner formaat van de uitvoerbestanden en webinterface die u in uw app kunt invoegen voor continu volgen. Het is in staat om een ​​visuele weergave van de oproepboom te genereren. Ik raad het aan xdebug met dat doel.


2
2017-11-22 18:22



Zie de SD PHP Test Coverage Tool. U oefent uw code uit op elke gewenste manier, inclusief (of niet) het uitvoeren van testsuites op elke gewenste manier. Aan het einde van de uitvoering ziet u een weergave van welke code is uitgevoerd (er zijn schermafbeeldingen op de website). Code die niet wordt uitgevoerd, is mogelijk dood en vereist wat meer analyse van uw kant, maar als u het systeem goed oefent, zijn niet-uitgevoerde codes foutenbehandelaars of echt dode spullen. De PHP Test Coverage-tool vereist niet ieder veranderingen aan uw PHP-server.

De SD CloneDR tool vindt dubbele code over zeer grote broncode-bases. Het is taalgevoelig (zowel C, C ++, Java, C #, Ada, Fortran als ook PHP4 en PHP5), dus het wordt niet misleid door wijzigingen in opmaak, witruimte of de aanwezigheid of afwezigheid van opmerkingen. Het detecteert exacte kopie klonen en bijna klonen. De website toont voorbeelden van kloonrapporten voor verschillende talen.


2
2017-11-25 06:52



Ik geloof dat iemand een smaak van heeft geïmplementeerd Structure101g die xdebug-gegevens gebruikt - s101 detecteert dan ongebruikte clusters, d.w.z. bestanden die elkaar gebruiken maar waarvan de verbinding met de hoofdcodebase is verbroken.


0
2017-11-23 11:10