On Dec 12, 2007 4:21 AM, Mathijs van Veluw <mathijs.van.veluw@xxxxxxxxxxx> wrote: > Hello there, > > We have a large project with lots of classes. > Now i am wondering if there is a way to let something check all those > files and tell me which methods/functions variables/constants etc.. > arn't used anymore. > > Or even which files arn't used anymore. > > Is there already something like this? if you want to do it right, youll have to make use of the php tokenizer. http://us.php.net/manual/en/ref.tokenizer.php using this tool you can analyze the source to create a list of things like - all classes defined in the code - all functions defined in the code once you have these lists you simply iterate over each member of them. if there are no references to a specific function or class, it *should* be safe to assume it is no longer in use, however it could be new code, not yet in use. you can employ a similar technique for files using bash and some standard unix programs. basically just build a list of all the files in your source. then iterate over the list, grepping the source. if there are no include / require directives for a given file it becomes a candidate for removal. this still is not perfect however. there could be plenty of situations where legacy code is being referenced, but the execution path on a daily runtime basis never takes that path. this can be a horrible thing, because new developers who dont know the ins-and-outs of a massive code base will stumble into this dead code in troubleshooting efforts only to be told by somebody whos been there for a while that that code isnt the problem. and then it is still left there anyway... (forgive me, ive had some undue headaches for these very reasons). i think the best practice in this case is to mark said dead code as a candidate for removal on the next release cycle of the software. using these techniques in concert i think you can keep the code fairly clean. -nathan