Do you find yourself asking the following questions ?
– Which code most needs a code review, refactoring, or unit tests?
– Which developers need more mentoring in design and coding practices?
These questions were bothering me in almost every project I was working on… luckily I've found several tools that made my day !
Come a join me for a travel inside your software source code to find out how much code you have and to identify the relative complexity of your modules, identify the code that is most likely to contain defects and thus warrants formal review.
How we will travel ? Well I've found several Freeware tools that will help us traveling to our desired destiny.
Suite of Metrics - # of classes, methods, events, parameters, fields, try/catch blocks, etc. reported at multiple levels. Vil also provides various metrics relating to complexity, class cohesion, coupling dependencies, inheritance, and abstractness. Included are Cyclomatic Complexity (CC), Coupling Between Objects (CBO), Afferent and Efferent Couplings, Instability, Distance, Lack of Cohesion of Methods (LCOM), and more
– Collects metrics in a fast, single pass through source files.
– Measures metrics for source code written in C++, C, C#, Java, Delphi, Visual Basic or HTML.
– Saves metrics in checkpoints for comparison during software development projects.
– Displays and prints metrics in tables and charts.
– Operates within a standard Windows GUI or inside your scripts using XML command files.
– Exports metrics to XML or CSV files for further processing with other tools.
– Automatically scans your workspace and project files.
– Varied statistical data about your source code, including: lines of code and comment lines.
– Includes parsers for: C/C++, VB, INI and other file types.
– Can filter statistics based on workspace or project files and/or custom wildcards.
– Reporting & Exporting:
– Export as CSV file for processing by Microsoft Excel (includes sample worksheet with statistical analysis).
– Export as XML for use with the report stylesheets
Download here (source code)
– Helps you detect which assemblies are potentially painful to maintain (i.e concrete and stable) and which assemblies are potentially useless (i.e abstract and instable).
– Provides many metrics, at application level, at assembly level, at type level (LCOM, RFT…) and at IL instruction level (CC, number of instruction).
– Detects and yields dependency cycles between your assemblies.
– Provides a build order for your assemblies (only if no cycle is detected). This order is also useful when using tools for obfuscation.
– Builds the diagram of assemblies’ dependencies.
– Enumerates all types that depend on a particular type.
– Warns you when an assembly depends on a less stable assembly than itself.
– Warns you when the visibility of a type or of a member is not optimal (in the context of the analysed application).
– Wrns you when a type or a member is not used (in the context of the analysed application).
– Non-intrusive (you don’t have to modify or to recompile your source code to use it).
– Easy to tackle with (it won’t take you more than 10 minutes to tune it to analyse a 50 assemblies application).
– Been optimized for real-world applications (it analyses around 1.000.000 IL instructions per minute).
– Stores all its results in some XML files readily exploitable from your build process.
Download here (source code)
Do you know of another tool which could be helpful ? Let me know and I’ll add it to the list.