SCOPER B.10 ELIMINATE DEAD CODE ! ************************************************************** Recently reviewed in major VB publications ... ************************************************************** VB Tech Journal, 10/95 ... "... it is wise to subject your projects to the scrutiny of a cross-reference utility that analyzes the source code and reports on unused variables and code - a utility like ISES Inc.'s shareware Scoper." "... Scoper can even create a new version of your project, with the dead code stripped out, in a new directory." "... this handy tool is well worth the $19 registration fee." VB Programmer's Journal, 10/95 "... The new release adds online context sensitive help, a cross reference analysis engine, in-flight binary-text conversion, improved statistics drill-down software, and element/scope/type protection filters during the auto-rewrite process." ***************************************************************** SCOPER analyzes VB3 project source code and identifies variables, constants, function - subroutine declarations and code that are never used. Shareware users can use the SCOPER report to manually remove dead code in their VB3 projects. Registered users can have SCOPER automatically rewrite their code (in a different directory) eliminating all unused elements. In a few seconds, the registered version will create a new copy of your project, including custom CONSTANT.TXT, WIN30API.TXT, VBSQL.BI, etc. containing ONLY the elements your project needs. Registered users can have SCOPER produce an optional cross reference report, filtered by any desired combination of scope and object type. SCOPER requires the source modules to be saved as text. The registered version will do an "in-flight" binary->text conversion if the project contains any source that was saved as binary. In the corporate development environment, use SCOPER as the final project check before production cutover. Make sure production .EXE's are not riddled with dead code and wasted space. TO USE: Copy the SCOPER distribution files into any directory you wish. The files are: SCOPER.EXE SCOPER.HLP SPREAD20.VBX QPRO200.DLL 1. Execute SCOPER.EXE from windows. If you are using an evaluation copy Click "I AGREE" on the SCOPER evaluation form. If you are a shareware user and wish to receive a registered copy of SCOPER, click "ORDER FORM" or, go to the "How to Order a Registered Copy" section in the on-line help file. 2. From the SCOPER screen click SELECT PROJECT. Pick the project .MAK file you want analyzed. If SCOPER finds any binary source in the project it will prompt you to save these modules as text. REGISTERED USERS: SCOPER will ask you if it should do an in-flight binary->text conversion. 3. SCOPER normally checks for unused elements of all combinations of type and scope. If you want to filter this checking, click the FILTER button to customize the type/scope combinations SCOPER will look for. REGISTERED USERS: If you intend to use SCOPER's VB XREF facilities after the run, check the "SAVE DATA FOR XREF" box on the OPTIONS screen. 4. Click SCOPER to start analysis. While running, SCOPER displays two progress bars. The left bar represents progress for the source module currently being analyzed. The right bar displays progress for the entire project. When SCOPER is done, the results can be viewed as follows: 5. Click PRINT if you want a hardcopy "DEAD CODE" report. 6. Click SAVE TO FILE to create a tab-delimited file of unused elements suitable for importing into Excel, etc. 7. Click STATS to display interesting statistics about your project. When the summary stats screen is displayed, you can double-click on any filename to drill-down to more detailed statistics about any form or module in the project. 8. REGISTERED USERS: The "SELECT PATH" button will be enabled. Click this button to select the target directory for the new project source. 9. REGISTERED USERS: Once the target path is selected, the "AUTO-REWRITE" button will be enabled. Click this button to have SCOPER create new source code for your project, automatically eliminating unused variables, constants, declarations, and dead code. 10. REGISTERED USERS: If you checked the "SAVE DATA FOR XREF" checkbox, the "CROSS-REF" button will be enabled. Click this button to bring up the cross-reference form. Note that the cross-reference data can be filtered by any combination of scope and object type using the check boxes on the bottom of the form. 11. If you want another project analyzed, return to step 2. If not, click EXIT. NOTES FOR REGISTERED USERS: SCOPER will NOT modify any original source modules. The Auto-Rewrite process begins by copying everything from the original project directory into the target directory. If any modules need to be re-written that were NOT in the original directory (e.g., CONSTANT.TXT is usually in the VB directory), SCOPER will write the new module in the target directory and modify the new project .MAK file accordingly. Also, it is a good idea to run the rewritten project through SCOPER after the auto-rewrite process completes. This will catch situations where a module or global scope variable is only used in a routine that is never executed. SCOPER will eliminate the unused routine during the first rewrite, but the variable will remain part of the project. When the rewritten project is run through SCOPER, the variable will be identified as unused and will be eliminated. The above situation becomes very interesting when one considers the fact that it can involve an infinite number of dimensions. For example, suppose routine-A calls routine-B, and routine-B calls routine-C. Assume that routine-A is never called. On the first iteration, SCOPER will eliminate routine-A but not routine-B and routine-C. On the second iteration, SCOPER will eliminate routine-B (assuming it is not called by any other routines) but not routine-C. On the THIRD iteration, SCOPER will eliminate routine-C (assuming it is not called by any other routines). Thus, it is a good idea to SCOPE the project until it comes up "clean" (no unused elements). 95% of the time, this will happen after the first iteration. A brief note on how the SCOPER rewrite engine handles recursion: If routine-A calls itself but is not called by another routine, SCOPER will eliminate routine-A since it is dead code. However, if routine-A calls routine-B, and routine-B calls routine-A, SCOPER will not eliminate either routine since both are, technically speaking, referenced outside their own local scope. WHAT'S NEW in Version B.10: 1. A minor bug was causing problems when .MAK files contained the "..\" DOS path convention. This has been fixed. 2. The on-line help documentation has been expanded and brought up to date on the new features added in the last three releases. 3. The lexical analysis routines have been tuned so our users should see a small but noticeable increase in speed during the analysis phase. Please use U.S. Mail, Compuserve e:mail or fax to let us know what enhancements you would like to see in future SCOPER releases. Thanks. SCOPER Copyright(c) 1995 by ISES, Inc. ALL RIGHTS RESERVED ISES, Inc. 102 Sunrise Drive Gillette, NJ 07933 Compuserve: 72417,627 AOL: ISES INC Fax: 908-580-1008 Voice: 1-800-447-ISES -or- 908-766-1894