hostnet / dead-tool
Dead Code Identification Toolbox
Installs: 2 214
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 7
Forks: 3
Open Issues: 0
Requires
- php: >=7.1
- pear/console_commandline: *@dev
- pear/pear_exception: *@dev
Requires (Dev)
- hostnet/phpcs-tool: ^8.3.9
- phpunit/phpunit: ^7.0.3
README
Welcome to the Dead Code identification toolset, this toolset can be used together with the dead files plugin for Eclipse and the treemap visualization.
Configuration
Please add a config.yml file in the root directory with the following contents:
options: dsn: mysql:host=servernamehere;dbname=databasenamehere username: usernamehere password: passwordhere
You can also put this information in ~/.deadrc for user based configuration or in /etc/dead.conf for systemwide configuration.
Run make to build dead.phar. dead.phar can be installed by running make install. Then the systemwide command dead will be available.
You have to add a table includes to the database databasenamehere. These names are not required but then you have to configure them or pass them as a commandline parameter. If you want to monitor multiple applications, use the application name instead of include.
The create query is:
CREATE TABLE `includes` ( `function` varchar(700) NOT NULL, `count` bigint(20) NOT NULL, `first_hit` timestamp NULL default NULL, `last_hit` timestamp NULL default NULL on update CURRENT_TIMESTAMP, `added_at` timestamp NULL default NULL, `deleted_at` timestamp NULL default NULL, `changed_at` timestamp NULL default NULL, PRIMARY KEY (`function`) )
To let PHP add data to the measuring a file has to be added to the server (note: this is server wide, do not polute your application with this file).
append.php (or your own name)
<?php // push all data to the browser @ob_flush(); @flush(); /* DYNAMIC LIVE FILE ANALYSIS */ $db = mysql_connect('servernamehere','usernamehere','passwordhere'); mysql_select_db('databasenamehere',$db); $files = implode('\',\'',get_included_files()); $query = "UPDATE aurora SET count = count + 1, first_hit = if( first_hit IS NULL, NOW(), first_hit) WHERE file IN ('$files')"; mysql_query($query,$db); mysql_close($db);
Then the php.ini for the server has to be changed to let php execute this code always after each request. If you have a sperate php.ini for CLI also change that file if you want CLI use of your application in the measurements.
php.ini
[php] ... lots of directives ... ; Automatically add files after PHP document. ; http://php.net/auto-append-file auto_append_file="/your/path/to/append.php"
If you have any questions or need guidance using the toolset feel free to contact me using hidde@hostnet.nl.