- SpotBugs
Tool | Description | Implemented? |
---|---|---|
Spotbugs | SpotBugs is a program which uses static analysis to look for bugs in Java code. | No |
DesigniteJava | DesigniteJava is a code quality assessment tool for code written in Java. | Yes |
Checkstyle | Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. | Yes |
CK | CK calculates class-level and metric-level code metrics in Java projects by means of static analysis (i.e. no need for compiled code). | Yes |
AwesomeStaticAnalysis | This is a collection of static analysis tools and code quality checkers | No |
Coming | Coming is a tool for mining git repositories | No |
Organic | This project is an Eclipse plugin that aims to collect code smells from Java projects using only command line tools. | Yes |
TSE2015TDIdentification | Npl tool to mine closed sequential patterns | No |
SourceMonitor | The freeware program SourceMonitor lets you see inside your software source code to find out how much code you have and to identify the relative complexity of your modules. | Yes |
ConcernReCS | ConcernReCS is an Eclipse plug-in written to find Aspectization Code Smells, i.e., scenarios in source code that can lead to aspectization mistakes.) | No |
Sonarqube | Thousands of automated Static Code Analysis rules. | No |
Halstead | The tool detects commented code using heuristics based on usage of Halstead code metrics | Yes |
gorgeous_metrics | MOOD Metrics | Yes |
JaSoMe | Jasome (JAH-suhm, rhymes with awesome) is a source code analyzer that mines internal quality metrics from projects based on source code alone | Yes |
-
CK
- WMC - Weighted Method Count
- DIT - Depth of Inheritance Tree
- RFC - Response For Class
- NOC - Number of Children
- CBO - Coupling Between Objects
- LCOM - Lack of Cohesion in Methods
-
OO
- FanIn - Number of other classes that reference the class
- FanOut - Number of other classes referenced by the class
- NOA - Number Of Attributes
- NOPA - Number of Public Attributes
- NOPRA - Number of Private Attributes
- NOAI - Number of Attributes Inherited
- LOC - Number of Lines of Code
- NOM - Number of Methods
- NOPM - Number of Public Methods
- NOPRM - Number of Private Methods
- NOMI - Number of Methods Inherited
- Ca - Afferent Couplings
- Ce - Efferent Couplings
-
McCabe
- Maximum Cabe's Cyclomatic Complexity
- Average Cane's Cyclomatic Complexity
metrics |
---|
Anonymous_inner_class_length |
Boolean_expression_complexity |
CC |
Class_Data_Abstraction_Coupling |
Class_Fan-Out_Complexity |
Cyclomatic_Complexity |
Executable_statement_count |
File_length |
LOC |
Method_length |
NCSS_for_this_class |
NCSS_for_this_file |
NCSS_for_this_method |
NPath_Complexity |
Nested_for_depth |
Nested_if-else_depth |
Nested_try_depth |
Number_of_package_methods |
Number_of_private_methods |
Number_of_protected_methods |
Number_of_public_methods |
PC |
Return_count |
Throws_count |
Total_number_of_methods |
anonymousClassesQty |
assignmentsQty |
cbo |
comparisonsQty |
constructor |
innerClassesQty |
lambdasQty |
loc |
logStatementsQty |
loopQty |
mathOperationsQty |
maxNestedBlocks |
modifiers |
numbersQty |
parameters |
parenthesizedExpsQty |
returns |
rfc |
stringLiteralsQty |
tryCatchQty |
uniqueWordsQty |
variables |
wmc |
WMC + Smells Designite vs Fowler
category | subcategory | metric | description | implemented | tool |
---|---|---|---|---|---|
product | CK | WMC | Weighted Method Count | ✅ | |
product | CK | DIT | Depth of Inheritance Tree | ✅ | |
product | CK | RFC | Response For Class | ✅ | |
product | CK | NOC | Number of Children | ✅ | |
product | CK | CBO | Coupling Between Objects | ✅ | |
product | CK | LCOM | Lack of Cohesion in Methods | ✅ | |
product | OO | FanIn | Number of other classes that reference the class | ✅ | |
product | OO | FanOut | Number of other classes referenced by the class | ✅ | |
product | OO | NOA | Number Of Attributes | ❌ | |
product | OO | NOPA | Number of Public Attributes | ❌ | |
product | OO | NOPRA | Number of Private Attributes | ❌ | |
product | OO | NOAI | Number of Attributes Inherited | ❌ | |
product | OO | LOC | Number of Lines of Code | ✅ | |
product | OO | NOM | Number of Methods | ✅ | |
product | OO | NOPM | Number of Public Methods | ✅ | |
product | OO | NOPRM | Number of Private Methods | ✅ | |
product | OO | NOMI | Number of Methods Inherited | ✅ | |
product | OO | Ca | Afferent Couplings | ❌ | |
product | OO | Ce | Efferent Couplings | ❌ | |
product | McCabe | Max(CC) | Maximum Cabe's Cyclomatic Complexity | ❌ | |
product | McCabe | Avg(CC) | Average Cane's Cyclomatic Complexity | ❌ | |
process | Moser | REVISION | Number of revisions of a file | ❌ | |
process | Moser | REFACTORINGS | Number of times a file has been refactored | ❌ | |
process | Moser | BUGFIXES | Number of times a file was involved in bug-fixing | ❌ | |
process | Moser | AUTHORS | Number of distinct authors that checked a file into the repository | ❌ | |
process | Moser | LOC_ADDED | Sum over all revisions of the lines of code added to a file | ❌ | |
process | Moser | MAX_LOC_ADDED | Maximum number of lines of code added for all revisions | ❌ | |
process | Moser | AVE_LOC_ADDED | Average lines of code added per revision | ❌ | |
process | Moser | LOC_DELETED | Sum over all revisions of the lines of code deleted from a file | ❌ | |
process | Moser | MAX_LOC_DELETED | Maximum number of lines of code deleted for all revisions | ❌ | |
process | Moser | AVE_LOC_DELETED | Average lines of code deleted per revision | ❌ | |
process | Moser | CODECHURN | Sum of (added lines of code – deleted lines of code) over all revisions Maximum CODECHURN for all revisions | ❌ | |
process | Moser | MAX_CODECHURN | Maximum CODECHURN for all revisions | ❌ | |
process | Moser | AVE_CODECHURN | Average CODECHURN per revision | ❌ | |
process | Moser | MAX_CHANGESET | Maximum number of files committed together to the repository | ❌ | |
process | Moser | AVE_CHANGESET | Average number of files committed together to the repository | ❌ | |
process | Moser | AGE WEIGHTED_AGE | Age of a file in weeks (counting backwards from a specific release) See equation (1) | ❌ |