It is recommended to use the CppDepend interactive UI capabilities
to make the most of CppDepend by mastering all aspects of your code.
Diagrams
Application Metrics
Note: Further Application Statistics are available.
|
Quality Gates summary
812can be stopped upon quality gate
failure. Online documentation.
be run on the baseline. Hence they
have blank trend and baseline status.
Name | Trend | Baseline Value | Value | Group | |||
---|---|---|---|---|---|---|---|
| N/A because no coverage data | Project Rules \ Quality Gates | |||||
| N/A because no coverage data | Project Rules \ Quality Gates | |||||
| N/A because no coverage data | Project Rules \ Quality Gates | |||||
| 0 issues | 0 issues | Project Rules \ Quality Gates | ||||
| 5 issues | 5 issues | Project Rules \ Quality Gates | ||||
| 0 issues | Project Rules \ Quality Gates | |||||
| 3 rules | 3 rules | Project Rules \ Quality Gates | ||||
| 13.6 % | 13.6 % | Project Rules \ Quality Gates | ||||
| 0 man-days | Project Rules \ Quality Gates | |||||
| 3 namespaces | 3 namespaces | Project Rules \ Quality Gates | ||||
| 0 man-days | Project Rules \ Quality Gates |
Rules summary
251213- Number of Rules or Queries with Error (syntax error, exception thrown, time-out): 0
- Number of Rules violated: 24
VisualCppDepend.
Online documentation.
run on the baseline. Hence they
have blank # Issues Fixed or Added.
Name | # Issues | Added | Fixed | Elements | Group | |||
---|---|---|---|---|---|---|---|---|
| 66 | 0 | 0 | types | Project Rules \ Code Smells | |||
| 100 | 0 | 0 | types | Project Rules \ Code Smells | |||
| 14 | 0 | 0 | types | Project Rules \ Code Smells | |||
| 433 | 0 | 0 | methods | Project Rules \ Code Smells | |||
| 32 | 0 | 0 | methods | Project Rules \ Code Smells | |||
| 74 | 0 | 0 | methods | Project Rules \ Code Smells | |||
| 116 | 0 | 0 | methods | Project Rules \ Code Smells | |||
| 479 | 0 | 0 | methods | Project Rules \ Code Smells | |||
| 19 | 0 | 0 | types | Project Rules \ Code Smells | |||
| 2 | 0 | 0 | types | Project Rules \ Object Oriented Design | |||
| 13 | 0 | 0 | fields | Project Rules \ Object Oriented Design | |||
| 6 | 0 | 0 | types | Project Rules \ Object Oriented Design | |||
| 146 | 0 | 0 | types | Project Rules \ Object Oriented Design | |||
| 1 | 0 | 0 | project | Project Rules \ Object Oriented Design | |||
| 12 | 0 | 0 | types | Project Rules \ Object Oriented Design | |||
| 127 | 0 | 0 | methods | Project Rules \ CWE Rules | |||
| 20 | 0 | 0 | types | Project Rules \ Dead Code | |||
| 3926 | 0 | 0 | methods | Project Rules \ Dead Code | |||
| 113 | 0 | 0 | fields | Project Rules \ Dead Code | |||
| 10 | 0 | 0 | fields | Project Rules \ Naming Conventions | |||
| 10 | 0 | 0 | fields | Project Rules \ Naming Conventions | |||
| 6 | 0 | 0 | types | Project Rules \ Naming Conventions | |||
| 5 | 0 | 0 | types | Project Rules \ Naming Conventions | |||
| 129 | 0 | 0 | methods | Project Rules \ Naming Conventions |
Application Statistics
Stat | # Occurences | Avg | StdDev | Max |
---|---|---|---|---|
Properties on interfaces | interfaces | 0 | 0 | -1 properties on |
Methods on interfaces | interfaces | 0 | 0 | -1 methods on |
Arguments on methods on interfaces | methods | 0 | 0 | -1 arguments on |
Public properties on classes | 406 Classes | 0 | 0 | 0 public properties on Keywords |
Public methods on classes | 406 classes | 12.73 | 21.76 | 244 public methods on __Globals |
Arguments on public methods on classes | 5,168 methods | 1.02 | 1.17 | 10 arguments on __Globals.valueFlowForward(Token*const,constToken*const,constVariable*const,constunsignedint,std::list<ValueFlow::Value>,constbool,constbool,TokenList*const,ErrorLogger*const,constSettings*const) |
IL instructions in non-abstract methods | 10,052 methods | 0.14 | 0.5 | 6 IL instructions in CheckBufferOverrun.checkStructVariable() |
Cyclomatic complexity on non abstract Methods | 10,052 Methods | 0.45 | 1.73 | CC = 47 for Library.load(consttinyxml2::XMLDocument&) |
Projects Metrics
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Projects | # lines of code | # IL instruction | # Types | # Abstract Types | # lines of comment | % Comment | % Coverage | Afferent Coupling | Efferent Coupling | Relational Cohesion | Instability | Abstractness | Distance |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
cli v1.0.0.0 | 1495 | 19 | 78 | 2 | 1731 | 53,65778 | - | 0 | 42 | 1.78 | 1 | 0.04 | 0.03 |
cppcheck v1.0.0.0 | 33002 | 1251 | 186 | 4 | 8002 | 19,51517 | - | 0 | 52 | 4.81 | 1 | 0.02 | 0.02 |
testrunner v1.0.0.0 | 29576 | 95 | 231 | 4 | 9061 | 23,45161 | - | 0 | 50 | 3.3 | 1 | 0.02 | 0.01 |
If you wish to define thresholds on types' Code Metrics, consider writing some Rule.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Types Metrics : Code Quality
Type Name | Type Rank | # Lines Of Code | # IL Instructions | # Lines Of Comment | % Comment | Cyclomatic Complexity | % Coverage | Afferent Coupling | Efferent Coupling | Type Namespace |
---|---|---|---|---|---|---|---|---|---|---|
Token | 12.07 | 154 | 317 | 67.3 | 217 | - | 62 | 16 | ||
Settings | 11.2 | 8 | 24 | 75 | 17 | - | 92 | 18 | ||
Token | 9 | 933 | 370 | 28.4 | 640 | - | 59 | 37 | ||
Tokenizer | 7.91 | 10 | 436 | 97.76 | 150 | - | 76 | 11 | ||
TestFixture | 6.97 | 94 | 4 | 4.08 | 43 | - | 60 | 20 | ||
StrPair+AnonymousEnum | 5.82 | - | 0 | - | 0 | - | 1 | 0 | tinyxml2 | |
ErrorLogger | 5.66 | 4 | 35 | 89.74 | 11 | - | 41 | 7 | ||
XMLDocument | 5.57 | 18 | 114 | 86.36 | 40 | - | 15 | 13 | tinyxml2 | |
StrPair | 5.51 | 12 | 7 | 36.84 | 14 | - | 8 | 1 | tinyxml2 | |
XMLVisitor | 4.79 | 8 | 43 | 84.31 | 10 | - | 8 | 7 | tinyxml2 | |
XMLNode | 4.53 | 35 | 136 | 79.53 | 56 | - | 8 | 9 | tinyxml2 | |
Scope | 3.59 | 459 | 100 | 17.89 | 326 | - | 39 | 33 | ||
XMLUtil | 3.48 | 160 | 24 | 13.04 | 72 | - | 10 | 0 | tinyxml2 | |
Check | 3.45 | 23 | 20 | 46.51 | 23 | - | 30 | 13 | ||
XMLNode | 3.35 | 218 | 162 | 42.63 | 102 | - | 16 | 12 | tinyxml2 | |
Severity+SeverityType | 3.1 | - | 0 | - | 0 | - | 14 | 0 | ||
Library | 2.96 | 49 | 21 | 30 | 96 | - | 30 | 25 | ||
XMLError | 2.89 | - | 0 | - | 0 | - | 12 | 0 | tinyxml2 | |
XMLDocument | 2.87 | 237 | 137 | 36.63 | 71 | - | 12 | 16 | tinyxml2 | |
Severity+SeverityType | 2.87 | - | 0 | - | 0 | - | 38 | 0 | ||
Variable | 2.8 | 167 | 231 | 58.04 | 139 | - | 33 | 18 | ||
StrPair | 2.58 | 142 | 28 | 16.47 | 47 | - | 8 | 4 | tinyxml2 | |
StrPair+AnonymousEnum | 2.58 | - | 0 | - | 0 | - | 6 | 0 | tinyxml2 | |
Library+ErrorCode | 2.56 | - | 0 | - | 0 | - | 20 | 0 | ||
XMLElement | 2.54 | 273 | 216 | 44.17 | 135 | - | 13 | 12 | tinyxml2 | |
Settings | 2.46 | 71 | 25 | 26.04 | 31 | - | 41 | 21 | ||
XMLDeclaration | 2.46 | 2 | 12 | 85.71 | 10 | - | 6 | 4 | tinyxml2 | |
XMLText | 2.46 | 5 | 15 | 75 | 12 | - | 6 | 4 | tinyxml2 | |
XMLUnknown | 2.46 | 2 | 8 | 80 | 10 | - | 6 | 4 | tinyxml2 | |
XMLElement | 2.46 | 51 | 194 | 79.18 | 73 | - | 6 | 6 | tinyxml2 | |
Scope | 2.44 | 13 | 35 | 72.92 | 46 | - | 12 | 16 | ||
XMLVisitor | 2.35 | 8 | 43 | 84.31 | 12 | - | 8 | 7 | tinyxml2 | |
Platform+PlatformType | 2.32 | - | 0 | - | 0 | - | 19 | 0 | cppcheck | |
ErrorLogger+ErrorMessage | 2.31 | 2 | 25 | 92.59 | 22 | - | 9 | 9 | ||
TokenList | 2.11 | 9 | 56 | 86.15 | 27 | - | 12 | 6 | ||
XMLComment | 2.01 | 2 | 2 | 50 | 10 | - | 4 | 4 | tinyxml2 | |
XMLError | 2 | - | 0 | - | 0 | - | 3 | 0 | tinyxml2 | |
XMLAttribute | 1.99 | 22 | 36 | 62.07 | 29 | - | 4 | 3 | tinyxml2 | |
Type | 1.98 | 102 | 19 | 15.7 | 68 | - | 17 | 22 | ||
XMLText | 1.92 | 30 | 17 | 36.17 | 21 | - | 7 | 8 | tinyxml2 | |
Platform | 1.91 | 22 | 9 | 29.03 | 24 | - | 19 | 4 | cppcheck | |
Tokenizer | 1.9 | 5459 | 1467 | 21.18 | 3156 | - | 34 | 58 | ||
MemPool | 1.88 | 0 | 4 | 100 | 8 | - | 3 | 0 | tinyxml2 | |
Function | 1.87 | 267 | 63 | 19.09 | 194 | - | 27 | 25 | ||
ErrorLogger | 1.87 | 48 | 38 | 44.19 | 34 | - | 36 | 15 | ||
MemPoolT<ITEM_SIZE>+Item | 1.82 | 0 | 1 | 100 | 0 | - | 2 | 0 | tinyxml2 | |
MemPoolT<ITEM_SIZE>+Item | 1.81 | 0 | 1 | 100 | 0 | - | 2 | 0 | tinyxml2 | |
SymbolDatabase | 1.77 | 1704 | 304 | 15.14 | 940 | - | 31 | 59 | ||
Token | 1.67 | 154 | 317 | 67.3 | 217 | - | 8 | 16 | ||
XMLDeclaration | 1.66 | 16 | 16 | 50 | 13 | - | 6 | 7 | tinyxml2 | |
XMLUnknown | 1.66 | 16 | 11 | 40.74 | 13 | - | 6 | 7 | tinyxml2 | |
Location | 1.59 | 27 | 4 | 12.9 | 20 | - | 9 | 5 | simplecpp | |
MemPool | 1.58 | 0 | 4 | 100 | 9 | - | 5 | 0 | tinyxml2 | |
Value+MoveKind | 1.58 | - | 0 | - | 0 | - | 4 | 0 | ValueFlow | |
Library+Error | 1.55 | 4 | 0 | 0 | 6 | - | 20 | 2 | ||
Severity+SeverityType | 1.51 | - | 0 | - | 0 | - | 7 | 0 | ||
Check | 1.51 | 35 | 23 | 39.66 | 25 | - | 30 | 18 | ||
VarInfo+AllocStatus | 1.47 | - | 0 | - | 0 | - | 3 | 0 | ||
ErrorLogger+ErrorMessage+FileLocation | 1.46 | 3 | 17 | 85 | 11 | - | 5 | 6 | ||
Library+ArgumentChecks+MinSize+Type | 1.45 | - | 0 | - | 0 | - | 2 | 0 | ||
Value | 1.42 | 63 | 1 | 1.56 | 38 | - | 6 | 4 | ValueFlow | |
Type | 1.41 | 10 | 11 | 52.38 | 22 | - | 7 | 12 | ||
Check+FileInfo | 1.4 | 1 | 1 | 50 | 4 | - | 5 | 4 | ||
Variables | 1.4 | 124 | 20 | 13.89 | 66 | - | 2 | 21 | ||
Library+ArgumentChecks+MinSize+Type | 1.36 | - | 0 | - | 0 | - | 2 | 0 | ||
Suppressions+SuppressionEntry | 1.36 | 3 | 0 | 0 | 4 | - | 3 | 4 | ||
VarInfo+AllocStatus | 1.35 | - | 0 | - | 0 | - | 1 | 0 | ||
Library | 1.32 | 807 | 43 | 5.06 | 439 | - | 21 | 51 | ||
Library+ArgumentChecks+MinSize+Type | 1.3 | - | 0 | - | 0 | - | 1 | 0 | ||
Scope+ScopeType | 1.26 | - | 0 | - | 0 | - | 20 | 0 | ||
XMLComment | 1.21 | 16 | 5 | 23.81 | 13 | - | 4 | 7 | tinyxml2 | |
MathLib | 1.2 | 649 | 88 | 11.94 | 378 | - | 19 | 15 | ||
XMLAttribute | 1.2 | 76 | 41 | 35.04 | 41 | - | 5 | 6 | tinyxml2 | |
AccessControl | 1.18 | - | 0 | - | 0 | - | 8 | 0 | ||
SHOWTIME_MODES | 1.12 | - | 0 | - | 0 | - | 4 | 0 | ||
InternalError | 1.11 | 9 | 3 | 25 | 7 | - | 11 | 6 | ||
InternalError | 1.09 | 0 | 3 | 100 | 5 | - | 12 | 5 | ||
Settings | 1.06 | 8 | 24 | 75 | 17 | - | 9 | 18 | ||
options | 1.05 | 8 | 8 | 50 | 8 | - | 2 | 8 | ||
Entity | 1.05 | 0 | 0 | - | 0 | - | 2 | 0 | tinyxml2 | |
Location | 1.04 | 17 | 4 | 19.05 | 13 | - | 5 | 5 | simplecpp | |
Library+Container+Yield | 1.01 | - | 0 | - | 0 | - | 5 | 0 | ||
ValueType | 1.01 | 151 | 1 | 0.66 | 84 | - | 12 | 15 | ||
Check+FileInfo | 0.98 | 1 | 1 | 50 | 4 | - | 6 | 4 | ||
Token+Type | 0.97 | - | 0 | - | 0 | - | 16 | 0 | ||
Library+Container+Action | 0.97 | - | 0 | - | 0 | - | 4 | 0 | ||
Location | 0.96 | 17 | 4 | 19.05 | 13 | - | 4 | 5 | simplecpp | |
Suppressions | 0.96 | 0 | 43 | 100 | 13 | - | 6 | 6 | ||
Path | 0.96 | 98 | 108 | 52.43 | 74 | - | 13 | 16 | ||
Value | 0.95 | 63 | 1 | 1.56 | 38 | - | 12 | 4 | ValueFlow | |
StrPair+AnonymousEnum | 0.94 | - | 0 | - | 0 | - | 1 | 0 | tinyxml2 | |
Token+Type | 0.94 | - | 0 | - | 0 | - | 3 | 0 | ||
AccessControl | 0.92 | - | 0 | - | 0 | - | 5 | 0 | ||
CWE | 0.91 | 1 | 4 | 80 | 6 | - | 3 | 0 | ||
Library+Container+Yield | 0.9 | - | 0 | - | 0 | - | 3 | 0 | ||
Library+Container+Action | 0.9 | - | 0 | - | 0 | - | 3 | 0 | ||
Platform+PlatformType | 0.89 | - | 0 | - | 0 | - | 4 | 0 | cppcheck | |
Value+ValueType | 0.87 | - | 0 | - | 0 | - | 3 | 0 | ValueFlow | |
Value+MoveKind | 0.86 | - | 0 | - | 0 | - | 3 | 0 | ValueFlow | |
Token+AnonymousEnum | 0.85 | - | 0 | - | 0 | - | 1 | 0 | ||
Token+Anonymous | 0.85 | 0 | 0 | - | 0 | - | 1 | 0 | ||
TimerResults | 0.85 | 0 | 0 | - | 8 | - | 1 | 6 | ||
ImportProject | 0.84 | 0 | 5 | 100 | 13 | - | 4 | 7 | ||
ErrorLogger+ErrorMessage | 0.83 | 2 | 25 | 92.59 | 22 | - | 6 | 9 | ||
Library+Container+Yield | 0.83 | - | 0 | - | 0 | - | 2 | 0 | ||
Library+Container+Action | 0.83 | - | 0 | - | 0 | - | 2 | 0 | ||
Settings+Language | 0.83 | - | 0 | - | 0 | - | 3 | 0 | ||
Value+ValueType | 0.81 | - | 0 | - | 0 | - | 2 | 0 | ValueFlow | |
Function | 0.79 | 64 | 15 | 18.99 | 65 | - | 5 | 12 | ||
Platform | 0.79 | 185 | 14 | 7.04 | 50 | - | 12 | 8 | cppcheck | |
ErrorLogger+ErrorMessage | 0.77 | 223 | 61 | 21.48 | 78 | - | 11 | 34 | ||
Library+ErrorCode | 0.77 | - | 0 | - | 0 | - | 2 | 0 | ||
Library+ErrorCode | 0.77 | - | 0 | - | 0 | - | 2 | 0 | ||
TokenList | 0.75 | 251 | 115 | 31.42 | 134 | - | 12 | 27 | ||
Library+ArgumentChecks+IteratorInfo | 0.74 | 4 | 0 | 0 | 6 | - | 2 | 0 | ||
Variable | 0.74 | 55 | 218 | 79.85 | 64 | - | 5 | 16 | ||
XMLElement+AnonymousEnum | 0.73 | - | 0 | - | 0 | - | 2 | 0 | tinyxml2 | |
SymbolDatabase | 0.73 | 4 | 28 | 87.5 | 48 | - | 6 | 14 | ||
TimerResultsIntf | 0.71 | 0 | 0 | - | 5 | - | 2 | 3 | ||
TokenList | 0.71 | 9 | 56 | 86.15 | 27 | - | 3 | 6 | ||
TimerResultsData | 0.71 | 4 | 0 | 0 | 3 | - | 1 | 0 | ||
Value+ValueKind | 0.7 | - | 0 | - | 0 | - | 1 | 0 | ValueFlow | |
Whitespace | 0.69 | - | 0 | - | 0 | - | 2 | 0 | tinyxml2 | |
Type+BaseInfo | 0.68 | 5 | 1 | 16.67 | 7 | - | 8 | 4 | ||
CheckMemoryLeak | 0.68 | 3 | 57 | 95 | 21 | - | 5 | 12 | ||
Path | 0.67 | 2 | 98 | 98 | 23 | - | 7 | 7 | ||
InternalError+Type | 0.65 | - | 0 | - | 0 | - | 5 | 0 | ||
Platform+PlatformType | 0.64 | - | 0 | - | 0 | - | 7 | 0 | cppcheck | |
TimerResultsIntf | 0.63 | 0 | 0 | - | 5 | - | 2 | 3 | ||
MemPoolT<ITEM_SIZE> | 0.63 | 42 | 3 | 6.67 | 17 | - | 2 | 5 | tinyxml2 | |
ErrorLogger+ErrorMessage+FileLocation | 0.62 | 3 | 17 | 85 | 11 | - | 4 | 6 | ||
DynArray<T,INITIAL_SIZE> | 0.61 | 46 | 3 | 6.12 | 21 | - | 2 | 0 | tinyxml2 | |
Value+MoveKind | 0.61 | - | 0 | - | 0 | - | 2 | 0 | ValueFlow | |
ErrorLogger | 0.61 | 4 | 35 | 89.74 | 11 | - | 6 | 7 | ||
Function+Type | 0.61 | - | 0 | - | 0 | - | 8 | 0 | ||
Library+ArgumentChecks+IteratorInfo | 0.6 | 4 | 0 | 0 | 6 | - | 3 | 0 | ||
Value+ValueKind | 0.6 | - | 0 | - | 0 | - | 1 | 0 | ValueFlow | |
ValueType+Type | 0.6 | - | 0 | - | 0 | - | 8 | 0 | ||
XMLPrinter | 0.59 | 6 | 82 | 93.18 | 38 | - | 1 | 9 | tinyxml2 | |
Whitespace | 0.59 | - | 0 | - | 0 | - | 1 | 0 | tinyxml2 | |
MemPoolT<ITEM_SIZE> | 0.59 | 42 | 3 | 6.67 | 17 | - | 1 | 5 | tinyxml2 | |
Library+ArgumentChecks+IteratorInfo | 0.58 | 4 | 0 | 0 | 6 | - | 2 | 0 | ||
Suppressions+SuppressionEntry | 0.58 | 3 | 0 | 0 | 4 | - | 2 | 4 | ||
PathMatch | 0.58 | 0 | 21 | 100 | 8 | - | 5 | 4 | ||
Library+Container | 0.57 | 13 | 0 | 0 | 9 | - | 5 | 13 | ||
Filepointer+Operation | 0.56 | - | 0 | - | 0 | - | 2 | 0 | ||
OpenMode | 0.56 | - | 0 | - | 0 | - | 2 | 0 | ||
Filepointer+AppendMode | 0.56 | - | 0 | - | 0 | - | 2 | 0 | ||
DynArray<T,INITIAL_SIZE> | 0.56 | 46 | 3 | 6.12 | 21 | - | 2 | 0 | tinyxml2 | |
ImportProject+FileSettings | 0.56 | 1 | 1 | 50 | 6 | - | 4 | 7 | ||
Library+Container | 0.55 | 13 | 0 | 0 | 8 | - | 4 | 13 | ||
SHOWTIME_MODES | 0.55 | - | 0 | - | 0 | - | 4 | 0 | ||
Macro+Error | 0.54 | 2 | 1 | 33.33 | 5 | - | 2 | 5 | simplecpp | |
InternalError+Type | 0.53 | - | 0 | - | 0 | - | 1 | 0 | ||
ErrorLogger+ErrorMessage+FileLocation | 0.53 | 17 | 17 | 50 | 13 | - | 7 | 9 | ||
ImportProject+FileSettings | 0.53 | 1 | 1 | 50 | 7 | - | 4 | 7 | ||
Variables+VariableType | 0.52 | - | 0 | - | 0 | - | 3 | 0 | ||
CheckMemoryLeak+AllocType | 0.51 | - | 0 | - | 0 | - | 4 | 0 | ||
TestRegistry | 0.5 | 4 | 3 | 42.86 | 8 | - | 1 | 2 | ||
SHOWTIME_MODES | 0.49 | - | 0 | - | 0 | - | 3 | 0 | ||
Output | 0.48 | 2 | 1 | 33.33 | 6 | - | 4 | 6 | simplecpp | |
XMLAttribute+AnonymousEnum | 0.48 | - | 0 | - | 0 | - | 1 | 0 | tinyxml2 | |
Enumerator | 0.48 | 6 | 0 | 0 | 6 | - | 3 | 2 | ||
CheckClass | 0.48 | 51 | 80 | 61.07 | 75 | - | 3 | 14 | ||
Library+PlatformType | 0.46 | 8 | 0 | 0 | 13 | - | 4 | 2 | ||
ValueType+Sign | 0.46 | - | 0 | - | 0 | - | 6 | 0 | ||
Value+ValueType | 0.46 | - | 0 | - | 0 | - | 1 | 0 | ValueFlow | |
Value+ValueKind | 0.46 | - | 0 | - | 0 | - | 1 | 0 | ValueFlow | |
MemPoolT<ITEM_SIZE>+Block | 0.45 | 0 | 0 | - | 0 | - | 1 | 1 | tinyxml2 | |
MemPoolT<ITEM_SIZE>+AnonymousEnum | 0.45 | - | 0 | - | 0 | - | 1 | 0 | tinyxml2 | |
MemPoolT<ITEM_SIZE>+AnonymousEnum | 0.45 | - | 0 | - | 0 | - | 1 | 0 | tinyxml2 | |
MemPoolT<ITEM_SIZE>+Block | 0.45 | 0 | 0 | - | 0 | - | 1 | 1 | tinyxml2 | |
CWE | 0.45 | 1 | 4 | 80 | 6 | - | 6 | 0 | ||
CppCheck | 0.44 | 2 | 106 | 98.15 | 29 | - | 5 | 11 | ||
Library+ArgumentChecks | 0.44 | 8 | 0 | 0 | 4 | - | 4 | 3 | ||
Type+NeedInitialization | 0.44 | - | 0 | - | 0 | - | 6 | 0 | ||
Output+Type | 0.44 | - | 0 | - | 0 | - | 3 | 0 | simplecpp | |
Preprocessor | 0.44 | 2 | 68 | 97.14 | 26 | - | 6 | 15 | ||
MathLib+value+AnonymousEnum | 0.43 | - | 0 | - | 0 | - | 1 | 0 | ||
MathLib+value+AnonymousEnum | 0.43 | - | 0 | - | 0 | - | 1 | 0 | ||
Library+PlatformType | 0.43 | 8 | 0 | 0 | 12 | - | 3 | 2 | ||
CWE | 0.43 | 1 | 4 | 80 | 6 | - | 2 | 0 | ||
CheckOther | 0.43 | 95 | 56 | 37.09 | 102 | - | 3 | 11 | ||
Library+AllocFunc | 0.42 | 0 | 0 | - | 4 | - | 3 | 0 | ||
CheckMemoryLeak+AllocType | 0.42 | - | 0 | - | 0 | - | 5 | 0 | ||
XMLPrinter | 0.41 | 182 | 94 | 34.06 | 83 | - | 2 | 13 | tinyxml2 | |
XMLElement+AnonymousEnum | 0.41 | - | 0 | - | 0 | - | 1 | 0 | tinyxml2 | |
Dimension | 0.41 | 4 | 3 | 42.86 | 6 | - | 3 | 1 | ||
CheckMemoryLeak | 0.41 | 193 | 90 | 31.8 | 138 | - | 5 | 28 | ||
InternalError+Type | 0.4 | - | 0 | - | 0 | - | 1 | 0 | ||
Library+WarnInfo | 0.39 | 0 | 0 | - | 3 | - | 3 | 3 | ||
make_container<Cont> | 0.39 | 10 | 0 | 0 | 6 | - | 3 | 0 | ||
Token+AnonymousEnum | 0.38 | - | 0 | - | 0 | - | 1 | 0 | ||
Token+Anonymous | 0.38 | 0 | 0 | - | 1 | - | 1 | 0 | ||
Output+Type | 0.38 | - | 0 | - | 0 | - | 1 | 0 | simplecpp | |
TimerResultsIntf | 0.38 | 0 | 0 | - | 5 | - | 2 | 3 | ||
Suppressions+SuppressionEntry | 0.38 | 3 | 0 | 0 | 5 | - | 2 | 4 | ||
Preprocessor | 0.38 | 265 | 84 | 24.07 | 131 | - | 3 | 44 | ||
Scope+ScopeType | 0.36 | - | 0 | - | 0 | - | 2 | 0 | ||
LongFitsIntoSizeTMinusOne<> | 0.36 | 1 | 0 | 0 | 1 | - | 1 | 0 | tinyxml2 | |
Output+Type | 0.36 | - | 0 | - | 0 | - | 1 | 0 | simplecpp | |
Library+PodType | 0.36 | 0 | 1 | 100 | 4 | - | 3 | 0 | ||
ImportProject | 0.36 | 0 | 5 | 100 | 13 | - | 4 | 7 | ||
Suppressions | 0.36 | 0 | 43 | 100 | 13 | - | 4 | 6 | ||
Settings+Language | 0.36 | - | 0 | - | 0 | - | 2 | 0 | ||
TokenList | 0.35 | 27 | 1 | 3.57 | 37 | - | 3 | 10 | simplecpp | |
CheckLeakAutoVar | 0.35 | 8 | 16 | 66.67 | 23 | - | 2 | 13 | ||
Library+PodType | 0.35 | 0 | 1 | 100 | 1 | - | 3 | 0 | ||
CheckMemoryLeakInFunction | 0.35 | 19 | 94 | 83.19 | 20 | - | 3 | 13 | ||
Suppressions | 0.35 | 76 | 56 | 42.42 | 59 | - | 3 | 22 | ||
Library+Container+Function | 0.35 | 0 | 0 | - | 4 | - | 3 | 2 | ||
Tokenizer | 0.34 | 10 | 436 | 97.76 | 150 | - | 2 | 11 | ||
Output | 0.34 | 2 | 1 | 33.33 | 4 | - | 2 | 6 | simplecpp | |
Variable+AnonymousEnum | 0.34 | - | 0 | - | 0 | - | 1 | 0 | ||
InternalError | 0.34 | 0 | 3 | 100 | 5 | - | 1 | 5 | ||
CheckMemoryLeakInFunction | 0.33 | 1006 | 251 | 19.97 | 579 | - | 3 | 30 | ||
Type+NeedInitialization | 0.33 | - | 0 | - | 0 | - | 1 | 0 | ||
Type+BaseInfo | 0.33 | 5 | 1 | 16.67 | 5 | - | 1 | 4 | ||
FileLister | 0.33 | 46 | 48 | 51.06 | 21 | - | 4 | 10 | ||
Path | 0.33 | 2 | 98 | 98 | 23 | - | 3 | 7 | ||
Library+ArgumentChecks+MinSize | 0.33 | 3 | 0 | 0 | 2 | - | 2 | 1 | ||
Platform | 0.31 | 22 | 9 | 29.03 | 24 | - | 3 | 4 | cppcheck | |
Enumerator | 0.31 | 6 | 0 | 0 | 6 | - | 2 | 2 | ||
Library+Platform | 0.31 | 2 | 0 | 0 | 5 | - | 2 | 11 | ||
Function+Type | 0.31 | - | 0 | - | 0 | - | 2 | 0 | ||
Severity | 0.3 | 38 | 1 | 2.56 | 25 | - | 4 | 6 | ||
Library+PlatformType | 0.3 | 8 | 0 | 0 | 12 | - | 2 | 2 | ||
Library+Function | 0.3 | 9 | 0 | 0 | 3 | - | 3 | 1 | ||
AnalyzerInformation | 0.3 | 0 | 16 | 100 | 10 | - | 2 | 6 | ||
Value | 0.3 | 63 | 1 | 1.56 | 38 | - | 1 | 4 | ValueFlow | |
Token+Type | 0.3 | - | 0 | - | 0 | - | 1 | 0 | ||
Token+AnonymousEnum | 0.3 | - | 0 | - | 0 | - | 1 | 0 | ||
Token+Anonymous | 0.3 | 0 | 0 | - | 0 | - | 1 | 0 | ||
CheckMemoryLeakStructMember | 0.3 | 4 | 2 | 33.33 | 14 | - | 2 | 10 | ||
CheckMemoryLeakInClass | 0.3 | 9 | 4 | 30.77 | 17 | - | 2 | 11 | ||
ImportProject | 0.3 | 142 | 6 | 4.05 | 79 | - | 1 | 30 | ||
ProjectConfiguration | 0.3 | 9 | 0 | 0 | 10 | - | 2 | 3 | anonymous_namespace{importproject.cpp} | |
ValueType+Type | 0.29 | - | 0 | - | 0 | - | 2 | 0 | ||
PathMatch | 0.29 | 0 | 21 | 100 | 8 | - | 2 | 4 | ||
CheckMemoryLeakNoVar | 0.29 | 8 | 13 | 61.9 | 17 | - | 2 | 11 | ||
Library+ExportedFunctions | 0.29 | 4 | 0 | 0 | 7 | - | 1 | 6 | ||
ThreadExecutor | 0.29 | 111 | 24 | 17.78 | 32 | - | 3 | 26 | ||
Function+AnonymousEnum | 0.29 | - | 0 | - | 0 | - | 1 | 0 | ||
Settings+Language | 0.29 | - | 0 | - | 0 | - | 2 | 0 | ||
Token | 0.29 | 42 | 4 | 8.7 | 32 | - | 3 | 6 | simplecpp | |
AnalyzerInformation | 0.28 | 0 | 16 | 100 | 10 | - | 2 | 6 | ||
MacroUsage | 0.28 | 2 | 1 | 33.33 | 6 | - | 2 | 5 | simplecpp | |
Library | 0.28 | 49 | 21 | 30 | 96 | - | 2 | 25 | ||
CppCheckExecutor | 0.28 | 214 | 116 | 35.15 | 91 | - | 3 | 44 | ||
Token | 0.28 | 27 | 4 | 12.9 | 24 | - | 1 | 5 | simplecpp | |
Variables+ScopeGuard | 0.28 | 4 | 1 | 20 | 5 | - | 2 | 1 | ||
Variables+VariableUsage | 0.28 | 11 | 3 | 21.43 | 9 | - | 2 | 5 | ||
make_container<Cont> | 0.27 | 10 | 0 | 0 | 6 | - | 2 | 0 | ||
Dimension | 0.27 | 4 | 3 | 42.86 | 4 | - | 2 | 1 | ||
ValueType | 0.27 | 34 | 1 | 2.86 | 15 | - | 2 | 10 | ||
CheckAssert | 0.27 | 7 | 5 | 41.67 | 16 | - | 1 | 9 | ||
CheckExceptionSafety | 0.27 | 26 | 24 | 48 | 25 | - | 1 | 12 | ||
CheckVaarg | 0.27 | 11 | 5 | 31.25 | 18 | - | 1 | 9 | ||
CheckPostfixOperator | 0.27 | 8 | 9 | 52.94 | 14 | - | 1 | 9 | ||
Check64BitPortability | 0.27 | 12 | 10 | 45.45 | 17 | - | 1 | 9 | ||
MathLib | 0.27 | 3 | 21 | 87.5 | 43 | - | 1 | 7 | ||
CheckSizeof | 0.27 | 22 | 16 | 42.11 | 30 | - | 1 | 9 | ||
CheckBool | 0.27 | 23 | 19 | 45.24 | 32 | - | 1 | 9 | ||
CheckString | 0.27 | 20 | 15 | 42.86 | 27 | - | 1 | 9 | ||
CheckBoost | 0.27 | 8 | 7 | 46.67 | 14 | - | 1 | 9 | ||
ValueType+Sign | 0.27 | - | 0 | - | 0 | - | 1 | 0 | ||
Token | 0.27 | 27 | 4 | 12.9 | 23 | - | 1 | 5 | simplecpp | |
TimerResults | 0.27 | 0 | 0 | - | 8 | - | 1 | 6 | ||
ImportProject+FileSettings | 0.26 | 45 | 4 | 8.16 | 37 | - | 3 | 13 | ||
VarInfo+AllocInfo | 0.26 | 2 | 0 | 0 | 4 | - | 2 | 1 | ||
Library+Container+Function | 0.26 | 0 | 0 | - | 1 | - | 1 | 2 | ||
CheckUnusedVar | 0.26 | 14 | 13 | 48.15 | 22 | - | 1 | 10 | ||
MathLib+value+AnonymousEnum | 0.26 | - | 0 | - | 0 | - | 1 | 0 | ||
Output | 0.26 | 2 | 1 | 33.33 | 6 | - | 3 | 6 | simplecpp | |
CheckUninitVar+Alloc | 0.26 | - | 0 | - | 0 | - | 1 | 0 | ||
CheckIO+ArgumentInfo | 0.26 | 0 | 1 | 100 | 10 | - | 1 | 2 | ||
Function+AnonymousEnum | 0.25 | - | 0 | - | 0 | - | 1 | 0 | ||
XMLPrinter+AnonymousEnum | 0.25 | - | 0 | - | 0 | - | 1 | 0 | tinyxml2 | |
TokenList | 0.25 | 450 | 22 | 4.66 | 286 | - | 3 | 21 | simplecpp | |
CheckBufferOverrun+MyFileInfo+ArrayUsage | 0.25 | 0 | 0 | - | 6 | - | 2 | 1 | ||
CheckCondition | 0.25 | 27 | 20 | 42.55 | 36 | - | 1 | 9 | ||
Variable+AnonymousEnum | 0.25 | - | 0 | - | 0 | - | 1 | 0 | ||
CheckClass+Usage | 0.25 | 2 | 2 | 50 | 1 | - | 1 | 0 | ||
VarInfo+AllocInfo | 0.25 | 2 | 0 | 0 | 4 | - | 1 | 1 | ||
VarInfo | 0.25 | 12 | 1 | 7.69 | 11 | - | 1 | 6 | ||
MathLib+value | 0.25 | 187 | 3 | 1.58 | 92 | - | 2 | 11 | ||
CheckType | 0.24 | 21 | 14 | 40 | 23 | - | 1 | 11 | ||
CheckUnusedFunctions | 0.24 | 4 | 17 | 80.95 | 18 | - | 1 | 12 | ||
CheckAutoVariables | 0.24 | 18 | 15 | 45.45 | 32 | - | 1 | 9 | ||
Preprocessor+HeaderTypes | 0.24 | - | 0 | - | 0 | - | 1 | 0 | ||
Directive | 0.24 | 0 | 9 | 100 | 6 | - | 1 | 3 | ||
CmdLineParser | 0.24 | 393 | 117 | 22.94 | 174 | - | 2 | 34 | ||
Library+Container+Function | 0.24 | 0 | 0 | - | 1 | - | 1 | 2 | ||
Check+FileInfo | 0.24 | 1 | 1 | 50 | 4 | - | 1 | 4 | ||
CheckNullPointer | 0.24 | 294 | 106 | 26.5 | 251 | - | 3 | 30 | ||
TestCppcheck+ErrorLogger2 | 0.24 | 1 | 0 | 0 | 8 | - | 1 | 6 | ||
TemplateSimplifier | 0.23 | 0 | 95 | 100 | 21 | - | 1 | 10 | ||
CheckIO | 0.23 | 31 | 12 | 27.91 | 41 | - | 1 | 11 | ||
CheckUninitVar | 0.23 | 15 | 9 | 37.5 | 31 | - | 1 | 11 | ||
Library+WarnInfo | 0.23 | 0 | 0 | - | 5 | - | 2 | 3 | ||
CppCheckExecutor | 0.23 | 214 | 116 | 35.15 | 91 | - | 2 | 44 | ||
MacroUsage | 0.23 | 2 | 1 | 33.33 | 4 | - | 1 | 5 | simplecpp | |
TokenList | 0.23 | 27 | 1 | 3.57 | 37 | - | 1 | 10 | simplecpp | |
Library+Error | 0.23 | 4 | 0 | 0 | 7 | - | 2 | 2 | ||
Preprocessor+HeaderTypes | 0.23 | - | 0 | - | 0 | - | 1 | 0 | ||
Directive | 0.23 | 0 | 9 | 100 | 6 | - | 1 | 3 | ||
CheckBufferOverrun | 0.22 | 34 | 50 | 59.52 | 54 | - | 1 | 16 | ||
CheckStl | 0.22 | 48 | 54 | 52.94 | 57 | - | 1 | 11 | ||
CheckBufferOverrun+ArrayInfo | 0.22 | 8 | 13 | 61.9 | 19 | - | 1 | 5 | ||
Library+AllocFunc | 0.22 | 0 | 0 | - | 4 | - | 2 | 0 | ||
DUI | 0.22 | 0 | 0 | - | 6 | - | 1 | 2 | simplecpp | |
CppCheck | 0.22 | 2 | 106 | 98.15 | 29 | - | 2 | 11 | ||
CheckFunctions | 0.22 | 17 | 23 | 57.5 | 23 | - | 1 | 17 | ||
Library+ArgumentChecks+MinSize | 0.22 | 3 | 0 | 0 | 4 | - | 2 | 1 | ||
Timer | 0.22 | 18 | 0 | 0 | 10 | - | 2 | 7 | ||
TimerResults | 0.22 | 18 | 1 | 5.26 | 12 | - | 2 | 18 | ||
CheckNullPointer | 0.22 | 12 | 37 | 75.51 | 23 | - | 1 | 12 | ||
Type+FriendInfo | 0.22 | 3 | 0 | 0 | 6 | - | 2 | 3 | ||
TimerResultsData | 0.21 | 4 | 0 | 0 | 5 | - | 1 | 0 | ||
FileLister | 0.21 | 46 | 48 | 51.06 | 21 | - | 2 | 10 | ||
Suppressions+FileMatcher | 0.21 | 67 | 32 | 32.32 | 39 | - | 1 | 18 | ||
Directive | 0.2 | 4 | 9 | 69.23 | 6 | - | 2 | 4 | ||
Macro+invalidHashHash | 0.2 | 0 | 1 | 100 | 4 | - | 1 | 6 | simplecpp | |
Macro+wrongNumberOfParameters | 0.2 | 0 | 1 | 100 | 4 | - | 1 | 6 | simplecpp | |
Library+WarnInfo | 0.2 | 0 | 0 | - | 3 | - | 1 | 3 | ||
Library+Platform | 0.2 | 2 | 0 | 0 | 5 | - | 1 | 11 | ||
Library+ArgumentChecks+MinSize | 0.2 | 3 | 0 | 0 | 2 | - | 1 | 1 | ||
Library+Container | 0.2 | 13 | 0 | 0 | 8 | - | 1 | 13 | ||
Library+ArgumentChecks | 0.2 | 8 | 0 | 0 | 4 | - | 1 | 3 | ||
Library+AllocFunc | 0.2 | 0 | 0 | - | 4 | - | 1 | 0 | ||
Library+ExportedFunctions | 0.2 | 4 | 0 | 0 | 7 | - | 1 | 6 | ||
Library+PodType | 0.2 | 0 | 1 | 100 | 1 | - | 1 | 0 | ||
CppCheck | 0.2 | 336 | 170 | 33.6 | 143 | - | 1 | 54 | ||
ThreadExecutor+MessageType | 0.2 | - | 0 | - | 0 | - | 1 | 0 | ||
VarIdScopeInfo | 0.19 | 8 | 2 | 20 | 5 | - | 1 | 0 | anonymous_namespace{tokenize.cpp} | |
Space | 0.19 | 2 | 0 | 0 | 5 | - | 1 | 2 | ||
triplet | 0.19 | 2 | 0 | 0 | 5 | - | 1 | 2 | anonymous_namespace{tokenize.cpp} | |
TemplateSimplifier | 0.19 | 802 | 245 | 23.4 | 513 | - | 1 | 32 | ||
ThreadExecutor+MessageType | 0.19 | - | 0 | - | 0 | - | 1 | 0 | ||
TestPreprocessor+OurPreprocessor | 0.19 | 12 | 0 | 0 | 6 | - | 1 | 16 | ||
Scope+UsingInfo | 0.19 | 0 | 0 | - | 6 | - | 1 | 2 | ||
Library+Platform | 0.19 | 2 | 0 | 0 | 7 | - | 1 | 11 | ||
Library+ExportedFunctions | 0.19 | 4 | 0 | 0 | 9 | - | 1 | 6 | ||
Library+Function | 0.19 | 9 | 0 | 0 | 5 | - | 1 | 1 | ||
Library+CodeBlock | 0.19 | 9 | 0 | 0 | 13 | - | 1 | 7 | ||
Library+ArgumentChecks | 0.19 | 8 | 0 | 0 | 5 | - | 1 | 3 | ||
Library+Error | 0.19 | 4 | 0 | 0 | 7 | - | 1 | 2 | ||
ItemDefinitionGroup | 0.19 | 35 | 1 | 2.78 | 27 | - | 1 | 11 | anonymous_namespace{importproject.cpp} | |
Check | 0.18 | 23 | 20 | 46.51 | 23 | - | 1 | 13 | ||
VarInfo | 0.18 | 39 | 2 | 4.88 | 20 | - | 1 | 14 | ||
Preprocessor+HeaderTypes | 0.18 | - | 0 | - | 0 | - | 1 | 0 | ||
MacroUsage | 0.18 | 2 | 1 | 33.33 | 6 | - | 1 | 5 | simplecpp | |
DUI | 0.18 | 0 | 0 | - | 6 | - | 1 | 2 | simplecpp | |
CheckUninitVar+Alloc | 0.18 | - | 0 | - | 0 | - | 1 | 0 | ||
VariableValue | 0.18 | 2 | 0 | 0 | 6 | - | 1 | 0 | ||
Filepointer | 0.18 | 5 | 0 | 0 | 4 | - | 1 | 3 | ||
CheckIO+ArgumentInfo | 0.18 | 262 | 11 | 4.03 | 157 | - | 1 | 21 | ||
Preprocessor | 0.18 | 2 | 68 | 97.14 | 26 | - | 1 | 15 | ||
CmdLineParser | 0.18 | 393 | 117 | 22.94 | 174 | - | 1 | 34 | ||
ThreadExecutor | 0.18 | 111 | 24 | 17.78 | 32 | - | 1 | 26 | ||
CheckBufferOverrun+MyFileInfo | 0.18 | 6 | 1 | 14.29 | 9 | - | 1 | 15 | ||
CheckBufferOverrun+ArrayInfo | 0.18 | 44 | 20 | 31.25 | 28 | - | 1 | 9 | ||
Location | 0.18 | 3 | 0 | 0 | 7 | - | 1 | 4 | anonymous_namespace{checkunusedfunctions .cpp} | |
CheckUnusedFunctions+FunctionUsage | 0.18 | 3 | 0 | 0 | 6 | - | 1 | 1 | ||
CheckUnusedFunctions+FunctionDecl | 0.18 | 2 | 0 | 0 | 6 | - | 1 | 4 | ||
CheckClass+Usage | 0.17 | 2 | 2 | 50 | 6 | - | 1 | 0 | ||
VarInfo | 0.17 | 2 | 1 | 33.33 | 4 | - | 1 | 2 | anonymous_namespace{checkclass.cpp} | |
Type+FriendInfo | 0.17 | 3 | 0 | 0 | 4 | - | 1 | 3 | ||
CheckUnusedFunctions | 0.17 | 202 | 38 | 15.83 | 139 | - | 1 | 45 | ||
Settings+Rule | 0.17 | 3 | 4 | 57.14 | 6 | - | 1 | 3 | ||
AnalyzerInformation | 0.17 | 58 | 16 | 21.62 | 30 | - | 1 | 22 | ||
CheckUninitVar+MyFileInfo | 0.15 | 0 | 1 | 100 | 4 | - | 0 | 2 | ||
CheckUninitVar | 0.15 | 656 | 107 | 14.02 | 546 | - | 0 | 38 | ||
CheckSizeof | 0.15 | 198 | 48 | 19.51 | 168 | - | 0 | 16 | ||
CheckStl | 0.15 | 845 | 186 | 18.04 | 609 | - | 0 | 42 | ||
CheckType | 0.15 | 200 | 46 | 18.7 | 155 | - | 0 | 29 | ||
PathMatch | 0.15 | 30 | 31 | 50.82 | 24 | - | 0 | 12 | ||
CheckVaarg | 0.15 | 88 | 14 | 13.73 | 69 | - | 0 | 22 | ||
CheckUnusedVar | 0.15 | 430 | 101 | 19.02 | 340 | - | 0 | 45 | ||
CheckMemoryLeakInClass | 0.15 | 103 | 33 | 24.26 | 78 | - | 0 | 26 | ||
ProgramMemory | 0.15 | 16 | 0 | 0 | 18 | - | 0 | 8 | anonymous_namespace{valueflow.cpp} | |
AST_state | 0.15 | 4 | 1 | 20 | 5 | - | 0 | 1 | ||
CheckBufferOverrun | 0.15 | 924 | 275 | 22.94 | 581 | - | 0 | 43 | ||
CheckBoost | 0.15 | 26 | 7 | 21.21 | 24 | - | 0 | 13 | ||
CheckCondition | 0.15 | 532 | 84 | 13.64 | 410 | - | 0 | 36 | ||
CheckClass | 0.15 | 1102 | 377 | 25.49 | 804 | - | 0 | 48 | ||
CheckAssert | 0.15 | 59 | 15 | 20.27 | 55 | - | 0 | 15 | ||
Check64BitPortability | 0.15 | 59 | 18 | 23.38 | 60 | - | 0 | 17 | ||
CheckBool | 0.15 | 223 | 41 | 15.53 | 170 | - | 0 | 22 | ||
CheckAutoVariables | 0.15 | 212 | 51 | 19.39 | 185 | - | 0 | 23 | ||
CheckOther | 0.15 | 1496 | 369 | 19.79 | 1125 | - | 0 | 46 | ||
CheckMemoryLeakStructMember | 0.15 | 110 | 32 | 22.54 | 80 | - | 0 | 15 | ||
CheckLeakAutoVar | 0.15 | 320 | 64 | 16.67 | 205 | - | 0 | 36 | ||
CheckPostfixOperator | 0.15 | 27 | 13 | 32.5 | 30 | - | 0 | 14 | ||
CheckMemoryLeakNoVar | 0.15 | 75 | 39 | 34.21 | 70 | - | 0 | 17 | ||
CheckString | 0.15 | 195 | 44 | 18.41 | 141 | - | 0 | 17 | ||
CheckFunctions | 0.15 | 162 | 45 | 21.74 | 150 | - | 0 | 30 | ||
CheckIO | 0.15 | 1188 | 64 | 5.11 | 801 | - | 0 | 40 | ||
CheckExceptionSafety | 0.15 | 137 | 71 | 34.13 | 99 | - | 0 | 23 | ||
XMLConstHandle | 0.15 | 18 | 4 | 18.18 | 30 | - | 0 | 5 | tinyxml2 | |
XMLHandle | 0.15 | 18 | 72 | 80 | 30 | - | 0 | 5 | tinyxml2 | |
XMLElement+AnonymousEnum | 0.15 | - | 0 | - | 0 | - | 0 | 0 | tinyxml2 | |
TestCharVar | 0.15 | 54 | 5 | 8.47 | 13 | - | 0 | 11 | ||
TestBufferOverrun | 0.15 | 1009 | 239 | 19.15 | 282 | - | 0 | 15 | ||
XMLPrinter+AnonymousEnum | 0.15 | - | 0 | - | 0 | - | 0 | 0 | tinyxml2 | |
StrPair+AnonymousEnum | 0.15 | - | 0 | - | 0 | - | 0 | 0 | tinyxml2 | |
CheckBufferOverrun+MyFileInfo+ArrayUsage | 0.15 | 0 | 0 | - | 3 | - | 0 | 1 | ||
CheckBufferOverrun+MyFileInfo | 0.15 | 0 | 1 | 100 | 5 | - | 0 | 5 | ||
XMLElement+AnonymousEnum | 0.15 | - | 0 | - | 0 | - | 0 | 0 | tinyxml2 | |
XMLAttribute+AnonymousEnum | 0.15 | - | 0 | - | 0 | - | 0 | 0 | tinyxml2 | |
XMLUtil | 0.15 | 22 | 10 | 31.25 | 33 | - | 0 | 0 | tinyxml2 | |
TestGarbage | 0.15 | 591 | 338 | 36.38 | 371 | - | 0 | 16 | ||
TestFileLister | 0.15 | 21 | 5 | 19.23 | 13 | - | 0 | 17 | ||
TestExceptionSafety | 0.15 | 93 | 11 | 10.58 | 41 | - | 0 | 9 | ||
TestLeakAutoVar | 0.15 | 328 | 78 | 19.21 | 134 | - | 0 | 10 | ||
TestIO | 0.15 | 975 | 83 | 7.84 | 62 | - | 0 | 14 | ||
TestIncompleteStatement | 0.15 | 77 | 19 | 19.79 | 43 | - | 0 | 9 | ||
TestCondition | 0.15 | 568 | 115 | 16.84 | 70 | - | 0 | 11 | ||
TestCmdlineParser | 0.15 | 627 | 45 | 6.7 | 192 | - | 0 | 18 | ||
TestClass | 0.15 | 1349 | 343 | 20.27 | 301 | - | 0 | 11 | ||
TestErrorLogger | 0.15 | 229 | 14 | 5.76 | 51 | - | 0 | 14 | ||
TestCppcheck | 0.15 | 25 | 6 | 19.35 | 19 | - | 0 | 13 | ||
TestConstructors | 0.15 | 600 | 165 | 21.57 | 255 | - | 0 | 9 | ||
Library+CodeBlock | 0.15 | 9 | 0 | 0 | 12 | - | 0 | 7 | ||
Library+Function | 0.15 | 9 | 0 | 0 | 3 | - | 0 | 1 | ||
Severity | 0.15 | 38 | 1 | 2.56 | 25 | - | 0 | 6 | ||
IMAGEHLP_SYMBOL64_EXT | 0.15 | 0 | 0 | - | 3 | - | 0 | 1 | anonymous_namespace{cppcheckexecutor .cpp} | |
make_container<Cont> | 0.15 | 10 | 0 | 0 | 6 | - | 0 | 0 | ||
DUI | 0.15 | 0 | 0 | - | 3 | - | 0 | 2 | simplecpp | |
TimerResultsData | 0.15 | 4 | 0 | 0 | 3 | - | 0 | 0 | ||
MathLib+value | 0.15 | 3 | 1 | 25 | 14 | - | 0 | 4 | ||
MathLib | 0.15 | 3 | 21 | 87.5 | 43 | - | 0 | 7 | ||
Suppressions+FileMatcher | 0.15 | 0 | 24 | 100 | 10 | - | 0 | 4 | ||
Settings+Rule | 0.15 | 3 | 4 | 57.14 | 6 | - | 0 | 3 | ||
Timer | 0.15 | 0 | 0 | - | 5 | - | 0 | 4 | ||
TestAssert | 0.15 | 49 | 4 | 7.55 | 15 | - | 0 | 9 | ||
Test64BitPortability | 0.15 | 65 | 12 | 15.58 | 19 | - | 0 | 9 | ||
IMAGEHLP_SYMBOL64_EXT | 0.15 | 0 | 0 | - | 3 | - | 0 | 1 | anonymous_namespace{cppcheckexecutor .cpp} | |
TestBoost | 0.15 | 22 | 6 | 21.43 | 9 | - | 0 | 9 | ||
TestBool | 0.15 | 289 | 33 | 10.25 | 53 | - | 0 | 9 | ||
TestAutoVariables | 0.15 | 297 | 69 | 18.85 | 101 | - | 0 | 12 | ||
Severity | 0.15 | 38 | 1 | 2.56 | 25 | - | 0 | 6 | ||
Suppressions+FileMatcher | 0.15 | 0 | 24 | 100 | 10 | - | 0 | 4 | ||
MathLib+value | 0.15 | 3 | 1 | 25 | 14 | - | 0 | 4 | ||
Settings+Rule | 0.15 | 3 | 4 | 57.14 | 6 | - | 0 | 3 | ||
Timer | 0.15 | 0 | 0 | - | 5 | - | 0 | 4 | ||
Library+CodeBlock | 0.15 | 9 | 0 | 0 | 12 | - | 0 | 7 | ||
TestTokenList | 0.15 | 46 | 10 | 17.86 | 22 | - | 0 | 13 | ||
TestTokenizer | 0.15 | 2750 | 789 | 22.29 | 749 | - | 0 | 30 | ||
TestToken | 0.15 | 583 | 26 | 4.27 | 123 | - | 0 | 17 | ||
TestUninitVar | 0.15 | 944 | 256 | 21.33 | 91 | - | 0 | 14 | ||
CheckUninitVar+MyFileInfo | 0.15 | 0 | 1 | 100 | 4 | - | 0 | 2 | ||
TestType | 0.15 | 85 | 16 | 15.84 | 24 | - | 0 | 12 | ||
TestSuppressions | 0.15 | 169 | 37 | 17.96 | 45 | - | 0 | 21 | ||
TestString | 0.15 | 168 | 22 | 11.58 | 31 | - | 0 | 9 | ||
TestStl | 0.15 | 745 | 132 | 15.05 | 171 | - | 0 | 15 | ||
TestTimer | 0.15 | 6 | 0 | 0 | 8 | - | 0 | 2 | ||
TestThreadExecutor | 0.15 | 34 | 5 | 12.82 | 26 | - | 0 | 19 | ||
TestSymbolDatabase | 0.15 | 2472 | 266 | 9.72 | 628 | - | 0 | 48 | ||
Macro | 0.15 | 400 | 61 | 13.23 | 212 | - | 0 | 22 | simplecpp | |
TestVarID | 0.15 | 602 | 144 | 19.3 | 286 | - | 0 | 16 | ||
TestValueFlow | 0.15 | 774 | 210 | 21.34 | 103 | - | 0 | 20 | ||
LongFitsIntoSizeTMinusOne<false> | 0.15 | 1 | 0 | 0 | 1 | - | 0 | 0 | tinyxml2 | |
XMLConstHandle | 0.15 | 18 | 4 | 18.18 | 30 | - | 0 | 5 | tinyxml2 | |
XMLHandle | 0.15 | 18 | 72 | 80 | 30 | - | 0 | 5 | tinyxml2 | |
TestUnusedFunctions | 0.15 | 135 | 17 | 11.18 | 52 | - | 0 | 12 | ||
CheckUnusedFunctions+FunctionDecl | 0.15 | 0 | 0 | - | 6 | - | 0 | 1 | ||
CheckUnusedFunctions+FunctionUsage | 0.15 | 3 | 0 | 0 | 6 | - | 0 | 1 | ||
TestVaarg | 0.15 | 66 | 11 | 14.29 | 19 | - | 0 | 9 | ||
TestUnusedVar | 0.15 | 991 | 211 | 17.55 | 276 | - | 0 | 10 | ||
TestUnusedPrivateFunction | 0.15 | 131 | 41 | 23.84 | 67 | - | 0 | 11 | ||
TestMemleakNoVar | 0.15 | 79 | 12 | 13.19 | 14 | - | 0 | 13 | ||
TestMemleakStructMember | 0.15 | 103 | 34 | 24.82 | 49 | - | 0 | 12 | ||
TestMemleakInClass | 0.15 | 170 | 27 | 13.71 | 68 | - | 0 | 12 | ||
TestNullPointer | 0.15 | 649 | 187 | 22.37 | 110 | - | 0 | 17 | ||
TestMemleakWindows | 0.15 | 22 | 4 | 15.38 | 14 | - | 0 | 12 | ||
TestMemleakGLib | 0.15 | 38 | 6 | 13.64 | 11 | - | 0 | 20 | ||
TestMathLib | 0.15 | 876 | 132 | 13.1 | 70 | - | 0 | 9 | ||
TestLibrary | 0.15 | 318 | 18 | 5.36 | 57 | - | 0 | 31 | ||
TestLeakAutoVarWindows | 0.15 | 19 | 3 | 13.64 | 10 | - | 0 | 12 | ||
TestMemleakInFunction | 0.15 | 1020 | 211 | 17.14 | 351 | - | 0 | 22 | ||
TestMemleak | 0.15 | 24 | 4 | 14.29 | 11 | - | 0 | 14 | ||
Scope+UsingInfo | 0.15 | 0 | 0 | - | 0 | - | 0 | 2 | ||
TestSimplifyTemplate | 0.15 | 346 | 135 | 28.07 | 146 | - | 0 | 14 | ||
TestSamples | 0.15 | 28 | 3 | 9.68 | 14 | - | 0 | 23 | ||
TestPreprocessor | 0.15 | 772 | 169 | 17.96 | 297 | - | 0 | 26 | ||
TestSizeof | 0.15 | 240 | 18 | 6.98 | 27 | - | 0 | 9 | ||
TestSimplifyTypedef | 0.15 | 822 | 277 | 25.2 | 262 | - | 0 | 14 | ||
TestSimplifyTokens | 0.15 | 1179 | 135 | 10.27 | 226 | - | 0 | 17 | ||
TestOther | 0.15 | 1644 | 222 | 11.9 | 272 | - | 0 | 22 | ||
TestOptions | 0.15 | 29 | 0 | 0 | 20 | - | 0 | 2 | ||
TestFunctions | 0.15 | 236 | 56 | 19.18 | 57 | - | 0 | 16 | ||
TestPostfixOperator | 0.15 | 71 | 5 | 6.58 | 25 | - | 0 | 9 | ||
TestPathMatch | 0.15 | 78 | 4 | 4.88 | 60 | - | 0 | 7 | ||
TestPath | 0.15 | 102 | 8 | 7.27 | 22 | - | 0 | 7 |
Types Metrics : Code Members and Inheritance
Type Name | # Instance Methods | Nb Static Methods | # Fields | # Children Classes | Depth Of Inheritance Tree | Type Namespace |
---|---|---|---|---|---|---|
Token | 140 | 21 | 18 | 0 | 0 | |
Settings | 12 | 2 | 42 | 0 | 1 | |
Token | 140 | 21 | 18 | 0 | 0 | |
Tokenizer | 138 | 12 | 9 | 0 | 0 | |
TestFixture | 23 | 1 | 9 | 59 | 1 | |
StrPair+AnonymousEnum | - | - | - | - | - | tinyxml2 |
ErrorLogger | 9 | 2 | 0 | 64 | 0 | |
XMLDocument | 39 | 1 | 14 | 0 | 1 | tinyxml2 |
StrPair | 14 | 0 | 3 | 0 | 0 | tinyxml2 |
XMLVisitor | 10 | 0 | 0 | 1 | 0 | tinyxml2 |
XMLNode | 55 | 1 | 10 | 6 | 0 | tinyxml2 |
Scope | 30 | 0 | 21 | 0 | 0 | |
XMLUtil | 0 | 22 | 0 | 0 | 0 | tinyxml2 |
Check | 17 | 2 | 4 | 27 | 0 | |
XMLNode | 55 | 1 | 10 | 6 | 0 | tinyxml2 |
Severity+SeverityType | - | - | - | - | - | |
Library | 70 | 5 | 24 | 0 | 0 | |
XMLError | - | - | - | - | - | tinyxml2 |
XMLDocument | 39 | 1 | 14 | 0 | 1 | tinyxml2 |
Severity+SeverityType | - | - | - | - | - | |
Variable | 53 | 0 | 9 | 0 | 0 | |
StrPair | 14 | 0 | 3 | 0 | 0 | tinyxml2 |
StrPair+AnonymousEnum | - | - | - | - | - | tinyxml2 |
Library+ErrorCode | - | - | - | - | - | |
XMLElement | 66 | 1 | 2 | 0 | 1 | tinyxml2 |
Settings | 12 | 2 | 42 | 0 | 1 | |
XMLDeclaration | 10 | 0 | 0 | 0 | 1 | tinyxml2 |
XMLText | 12 | 0 | 1 | 0 | 1 | tinyxml2 |
XMLUnknown | 10 | 0 | 0 | 0 | 1 | tinyxml2 |
XMLElement | 66 | 1 | 2 | 0 | 1 | tinyxml2 |
Scope | 30 | 0 | 21 | 0 | 0 | |
XMLVisitor | 12 | 0 | 0 | 1 | 0 | tinyxml2 |
Platform+PlatformType | - | - | - | - | - | cppcheck |
ErrorLogger+ErrorMessage | 18 | 4 | 8 | 0 | 0 | |
TokenList | 25 | 2 | 6 | 0 | 0 | |
XMLComment | 10 | 0 | 0 | 0 | 1 | tinyxml2 |
XMLError | - | - | - | - | - | tinyxml2 |
XMLAttribute | 29 | 0 | 5 | 0 | 0 | tinyxml2 |
Type | 16 | 0 | 6 | 0 | 0 | |
XMLText | 12 | 0 | 1 | 0 | 1 | tinyxml2 |
Platform | 10 | 2 | 18 | 1 | 0 | cppcheck |
Tokenizer | 138 | 12 | 9 | 0 | 0 | |
MemPool | 8 | 0 | 0 | 1 | 0 | tinyxml2 |
Function | 61 | 1 | 15 | 0 | 0 | |
ErrorLogger | 9 | 2 | 0 | 1 | 0 | |
MemPoolT<ITEM_SIZE>+Item | 0 | 0 | 2 | - | - | tinyxml2 |
MemPoolT<ITEM_SIZE>+Item | 0 | 0 | 2 | - | - | tinyxml2 |
SymbolDatabase | 47 | 1 | 9 | 0 | 0 | |
Token | 140 | 21 | 18 | 0 | 0 | |
XMLDeclaration | 10 | 0 | 0 | 0 | 1 | tinyxml2 |
XMLUnknown | 10 | 0 | 0 | 0 | 1 | tinyxml2 |
Location | 8 | 0 | 4 | 0 | 0 | simplecpp |
MemPool | 9 | 0 | 0 | 1 | 0 | tinyxml2 |
Value+MoveKind | - | - | - | - | - | ValueFlow |
Library+Error | 6 | 0 | 2 | 0 | 0 | |
Severity+SeverityType | - | - | - | - | - | |
Check | 17 | 2 | 4 | 27 | 0 | |
VarInfo+AllocStatus | - | - | - | - | - | |
ErrorLogger+ErrorMessage+FileLocation | 11 | 0 | 2 | 0 | 0 | |
Library+ArgumentChecks+MinSize+Type | - | - | - | - | - | |
Value | 17 | 1 | 12 | 0 | 0 | ValueFlow |
Type | 16 | 0 | 6 | 0 | 0 | |
Check+FileInfo | 4 | 0 | 0 | 2 | 0 | |
Variables | 26 | 0 | 3 | 0 | 0 | |
Library+ArgumentChecks+MinSize+Type | - | - | - | - | - | |
Suppressions+SuppressionEntry | 4 | 0 | 3 | - | - | |
VarInfo+AllocStatus | - | - | - | - | - | |
Library | 70 | 5 | 24 | 0 | 0 | |
Library+ArgumentChecks+MinSize+Type | - | - | - | - | - | |
Scope+ScopeType | - | - | - | - | - | |
XMLComment | 10 | 0 | 0 | 0 | 1 | tinyxml2 |
MathLib | 6 | 37 | 0 | 0 | 0 | |
XMLAttribute | 29 | 0 | 5 | 0 | 0 | tinyxml2 |
AccessControl | - | - | - | - | - | |
SHOWTIME_MODES | - | - | - | - | - | |
InternalError | 5 | 0 | 3 | - | - | |
InternalError | 5 | 0 | 3 | - | - | |
Settings | 12 | 2 | 42 | 0 | 1 | |
options | 7 | 0 | 3 | 0 | 0 | |
Entity | 0 | 0 | 3 | - | - | tinyxml2 |
Location | 8 | 0 | 4 | 0 | 0 | simplecpp |
Library+Container+Yield | - | - | - | - | - | |
ValueType | 11 | 2 | 7 | 0 | 0 | |
Check+FileInfo | 4 | 0 | 0 | 2 | 0 | |
Token+Type | - | - | - | - | - | |
Library+Container+Action | - | - | - | - | - | |
Location | 8 | 0 | 4 | 0 | 0 | simplecpp |
Suppressions | 13 | 0 | 1 | 0 | 0 | |
Path | 6 | 17 | 0 | 0 | 0 | |
Value | 17 | 1 | 12 | 0 | 0 | ValueFlow |
StrPair+AnonymousEnum | - | - | - | - | - | tinyxml2 |
Token+Type | - | - | - | - | - | |
AccessControl | - | - | - | - | - | |
CWE | 6 | 0 | 1 | - | - | |
Library+Container+Yield | - | - | - | - | - | |
Library+Container+Action | - | - | - | - | - | |
Platform+PlatformType | - | - | - | - | - | cppcheck |
Value+ValueType | - | - | - | - | - | ValueFlow |
Value+MoveKind | - | - | - | - | - | ValueFlow |
Token+AnonymousEnum | - | - | - | - | - | |
Token+Anonymous | 0 | 0 | 4 | - | - | |
TimerResults | 8 | 0 | 1 | 0 | 1 | |
ImportProject | 13 | 0 | 1 | 0 | 0 | |
ErrorLogger+ErrorMessage | 18 | 4 | 8 | 0 | 0 | |
Library+Container+Yield | - | - | - | - | - | |
Library+Container+Action | - | - | - | - | - | |
Settings+Language | - | - | - | - | - | |
Value+ValueType | - | - | - | - | - | ValueFlow |
Function | 61 | 1 | 15 | 0 | 0 | |
Platform | 10 | 2 | 18 | 1 | 0 | cppcheck |
ErrorLogger+ErrorMessage | 18 | 4 | 8 | 0 | 0 | |
Library+ErrorCode | - | - | - | - | - | |
Library+ErrorCode | - | - | - | - | - | |
TokenList | 25 | 2 | 6 | 0 | 0 | |
Library+ArgumentChecks+IteratorInfo | 6 | 0 | 4 | 0 | 0 | |
Variable | 53 | 0 | 9 | 0 | 0 | |
XMLElement+AnonymousEnum | - | - | - | - | - | tinyxml2 |
SymbolDatabase | 47 | 1 | 9 | 0 | 0 | |
TimerResultsIntf | 5 | 0 | 0 | 1 | 0 | |
TokenList | 25 | 2 | 6 | 0 | 0 | |
TimerResultsData | 3 | 0 | 2 | - | - | |
Value+ValueKind | - | - | - | - | - | ValueFlow |
Whitespace | - | - | - | - | - | tinyxml2 |
Type+BaseInfo | 7 | 0 | 5 | 0 | 0 | |
CheckMemoryLeak | 20 | 1 | 3 | 4 | 0 | |
Path | 6 | 17 | 0 | 0 | 0 | |
InternalError+Type | - | - | - | - | - | |
Platform+PlatformType | - | - | - | - | - | cppcheck |
TimerResultsIntf | 5 | 0 | 0 | 1 | 0 | |
MemPoolT<ITEM_SIZE> | 12 | 0 | 6 | 0 | 1 | tinyxml2 |
ErrorLogger+ErrorMessage+FileLocation | 11 | 0 | 2 | 0 | 0 | |
DynArray<T,INITIAL_SIZE> | 18 | 0 | 4 | 0 | 0 | tinyxml2 |
Value+MoveKind | - | - | - | - | - | ValueFlow |
ErrorLogger | 9 | 2 | 0 | 3 | 0 | |
Function+Type | - | - | - | - | - | |
Library+ArgumentChecks+IteratorInfo | 6 | 0 | 4 | 0 | 0 | |
Value+ValueKind | - | - | - | - | - | ValueFlow |
ValueType+Type | - | - | - | - | - | |
XMLPrinter | 38 | 0 | 11 | 0 | 1 | tinyxml2 |
Whitespace | - | - | - | - | - | tinyxml2 |
MemPoolT<ITEM_SIZE> | 12 | 0 | 6 | 0 | 1 | tinyxml2 |
Library+ArgumentChecks+IteratorInfo | 6 | 0 | 4 | 0 | 0 | |
Suppressions+SuppressionEntry | 4 | 0 | 3 | - | - | |
PathMatch | 7 | 1 | 3 | 0 | 0 | |
Library+Container | 7 | 0 | 9 | 0 | 0 | |
Filepointer+Operation | - | - | - | - | - | |
OpenMode | - | - | - | - | - | |
Filepointer+AppendMode | - | - | - | - | - | |
DynArray<T,INITIAL_SIZE> | 18 | 0 | 4 | 0 | 0 | tinyxml2 |
ImportProject+FileSettings | 6 | 0 | 6 | - | - | |
Library+Container | 6 | 0 | 9 | 0 | 0 | |
SHOWTIME_MODES | - | - | - | - | - | |
Macro+Error | 5 | 0 | 2 | - | - | simplecpp |
InternalError+Type | - | - | - | - | - | |
ErrorLogger+ErrorMessage+FileLocation | 11 | 0 | 2 | 0 | 0 | |
ImportProject+FileSettings | 7 | 0 | 6 | - | - | |
Variables+VariableType | - | - | - | - | - | |
CheckMemoryLeak+AllocType | - | - | - | - | - | |
TestRegistry | 7 | 1 | 1 | 0 | 0 | |
SHOWTIME_MODES | - | - | - | - | - | |
Output | 6 | 0 | 3 | - | - | simplecpp |
XMLAttribute+AnonymousEnum | - | - | - | - | - | tinyxml2 |
Enumerator | 6 | 0 | 6 | 0 | 0 | |
CheckClass | 64 | 9 | 1 | 0 | 1 | |
Library+PlatformType | 7 | 0 | 7 | - | - | |
ValueType+Sign | - | - | - | - | - | |
Value+ValueType | - | - | - | - | - | ValueFlow |
Value+ValueKind | - | - | - | - | - | ValueFlow |
MemPoolT<ITEM_SIZE>+Block | 0 | 0 | 1 | - | - | tinyxml2 |
MemPoolT<ITEM_SIZE>+AnonymousEnum | - | - | - | - | - | tinyxml2 |
MemPoolT<ITEM_SIZE>+AnonymousEnum | - | - | - | - | - | tinyxml2 |
MemPoolT<ITEM_SIZE>+Block | 0 | 0 | 1 | - | - | tinyxml2 |
CWE | 6 | 0 | 1 | - | - | |
CppCheck | 27 | 2 | 10 | 0 | 1 | |
Library+ArgumentChecks | 4 | 0 | 10 | 0 | 0 | |
Type+NeedInitialization | - | - | - | - | - | |
Output+Type | - | - | - | - | - | simplecpp |
Preprocessor | 23 | 3 | 8 | 1 | 0 | |
MathLib+value+AnonymousEnum | - | - | - | - | - | |
MathLib+value+AnonymousEnum | - | - | - | - | - | |
Library+PlatformType | 6 | 0 | 7 | - | - | |
CWE | 6 | 0 | 1 | - | - | |
CheckOther | 99 | 3 | 0 | 0 | 1 | |
Library+AllocFunc | 4 | 0 | 2 | - | - | |
CheckMemoryLeak+AllocType | - | - | - | - | - | |
XMLPrinter | 39 | 0 | 11 | 0 | 1 | tinyxml2 |
XMLElement+AnonymousEnum | - | - | - | - | - | tinyxml2 |
Dimension | 6 | 0 | 4 | - | - | |
CheckMemoryLeak | 20 | 1 | 3 | 4 | 0 | |
InternalError+Type | - | - | - | - | - | |
Library+WarnInfo | 3 | 0 | 3 | - | - | |
make_container<Cont> | 5 | 0 | 1 | 0 | 0 | |
Token+AnonymousEnum | - | - | - | - | - | |
Token+Anonymous | 1 | 0 | 4 | - | - | |
Output+Type | - | - | - | - | - | simplecpp |
TimerResultsIntf | 5 | 0 | 0 | 1 | 0 | |
Suppressions+SuppressionEntry | 5 | 0 | 3 | - | - | |
Preprocessor | 23 | 3 | 8 | 0 | 0 | |
Scope+ScopeType | - | - | - | - | - | |
LongFitsIntoSizeTMinusOne<> | 0 | 1 | 0 | - | - | tinyxml2 |
Output+Type | - | - | - | - | - | simplecpp |
Library+PodType | 4 | 0 | 2 | - | - | |
ImportProject | 13 | 0 | 1 | 0 | 0 | |
Suppressions | 13 | 0 | 1 | 0 | 0 | |
Settings+Language | - | - | - | - | - | |
TokenList | 30 | 0 | 4 | 0 | 0 | simplecpp |
CheckLeakAutoVar | 22 | 1 | 0 | 0 | 1 | |
Library+PodType | 1 | 0 | 2 | - | - | |
CheckMemoryLeakInFunction | 16 | 3 | 1 | 0 | 1 | |
Suppressions | 13 | 0 | 1 | 0 | 0 | |
Library+Container+Function | 4 | 0 | 2 | - | - | |
Tokenizer | 138 | 12 | 9 | 0 | 0 | |
Output | 4 | 0 | 3 | - | - | simplecpp |
Variable+AnonymousEnum | - | - | - | - | - | |
InternalError | 5 | 0 | 3 | - | - | |
CheckMemoryLeakInFunction | 16 | 3 | 1 | 0 | 1 | |
Type+NeedInitialization | - | - | - | - | - | |
Type+BaseInfo | 5 | 0 | 5 | 0 | 0 | |
FileLister | 0 | 5 | 0 | 0 | 0 | |
Path | 6 | 17 | 0 | 0 | 0 | |
Library+ArgumentChecks+MinSize | 2 | 0 | 3 | 0 | 0 | |
Platform | 10 | 2 | 18 | 1 | 0 | cppcheck |
Enumerator | 6 | 0 | 6 | 0 | 0 | |
Library+Platform | 4 | 0 | 1 | - | - | |
Function+Type | - | - | - | - | - | |
Severity | 6 | 2 | 0 | 0 | 0 | |
Library+PlatformType | 6 | 0 | 7 | - | - | |
Library+Function | 3 | 0 | 10 | - | - | |
AnalyzerInformation | 8 | 2 | 2 | 0 | 0 | |
Value | 17 | 1 | 12 | 0 | 0 | ValueFlow |
Token+Type | - | - | - | - | - | |
Token+AnonymousEnum | - | - | - | - | - | |
Token+Anonymous | 0 | 0 | 4 | - | - | |
CheckMemoryLeakStructMember | 12 | 2 | 0 | 0 | 1 | |
CheckMemoryLeakInClass | 15 | 1 | 0 | 0 | 1 | |
ImportProject | 13 | 0 | 1 | 0 | 0 | |
ProjectConfiguration | 5 | 0 | 3 | - | - | anonymous_namespace{importproject.cpp} |
ValueType+Type | - | - | - | - | - | |
PathMatch | 7 | 1 | 3 | 0 | 0 | |
CheckMemoryLeakNoVar | 16 | 1 | 0 | 0 | 1 | |
Library+ExportedFunctions | 7 | 0 | 2 | 0 | 0 | |
ThreadExecutor | 10 | 2 | 15 | 0 | 1 | |
Function+AnonymousEnum | - | - | - | - | - | |
Settings+Language | - | - | - | - | - | |
Token | 13 | 0 | 10 | 0 | 0 | simplecpp |
AnalyzerInformation | 8 | 2 | 2 | 0 | 0 | |
MacroUsage | 6 | 0 | 3 | - | - | simplecpp |
Library | 70 | 5 | 24 | 0 | 0 | |
CppCheckExecutor | 13 | 4 | 6 | 0 | 1 | |
Token | 13 | 0 | 10 | 0 | 0 | simplecpp |
Variables+ScopeGuard | 5 | 0 | 2 | 0 | 0 | |
Variables+VariableUsage | 7 | 0 | 9 | 0 | 0 | |
make_container<Cont> | 5 | 0 | 1 | 0 | 0 | |
Dimension | 4 | 0 | 4 | - | - | |
ValueType | 11 | 2 | 7 | 0 | 0 | |
CheckAssert | 14 | 2 | 0 | 0 | 1 | |
CheckExceptionSafety | 22 | 1 | 0 | 0 | 1 | |
CheckVaarg | 17 | 1 | 0 | 0 | 1 | |
CheckPostfixOperator | 12 | 1 | 0 | 0 | 1 | |
Check64BitPortability | 16 | 1 | 0 | 0 | 1 | |
MathLib | 6 | 37 | 0 | 0 | 0 | |
CheckSizeof | 29 | 1 | 0 | 0 | 1 | |
CheckBool | 31 | 1 | 0 | 0 | 1 | |
CheckString | 26 | 1 | 0 | 0 | 1 | |
CheckBoost | 12 | 1 | 0 | 0 | 1 | |
ValueType+Sign | - | - | - | - | - | |
Token | 12 | 0 | 10 | 0 | 0 | simplecpp |
TimerResults | 8 | 0 | 1 | 0 | 1 | |
ImportProject+FileSettings | 8 | 0 | 6 | - | - | |
VarInfo+AllocInfo | 4 | 0 | 2 | - | - | |
Library+Container+Function | 1 | 0 | 2 | - | - | |
CheckUnusedVar | 21 | 1 | 2 | 0 | 1 | |
MathLib+value+AnonymousEnum | - | - | - | - | - | |
Output | 6 | 0 | 3 | - | - | simplecpp |
CheckUninitVar+Alloc | - | - | - | - | - | |
CheckIO+ArgumentInfo | 10 | 0 | 8 | 0 | 0 | |
Function+AnonymousEnum | - | - | - | - | - | |
XMLPrinter+AnonymousEnum | - | - | - | - | - | tinyxml2 |
TokenList | 30 | 0 | 4 | 0 | 0 | simplecpp |
CheckBufferOverrun+MyFileInfo+ArrayUsage | 6 | 0 | 3 | - | - | |
CheckCondition | 35 | 1 | 0 | 0 | 1 | |
Variable+AnonymousEnum | - | - | - | - | - | |
CheckClass+Usage | 1 | 0 | 2 | - | - | |
VarInfo+AllocInfo | 4 | 0 | 2 | - | - | |
VarInfo | 11 | 0 | 4 | 0 | 0 | |
MathLib+value | 12 | 1 | 4 | 0 | 0 | |
CheckType | 22 | 1 | 0 | 0 | 1 | |
CheckUnusedFunctions | 15 | 3 | 4 | 0 | 1 | |
CheckAutoVariables | 24 | 8 | 0 | 0 | 1 | |
Preprocessor+HeaderTypes | - | - | - | - | - | |
Directive | 6 | 0 | 3 | 0 | 0 | |
CmdLineParser | 12 | 3 | 7 | 0 | 0 | |
Library+Container+Function | 1 | 0 | 2 | - | - | |
Check+FileInfo | 4 | 0 | 0 | 0 | 0 | |
CheckNullPointer | 20 | 3 | 0 | 0 | 1 | |
TestCppcheck+ErrorLogger2 | 8 | 0 | 1 | 0 | 1 | |
TemplateSimplifier | 4 | 17 | 0 | 0 | 0 | |
CheckIO | 38 | 3 | 0 | 0 | 1 | |
CheckUninitVar | 28 | 1 | 0 | 0 | 1 | |
Library+WarnInfo | 5 | 0 | 3 | - | - | |
CppCheckExecutor | 13 | 4 | 6 | 0 | 1 | |
MacroUsage | 4 | 0 | 3 | - | - | simplecpp |
TokenList | 30 | 0 | 4 | 0 | 0 | simplecpp |
Library+Error | 7 | 0 | 2 | 0 | 0 | |
Preprocessor+HeaderTypes | - | - | - | - | - | |
Directive | 6 | 0 | 3 | 0 | 0 | |
CheckBufferOverrun | 48 | 3 | 1 | 0 | 1 | |
CheckStl | 55 | 1 | 0 | 0 | 1 | |
CheckBufferOverrun+ArrayInfo | 19 | 0 | 4 | 0 | 0 | |
Library+AllocFunc | 4 | 0 | 2 | - | - | |
DUI | 6 | 0 | 4 | - | - | simplecpp |
CppCheck | 27 | 2 | 10 | 0 | 1 | |
CheckFunctions | 21 | 1 | 0 | 0 | 1 | |
Library+ArgumentChecks+MinSize | 4 | 0 | 3 | 0 | 0 | |
Timer | 5 | 0 | 5 | 0 | 0 | |
TimerResults | 8 | 0 | 1 | 0 | 1 | |
CheckNullPointer | 20 | 3 | 0 | 0 | 1 | |
Type+FriendInfo | 6 | 0 | 4 | - | - | |
TimerResultsData | 5 | 0 | 2 | - | - | |
FileLister | 0 | 5 | 0 | 0 | 0 | |
Suppressions+FileMatcher | 9 | 1 | 2 | 0 | 0 | |
Directive | 6 | 0 | 3 | 0 | 0 | |
Macro+invalidHashHash | 4 | 0 | 0 | - | - | simplecpp |
Macro+wrongNumberOfParameters | 4 | 0 | 0 | - | - | simplecpp |
Library+WarnInfo | 3 | 0 | 3 | - | - | |
Library+Platform | 4 | 0 | 1 | - | - | |
Library+ArgumentChecks+MinSize | 2 | 0 | 3 | 0 | 0 | |
Library+Container | 6 | 0 | 9 | 0 | 0 | |
Library+ArgumentChecks | 4 | 0 | 10 | 0 | 0 | |
Library+AllocFunc | 4 | 0 | 2 | - | - | |
Library+ExportedFunctions | 7 | 0 | 2 | 0 | 0 | |
Library+PodType | 1 | 0 | 2 | - | - | |
CppCheck | 27 | 2 | 10 | 0 | 1 | |
ThreadExecutor+MessageType | - | - | - | - | - | |
VarIdScopeInfo | 5 | 0 | 4 | - | - | anonymous_namespace{tokenize.cpp} |
Space | 5 | 0 | 3 | - | - | |
triplet | 5 | 0 | 2 | - | - | anonymous_namespace{tokenize.cpp} |
TemplateSimplifier | 4 | 17 | 0 | 0 | 0 | |
ThreadExecutor+MessageType | - | - | - | - | - | |
TestPreprocessor+OurPreprocessor | 4 | 1 | 0 | 0 | 1 | |
Scope+UsingInfo | 6 | 0 | 2 | - | - | |
Library+Platform | 6 | 0 | 1 | - | - | |
Library+ExportedFunctions | 9 | 0 | 2 | 0 | 0 | |
Library+Function | 5 | 0 | 10 | - | - | |
Library+CodeBlock | 13 | 0 | 4 | 0 | 0 | |
Library+ArgumentChecks | 5 | 0 | 10 | 0 | 0 | |
Library+Error | 7 | 0 | 2 | 0 | 0 | |
ItemDefinitionGroup | 6 | 1 | 3 | - | - | anonymous_namespace{importproject.cpp} |
Check | 17 | 2 | 4 | 0 | 0 | |
VarInfo | 11 | 0 | 4 | 0 | 0 | |
Preprocessor+HeaderTypes | - | - | - | - | - | |
MacroUsage | 6 | 0 | 3 | - | - | simplecpp |
DUI | 6 | 0 | 4 | - | - | simplecpp |
CheckUninitVar+Alloc | - | - | - | - | - | |
VariableValue | 6 | 0 | 2 | - | - | |
Filepointer | 4 | 0 | 5 | - | - | |
CheckIO+ArgumentInfo | 10 | 0 | 8 | 0 | 0 | |
Preprocessor | 23 | 3 | 8 | 0 | 0 | |
CmdLineParser | 12 | 3 | 7 | 0 | 0 | |
ThreadExecutor | 10 | 2 | 15 | 0 | 1 | |
CheckBufferOverrun+MyFileInfo | 7 | 0 | 2 | 0 | 1 | |
CheckBufferOverrun+ArrayInfo | 19 | 0 | 4 | 0 | 0 | |
Location | 7 | 0 | 2 | - | - | anonymous_namespace{checkunusedfunctions .cpp} |
CheckUnusedFunctions+FunctionUsage | 6 | 0 | 4 | 0 | 0 | |
CheckUnusedFunctions+FunctionDecl | 6 | 0 | 2 | 0 | 0 | |
CheckClass+Usage | 6 | 0 | 2 | - | - | |
VarInfo | 4 | 0 | 2 | - | - | anonymous_namespace{checkclass.cpp} |
Type+FriendInfo | 4 | 0 | 4 | - | - | |
CheckUnusedFunctions | 15 | 3 | 4 | 0 | 1 | |
Settings+Rule | 6 | 0 | 5 | 0 | 0 | |
AnalyzerInformation | 8 | 2 | 2 | 0 | 0 | |
CheckUninitVar+MyFileInfo | 4 | 0 | 2 | 0 | 1 | |
CheckUninitVar | 28 | 1 | 0 | 0 | 1 | |
CheckSizeof | 29 | 1 | 0 | 0 | 1 | |
CheckStl | 55 | 1 | 0 | 0 | 1 | |
CheckType | 22 | 1 | 0 | 0 | 1 | |
PathMatch | 7 | 1 | 3 | 0 | 0 | |
CheckVaarg | 17 | 1 | 0 | 0 | 1 | |
CheckUnusedVar | 21 | 1 | 2 | 0 | 1 | |
CheckMemoryLeakInClass | 15 | 1 | 0 | 0 | 1 | |
ProgramMemory | 14 | 0 | 1 | - | - | anonymous_namespace{valueflow.cpp} |
AST_state | 5 | 0 | 5 | - | - | |
CheckBufferOverrun | 48 | 3 | 1 | 0 | 1 | |
CheckBoost | 12 | 1 | 0 | 0 | 1 | |
CheckCondition | 35 | 1 | 0 | 0 | 1 | |
CheckClass | 64 | 9 | 1 | 0 | 1 | |
CheckAssert | 14 | 2 | 0 | 0 | 1 | |
Check64BitPortability | 16 | 1 | 0 | 0 | 1 | |
CheckBool | 31 | 1 | 0 | 0 | 1 | |
CheckAutoVariables | 24 | 8 | 0 | 0 | 1 | |
CheckOther | 99 | 3 | 0 | 0 | 1 | |
CheckMemoryLeakStructMember | 12 | 2 | 0 | 0 | 1 | |
CheckLeakAutoVar | 22 | 1 | 0 | 0 | 1 | |
CheckPostfixOperator | 12 | 1 | 0 | 0 | 1 | |
CheckMemoryLeakNoVar | 16 | 1 | 0 | 0 | 1 | |
CheckString | 26 | 1 | 0 | 0 | 1 | |
CheckFunctions | 21 | 1 | 0 | 0 | 1 | |
CheckIO | 38 | 3 | 0 | 0 | 1 | |
CheckExceptionSafety | 22 | 1 | 0 | 0 | 1 | |
XMLConstHandle | 18 | 0 | 1 | 0 | 0 | tinyxml2 |
XMLHandle | 18 | 0 | 1 | 0 | 0 | tinyxml2 |
XMLElement+AnonymousEnum | - | - | - | - | - | tinyxml2 |
TestCharVar | 11 | 0 | 1 | 0 | 2 | |
TestBufferOverrun | 146 | 0 | 1 | 0 | 2 | |
XMLPrinter+AnonymousEnum | - | - | - | - | - | tinyxml2 |
StrPair+AnonymousEnum | - | - | - | - | - | tinyxml2 |
CheckBufferOverrun+MyFileInfo+ArrayUsage | 3 | 0 | 3 | - | - | |
CheckBufferOverrun+MyFileInfo | 5 | 0 | 2 | 0 | 1 | |
XMLElement+AnonymousEnum | - | - | - | - | - | tinyxml2 |
XMLAttribute+AnonymousEnum | - | - | - | - | - | tinyxml2 |
XMLUtil | 0 | 22 | 0 | 0 | 0 | tinyxml2 |
TestGarbage | 187 | 0 | 1 | 0 | 2 | |
TestFileLister | 9 | 0 | 0 | 0 | 2 | |
TestExceptionSafety | 25 | 0 | 1 | 0 | 2 | |
TestLeakAutoVar | 70 | 0 | 1 | 0 | 2 | |
TestIO | 37 | 0 | 1 | 0 | 2 | |
TestIncompleteStatement | 26 | 0 | 1 | 0 | 2 | |
TestCondition | 40 | 0 | 2 | 0 | 2 | |
TestCmdlineParser | 103 | 0 | 2 | 0 | 2 | |
TestClass | 161 | 0 | 2 | 0 | 2 | |
TestErrorLogger | 30 | 0 | 2 | 0 | 2 | |
TestCppcheck | 10 | 0 | 0 | 0 | 2 | |
TestConstructors | 132 | 0 | 1 | 0 | 2 | |
Library+CodeBlock | 12 | 0 | 4 | 0 | 0 | |
Library+Function | 3 | 0 | 10 | - | - | |
Severity | 6 | 2 | 0 | 0 | 0 | |
IMAGEHLP_SYMBOL64_EXT | 3 | 0 | 1 | - | - | anonymous_namespace{cppcheckexecutor .cpp} |
make_container<Cont> | 5 | 0 | 1 | 0 | 0 | |
DUI | 3 | 0 | 4 | - | - | simplecpp |
TimerResultsData | 3 | 0 | 2 | - | - | |
MathLib+value | 12 | 1 | 4 | 0 | 0 | |
MathLib | 6 | 37 | 0 | 0 | 0 | |
Suppressions+FileMatcher | 9 | 1 | 2 | 0 | 0 | |
Settings+Rule | 6 | 0 | 5 | 0 | 0 | |
Timer | 5 | 0 | 5 | 0 | 0 | |
TestAssert | 12 | 0 | 1 | 0 | 2 | |
Test64BitPortability | 14 | 0 | 1 | 0 | 2 | |
IMAGEHLP_SYMBOL64_EXT | 3 | 0 | 1 | - | - | anonymous_namespace{cppcheckexecutor .cpp} |
TestBoost | 9 | 0 | 1 | 0 | 2 | |
TestBool | 31 | 0 | 1 | 0 | 2 | |
TestAutoVariables | 54 | 0 | 1 | 0 | 2 | |
Severity | 6 | 2 | 0 | 0 | 0 | |
Suppressions+FileMatcher | 9 | 1 | 2 | 0 | 0 | |
MathLib+value | 12 | 1 | 4 | 0 | 0 | |
Settings+Rule | 6 | 0 | 5 | 0 | 0 | |
Timer | 5 | 0 | 5 | 0 | 0 | |
Library+CodeBlock | 12 | 0 | 4 | 0 | 0 | |
TestTokenList | 12 | 0 | 1 | 0 | 2 | |
TestTokenizer | 369 | 0 | 4 | 0 | 2 | |
TestToken | 55 | 1 | 6 | 0 | 2 | |
TestUninitVar | 50 | 0 | 1 | 0 | 2 | |
CheckUninitVar+MyFileInfo | 4 | 0 | 2 | 0 | 1 | |
TestType | 15 | 0 | 0 | 0 | 2 | |
TestSuppressions | 25 | 0 | 0 | 0 | 2 | |
TestString | 20 | 0 | 1 | 0 | 2 | |
TestStl | 90 | 0 | 1 | 0 | 2 | |
TestTimer | 8 | 0 | 0 | 0 | 2 | |
TestThreadExecutor | 15 | 0 | 1 | 0 | 2 | |
TestSymbolDatabase | 202 | 2 | 7 | 0 | 2 | |
Macro | 24 | 0 | 8 | 0 | 0 | simplecpp |
TestVarID | 147 | 0 | 0 | 0 | 2 | |
TestValueFlow | 44 | 0 | 1 | 0 | 2 | |
LongFitsIntoSizeTMinusOne<false> | 0 | 1 | 0 | - | - | tinyxml2 |
XMLConstHandle | 18 | 0 | 1 | 0 | 0 | tinyxml2 |
XMLHandle | 18 | 0 | 1 | 0 | 0 | tinyxml2 |
TestUnusedFunctions | 30 | 0 | 1 | 0 | 2 | |
CheckUnusedFunctions+FunctionDecl | 6 | 0 | 2 | 0 | 0 | |
CheckUnusedFunctions+FunctionUsage | 6 | 0 | 4 | 0 | 0 | |
TestVaarg | 14 | 0 | 1 | 0 | 2 | |
TestUnusedVar | 142 | 0 | 1 | 0 | 2 | |
TestUnusedPrivateFunction | 38 | 0 | 1 | 0 | 2 | |
TestMemleakNoVar | 11 | 0 | 1 | 0 | 2 | |
TestMemleakStructMember | 28 | 0 | 1 | 0 | 2 | |
TestMemleakInClass | 38 | 0 | 1 | 0 | 2 | |
TestNullPointer | 59 | 0 | 1 | 0 | 2 | |
TestMemleakWindows | 11 | 0 | 1 | 0 | 2 | |
TestMemleakGLib | 10 | 0 | 1 | 0 | 2 | |
TestMathLib | 39 | 0 | 0 | 0 | 2 | |
TestLibrary | 30 | 0 | 1 | 0 | 2 | |
TestLeakAutoVarWindows | 9 | 0 | 1 | 0 | 2 | |
TestMemleakInFunction | 174 | 0 | 3 | 0 | 2 | |
TestMemleak | 10 | 0 | 1 | 0 | 2 | |
Scope+UsingInfo | 0 | 0 | 2 | - | - | |
TestSimplifyTemplate | 78 | 0 | 1 | 0 | 2 | |
TestSamples | 8 | 0 | 0 | 0 | 2 | |
TestPreprocessor | 151 | 0 | 2 | 0 | 2 | |
TestSizeof | 18 | 0 | 1 | 0 | 2 | |
TestSimplifyTypedef | 136 | 0 | 3 | 0 | 2 | |
TestSimplifyTokens | 118 | 0 | 4 | 0 | 2 | |
TestOther | 140 | 0 | 1 | 0 | 2 | |
TestOptions | 14 | 0 | 0 | 0 | 2 | |
TestFunctions | 32 | 0 | 1 | 0 | 2 | |
TestPostfixOperator | 17 | 0 | 1 | 0 | 2 | |
TestPathMatch | 34 | 0 | 4 | 0 | 2 | |
TestPath | 15 | 0 | 0 | 0 | 2 |
Types Metrics : Lack Of Cohesion Of Methods and Association Between Classes
Type Name | Lack Of Cohesion Of Methods | Lack Of Cohesion Of Methods HS | Association Between Classes | Type Namespace |
---|---|---|---|---|
Token | 0.97 | 0.97 | 66 | |
Settings | 0.99 | 1.12 | 10 | |
Token | 0.91 | 0.92 | 173 | |
Tokenizer | 0.99 | 1 | 5 | |
TestFixture | 0.83 | 0.87 | 57 | |
StrPair+AnonymousEnum | - | - | 0 | tinyxml2 |
ErrorLogger | 0 | 0 | 1 | |
XMLDocument | 0.98 | 1.01 | 6 | tinyxml2 |
StrPair | 0.69 | 0.74 | 2 | tinyxml2 |
XMLVisitor | 0 | 0 | 0 | tinyxml2 |
XMLNode | 0.97 | 0.99 | 1 | tinyxml2 |
Scope | 0.84 | 0.88 | 128 | |
XMLUtil | 0 | 0 | 15 | tinyxml2 |
Check | 0.88 | 0.93 | 9 | |
XMLNode | 0.82 | 0.83 | 21 | tinyxml2 |
Severity+SeverityType | - | - | 0 | |
Library | 0.99 | 1 | 21 | |
XMLError | - | - | 0 | tinyxml2 |
XMLDocument | 0.88 | 0.9 | 60 | tinyxml2 |
Severity+SeverityType | - | - | 0 | |
Variable | 0.88 | 0.9 | 66 | |
StrPair | 0 | 0 | 22 | tinyxml2 |
StrPair+AnonymousEnum | - | - | 0 | tinyxml2 |
Library+ErrorCode | - | - | 0 | |
XMLElement | 0.85 | 0.86 | 78 | tinyxml2 |
Settings | 0.92 | 1.03 | 39 | |
XMLDeclaration | 0 | 0 | 1 | tinyxml2 |
XMLText | 0.67 | 0.73 | 2 | tinyxml2 |
XMLUnknown | 0 | 0 | 1 | tinyxml2 |
XMLElement | 0.99 | 1 | 18 | tinyxml2 |
Scope | 0.99 | 1.03 | 29 | |
XMLVisitor | 0 | 0 | 0 | tinyxml2 |
Platform+PlatformType | - | - | 0 | cppcheck |
ErrorLogger+ErrorMessage | 0.99 | 1.05 | 1 | |
TokenList | 0.94 | 0.97 | 1 | |
XMLComment | 0 | 0 | 1 | tinyxml2 |
XMLError | - | - | 0 | tinyxml2 |
XMLAttribute | 0.97 | 1.01 | 0 | tinyxml2 |
Type | 0.71 | 0.78 | 45 | |
XMLText | 0.67 | 0.73 | 21 | tinyxml2 |
Platform | 0.98 | 1.09 | 5 | cppcheck |
Tokenizer | 0.85 | 0.85 | 370 | |
MemPool | 0 | 0 | 0 | tinyxml2 |
Function | 0.95 | 0.97 | 102 | |
ErrorLogger | 0 | 0 | 30 | |
MemPoolT<ITEM_SIZE>+Item | 0 | 0 | 0 | tinyxml2 |
MemPoolT<ITEM_SIZE>+Item | 0 | 0 | 0 | tinyxml2 |
SymbolDatabase | 0.77 | 0.79 | 422 | |
Token | 0.97 | 0.97 | 66 | |
XMLDeclaration | 0 | 0 | 14 | tinyxml2 |
XMLUnknown | 0 | 0 | 14 | tinyxml2 |
Location | 0.17 | 0.2 | 8 | simplecpp |
MemPool | 0 | 0 | 0 | tinyxml2 |
Value+MoveKind | - | - | 0 | ValueFlow |
Library+Error | 0.33 | 0.5 | 1 | |
Severity+SeverityType | - | - | 0 | |
Check | 0.83 | 0.88 | 24 | |
VarInfo+AllocStatus | - | - | 0 | |
ErrorLogger+ErrorMessage+FileLocation | 0.75 | 0.9 | 1 | |
Library+ArgumentChecks+MinSize+Type | - | - | 0 | |
Value | 0.69 | 0.75 | 9 | ValueFlow |
Type | 0.85 | 0.93 | 5 | |
Check+FileInfo | 0 | 0 | 2 | |
Variables | 0.78 | 0.82 | 44 | |
Library+ArgumentChecks+MinSize+Type | - | - | 0 | |
Suppressions+SuppressionEntry | 0 | 0 | 1 | |
VarInfo+AllocStatus | - | - | 0 | |
Library | 0.95 | 0.97 | 242 | |
Library+ArgumentChecks+MinSize+Type | - | - | 0 | |
Scope+ScopeType | - | - | 0 | |
XMLComment | 0 | 0 | 14 | tinyxml2 |
MathLib | 0 | 0 | 58 | |
XMLAttribute | 0.88 | 0.91 | 22 | tinyxml2 |
AccessControl | - | - | 0 | |
SHOWTIME_MODES | - | - | 0 | |
InternalError | 0 | 0 | 4 | |
InternalError | 1 | 0 | 1 | |
Settings | 0.99 | 1.12 | 10 | |
options | 0.61 | 0.73 | 8 | |
Entity | 0 | 0 | 0 | tinyxml2 |
Location | 0.29 | 0.35 | 4 | simplecpp |
Library+Container+Yield | - | - | 0 | |
ValueType | 0.05 | 0.06 | 63 | |
Check+FileInfo | 0 | 0 | 2 | |
Token+Type | - | - | 0 | |
Library+Container+Action | - | - | 0 | |
Location | 0.29 | 0.35 | 4 | simplecpp |
Suppressions | 1 | 1.17 | 1 | |
Path | 0 | 0 | 63 | |
Value | 0.69 | 0.75 | 9 | ValueFlow |
StrPair+AnonymousEnum | - | - | 0 | tinyxml2 |
Token+Type | - | - | 0 | |
AccessControl | - | - | 0 | |
CWE | 0 | 0 | 0 | |
Library+Container+Yield | - | - | 0 | |
Library+Container+Action | - | - | 0 | |
Platform+PlatformType | - | - | 0 | cppcheck |
Value+ValueType | - | - | 0 | ValueFlow |
Value+MoveKind | - | - | 0 | ValueFlow |
Token+AnonymousEnum | - | - | 0 | |
Token+Anonymous | 0 | 0 | 0 | |
TimerResults | 1 | 1.5 | 2 | |
ImportProject | 1 | 1.17 | 0 | |
ErrorLogger+ErrorMessage | 0.99 | 1.05 | 1 | |
Library+Container+Yield | - | - | 0 | |
Library+Container+Action | - | - | 0 | |
Settings+Language | - | - | 0 | |
Value+ValueType | - | - | 0 | ValueFlow |
Function | 0.96 | 0.98 | 32 | |
Platform | 0.1 | 0.11 | 19 | cppcheck |
ErrorLogger+ErrorMessage | 0.47 | 0.5 | 105 | |
Library+ErrorCode | - | - | 0 | |
Library+ErrorCode | - | - | 0 | |
TokenList | 0.71 | 0.74 | 108 | |
Library+ArgumentChecks+IteratorInfo | 0 | 0 | 0 | |
Variable | 0.92 | 0.94 | 35 | |
XMLElement+AnonymousEnum | - | - | 0 | tinyxml2 |
SymbolDatabase | 1 | 1.02 | 3 | |
TimerResultsIntf | 0 | 0 | 0 | |
TokenList | 0.94 | 0.97 | 1 | |
TimerResultsData | 0.25 | 0.5 | 1 | |
Value+ValueKind | - | - | 0 | ValueFlow |
Whitespace | - | - | 0 | tinyxml2 |
Type+BaseInfo | 0.5 | 1 | 1 | |
CheckMemoryLeak | 0.95 | 1 | 0 | |
Path | 0 | 0 | 1 | |
InternalError+Type | - | - | 0 | |
Platform+PlatformType | - | - | 0 | cppcheck |
TimerResultsIntf | 0 | 0 | 0 | |
MemPoolT<ITEM_SIZE> | 0.5 | 0.55 | 3 | tinyxml2 |
ErrorLogger+ErrorMessage+FileLocation | 0.75 | 0.9 | 1 | |
DynArray<T,INITIAL_SIZE> | 0.53 | 0.56 | 0 | tinyxml2 |
Value+MoveKind | - | - | 0 | ValueFlow |
ErrorLogger | 0 | 0 | 1 | |
Function+Type | - | - | 0 | |
Library+ArgumentChecks+IteratorInfo | 0 | 0 | 0 | |
Value+ValueKind | - | - | 0 | ValueFlow |
ValueType+Type | - | - | 0 | |
XMLPrinter | 0.99 | 1.02 | 5 | tinyxml2 |
Whitespace | - | - | 0 | tinyxml2 |
MemPoolT<ITEM_SIZE> | 0.5 | 0.55 | 3 | tinyxml2 |
Library+ArgumentChecks+IteratorInfo | 0 | 0 | 0 | |
Suppressions+SuppressionEntry | 0 | 0 | 1 | |
PathMatch | 1 | 1.5 | 0 | |
Library+Container | 0.74 | 1.11 | 9 | |
Filepointer+Operation | - | - | 0 | |
OpenMode | - | - | 0 | |
Filepointer+AppendMode | - | - | 0 | |
DynArray<T,INITIAL_SIZE> | 0.53 | 0.56 | 0 | tinyxml2 |
ImportProject+FileSettings | 0.94 | 1.42 | 1 | |
Library+Container | 0.74 | 1.11 | 9 | |
SHOWTIME_MODES | - | - | 0 | |
Macro+Error | 0 | 0 | 2 | simplecpp |
InternalError+Type | - | - | 0 | |
ErrorLogger+ErrorMessage+FileLocation | 0.25 | 0.3 | 14 | |
ImportProject+FileSettings | 0.94 | 1.42 | 1 | |
Variables+VariableType | - | - | 0 | |
CheckMemoryLeak+AllocType | - | - | 0 | |
TestRegistry | 0.33 | 0.5 | 2 | |
SHOWTIME_MODES | - | - | 0 | |
Output | 0.33 | 0 | 2 | simplecpp |
XMLAttribute+AnonymousEnum | - | - | 0 | tinyxml2 |
Enumerator | 0 | 0 | 0 | |
CheckClass | 0.99 | 1 | 6 | |
Library+PlatformType | 0.38 | 0.57 | 1 | |
ValueType+Sign | - | - | 0 | |
Value+ValueType | - | - | 0 | ValueFlow |
Value+ValueKind | - | - | 0 | ValueFlow |
MemPoolT<ITEM_SIZE>+Block | 0 | 0 | 0 | tinyxml2 |
MemPoolT<ITEM_SIZE>+AnonymousEnum | - | - | 0 | tinyxml2 |
MemPoolT<ITEM_SIZE>+AnonymousEnum | - | - | 0 | tinyxml2 |
MemPoolT<ITEM_SIZE>+Block | 0 | 0 | 0 | tinyxml2 |
CWE | 0 | 0 | 0 | |
CppCheck | 0.99 | 1.03 | 2 | |
Library+ArgumentChecks | 0.2 | 0 | 1 | |
Type+NeedInitialization | - | - | 0 | |
Output+Type | - | - | 0 | simplecpp |
Preprocessor | 0.98 | 1.03 | 2 | |
MathLib+value+AnonymousEnum | - | - | 0 | |
MathLib+value+AnonymousEnum | - | - | 0 | |
Library+PlatformType | 0.38 | 0.57 | 1 | |
CWE | 0 | 0 | 0 | |
CheckOther | 0 | 0 | 8 | |
Library+AllocFunc | 0 | 0 | 0 | |
CheckMemoryLeak+AllocType | - | - | 0 | |
XMLPrinter | 0.84 | 0.86 | 39 | tinyxml2 |
XMLElement+AnonymousEnum | - | - | 0 | tinyxml2 |
Dimension | 0 | 0 | 0 | |
CheckMemoryLeak | 0.8 | 0.84 | 83 | |
InternalError+Type | - | - | 0 | |
Library+WarnInfo | 0 | 0 | 0 | |
make_container<Cont> | 0 | 0 | 0 | |
Token+AnonymousEnum | - | - | 0 | |
Token+Anonymous | 0 | 0 | 0 | |
Output+Type | - | - | 0 | simplecpp |
TimerResultsIntf | 0 | 0 | 0 | |
Suppressions+SuppressionEntry | 0 | 0 | 1 | |
Preprocessor | 0.73 | 0.77 | 168 | |
Scope+ScopeType | - | - | 0 | |
LongFitsIntoSizeTMinusOne<> | 0 | 0 | 1 | tinyxml2 |
Output+Type | - | - | 0 | simplecpp |
Library+PodType | 0 | 0 | 0 | |
ImportProject | 1 | 1.17 | 0 | |
Suppressions | 1 | 1.17 | 1 | |
Settings+Language | - | - | 0 | |
TokenList | 0.88 | 0.91 | 3 | simplecpp |
CheckLeakAutoVar | 0 | 0 | 5 | |
Library+PodType | 0 | 0 | 0 | |
CheckMemoryLeakInFunction | 0.71 | 0.77 | 16 | |
Suppressions | 0.29 | 0.33 | 57 | |
Library+Container+Function | 0 | 0 | 0 | |
Tokenizer | 0.99 | 1 | 5 | |
Output | 0.33 | 0 | 2 | simplecpp |
Variable+AnonymousEnum | - | - | 0 | |
InternalError | 1 | 0 | 1 | |
CheckMemoryLeakInFunction | 0.57 | 0.62 | 149 | |
Type+NeedInitialization | - | - | 0 | |
Type+BaseInfo | 0.5 | 1 | 1 | |
FileLister | 0 | 0 | 33 | |
Path | 0 | 0 | 1 | |
Library+ArgumentChecks+MinSize | 0 | 0 | 0 | |
Platform | 0.98 | 1.09 | 5 | cppcheck |
Enumerator | 0 | 0 | 0 | |
Library+Platform | 0 | 0 | 5 | |
Function+Type | - | - | 0 | |
Severity | 0 | 0 | 15 | |
Library+PlatformType | 0.38 | 0.57 | 1 | |
Library+Function | 0.1 | 0 | 0 | |
AnalyzerInformation | 1 | 1.17 | 0 | |
Value | 0.69 | 0.75 | 9 | ValueFlow |
Token+Type | - | - | 0 | |
Token+AnonymousEnum | - | - | 0 | |
Token+Anonymous | 0 | 0 | 0 | |
CheckMemoryLeakStructMember | 0 | 0 | 7 | |
CheckMemoryLeakInClass | 0 | 0 | 8 | |
ImportProject | 0.14 | 0.17 | 101 | |
ProjectConfiguration | 0 | 0 | 7 | anonymous_namespace{importproject.cpp} |
ValueType+Type | - | - | 0 | |
PathMatch | 1 | 1.5 | 0 | |
CheckMemoryLeakNoVar | 0 | 0 | 7 | |
Library+ExportedFunctions | 0.5 | 0.67 | 4 | |
ThreadExecutor | 0.74 | 0.81 | 72 | |
Function+AnonymousEnum | - | - | 0 | |
Settings+Language | - | - | 0 | |
Token | 0.6 | 0.66 | 16 | simplecpp |
AnalyzerInformation | 1 | 1.17 | 0 | |
MacroUsage | 0.33 | 0 | 1 | simplecpp |
Library | 0.99 | 1 | 21 | |
CppCheckExecutor | 0.73 | 0.79 | 154 | |
Token | 0.71 | 0.78 | 9 | simplecpp |
Variables+ScopeGuard | 0.38 | 0.5 | 2 | |
Variables+VariableUsage | 0.48 | 0.72 | 5 | |
make_container<Cont> | 0 | 0 | 0 | |
Dimension | 0 | 0 | 0 | |
ValueType | 0.47 | 0.51 | 7 | |
CheckAssert | 0 | 0 | 5 | |
CheckExceptionSafety | 0 | 0 | 21 | |
CheckVaarg | 0 | 0 | 5 | |
CheckPostfixOperator | 0 | 0 | 6 | |
Check64BitPortability | 0 | 0 | 6 | |
MathLib | 0 | 0 | 3 | |
CheckSizeof | 0 | 0 | 5 | |
CheckBool | 0 | 0 | 5 | |
CheckString | 0 | 0 | 5 | |
CheckBoost | 0 | 0 | 6 | |
ValueType+Sign | - | - | 0 | |
Token | 0.71 | 0.78 | 9 | simplecpp |
TimerResults | 1 | 1.5 | 2 | |
ImportProject+FileSettings | 0.83 | 1.25 | 33 | |
VarInfo+AllocInfo | 0 | 0 | 1 | |
Library+Container+Function | 0 | 0 | 0 | |
CheckUnusedVar | 1 | 1.06 | 6 | |
MathLib+value+AnonymousEnum | - | - | 0 | |
Output | 0.33 | 0 | 2 | simplecpp |
CheckUninitVar+Alloc | - | - | 0 | |
CheckIO+ArgumentInfo | 1 | 1.11 | 0 | |
Function+AnonymousEnum | - | - | 0 | |
XMLPrinter+AnonymousEnum | - | - | 0 | tinyxml2 |
TokenList | 0.67 | 0.69 | 112 | simplecpp |
CheckBufferOverrun+MyFileInfo+ArrayUsage | 0 | 0 | 0 | |
CheckCondition | 0 | 0 | 6 | |
Variable+AnonymousEnum | - | - | 0 | |
CheckClass+Usage | 0 | 0 | 0 | |
VarInfo+AllocInfo | 0 | 0 | 1 | |
VarInfo | 0.4 | 0.5 | 4 | |
MathLib+value | 0.02 | 0.03 | 33 | |
CheckType | 0 | 0 | 11 | |
CheckUnusedFunctions | 1 | 1.08 | 6 | |
CheckAutoVariables | 0 | 0 | 5 | |
Preprocessor+HeaderTypes | - | - | 0 | |
Directive | 1 | 0 | 0 | |
CmdLineParser | 0.65 | 0.71 | 134 | |
Library+Container+Function | 0 | 0 | 0 | |
Check+FileInfo | 0 | 0 | 2 | |
CheckNullPointer | 0 | 0 | 103 | |
TestCppcheck+ErrorLogger2 | 0.5 | 1 | 4 | |
TemplateSimplifier | 0 | 0 | 0 | |
CheckIO | 0 | 0 | 5 | |
CheckUninitVar | 0 | 0 | 7 | |
Library+WarnInfo | 0 | 0 | 0 | |
CppCheckExecutor | 0.73 | 0.79 | 154 | |
MacroUsage | 0.33 | 0 | 1 | simplecpp |
TokenList | 0.88 | 0.91 | 3 | simplecpp |
Library+Error | 0.33 | 0.5 | 1 | |
Preprocessor+HeaderTypes | - | - | 0 | |
Directive | 1 | 0 | 0 | |
CheckBufferOverrun | 0.96 | 0.98 | 13 | |
CheckStl | 0 | 0 | 6 | |
CheckBufferOverrun+ArrayInfo | 0.84 | 0.9 | 3 | |
Library+AllocFunc | 0 | 0 | 0 | |
DUI | 0 | 0 | 0 | simplecpp |
CppCheck | 0.99 | 1.03 | 2 | |
CheckFunctions | 0 | 0 | 19 | |
Library+ArgumentChecks+MinSize | 0 | 0 | 0 | |
Timer | 0.35 | 0.47 | 12 | |
TimerResults | 0.33 | 0.5 | 31 | |
CheckNullPointer | 0 | 0 | 5 | |
Type+FriendInfo | 0.25 | 0 | 0 | |
TimerResultsData | 0.25 | 0.5 | 1 | |
FileLister | 0 | 0 | 33 | |
Suppressions+FileMatcher | 0.5 | 0.67 | 31 | |
Directive | -0.33 | 0 | 3 | |
Macro+invalidHashHash | 0 | 0 | 6 | simplecpp |
Macro+wrongNumberOfParameters | 0 | 0 | 6 | simplecpp |
Library+WarnInfo | 0 | 0 | 0 | |
Library+Platform | 0 | 0 | 5 | |
Library+ArgumentChecks+MinSize | 0 | 0 | 0 | |
Library+Container | 0.74 | 1.11 | 9 | |
Library+ArgumentChecks | 0.2 | 0 | 1 | |
Library+AllocFunc | 0 | 0 | 0 | |
Library+ExportedFunctions | 0.5 | 0.67 | 4 | |
Library+PodType | 0 | 0 | 0 | |
CppCheck | 0.79 | 0.82 | 202 | |
ThreadExecutor+MessageType | - | - | 0 | |
VarIdScopeInfo | 0 | 0 | 0 | anonymous_namespace{tokenize.cpp} |
Space | 0.33 | 0 | 0 | |
triplet | 0 | 0 | 1 | anonymous_namespace{tokenize.cpp} |
TemplateSimplifier | 0 | 0 | 160 | |
ThreadExecutor+MessageType | - | - | 0 | |
TestPreprocessor+OurPreprocessor | 0 | 0 | 19 | |
Scope+UsingInfo | 0 | 0 | 0 | |
Library+Platform | 0 | 0 | 5 | |
Library+ExportedFunctions | 0.5 | 0.67 | 4 | |
Library+Function | 0.1 | 0 | 0 | |
Library+CodeBlock | 0.72 | 0.81 | 6 | |
Library+ArgumentChecks | 0.2 | 0 | 1 | |
Library+Error | 0.33 | 0.5 | 1 | |
ItemDefinitionGroup | 0.44 | 0.67 | 37 | anonymous_namespace{importproject.cpp} |
Check | 0.88 | 0.93 | 9 | |
VarInfo | 0.1 | 0.12 | 30 | |
Preprocessor+HeaderTypes | - | - | 0 | |
MacroUsage | 0.33 | 0 | 1 | simplecpp |
DUI | 0 | 0 | 0 | simplecpp |
CheckUninitVar+Alloc | - | - | 0 | |
VariableValue | 0 | 0 | 0 | |
Filepointer | 0 | 0 | 3 | |
CheckIO+ArgumentInfo | -0.02 | -0.03 | 84 | |
Preprocessor | 0.98 | 1.03 | 2 | |
CmdLineParser | 0.65 | 0.71 | 134 | |
ThreadExecutor | 0.74 | 0.81 | 72 | |
CheckBufferOverrun+MyFileInfo | 0 | 0 | 21 | |
CheckBufferOverrun+ArrayInfo | 0.48 | 0.52 | 20 | |
Location | 0.25 | 0.5 | 1 | anonymous_namespace{checkunusedfunctions .cpp} |
CheckUnusedFunctions+FunctionUsage | 0.25 | 0 | 0 | |
CheckUnusedFunctions+FunctionDecl | 0 | 0 | 4 | |
CheckClass+Usage | 0 | 0 | 0 | |
VarInfo | 0 | 0 | 0 | anonymous_namespace{checkclass.cpp} |
Type+FriendInfo | 0.25 | 0 | 0 | |
CheckUnusedFunctions | 0.85 | 0.92 | 147 | |
Settings+Rule | 0.4 | 0 | 2 | |
AnalyzerInformation | 0.57 | 0.67 | 55 | |
CheckUninitVar+MyFileInfo | 0 | 0 | 1 | |
CheckUninitVar | 0 | 0 | 153 | |
CheckSizeof | 0 | 0 | 57 | |
CheckStl | 0 | 0 | 190 | |
CheckType | 0 | 0 | 106 | |
PathMatch | 0.11 | 0.17 | 33 | |
CheckVaarg | 0 | 0 | 63 | |
CheckUnusedVar | 0.94 | 1 | 182 | |
CheckMemoryLeakInClass | 0 | 0 | 74 | |
ProgramMemory | 0 | 0 | 18 | anonymous_namespace{valueflow.cpp} |
AST_state | 0.2 | 0 | 0 | |
CheckBufferOverrun | 0.74 | 0.76 | 245 | |
CheckBoost | 0 | 0 | 25 | |
CheckCondition | 0 | 0 | 151 | |
CheckClass | 0.74 | 0.75 | 247 | |
CheckAssert | 0 | 0 | 47 | |
Check64BitPortability | 0 | 0 | 43 | |
CheckBool | 0 | 0 | 72 | |
CheckAutoVariables | 0 | 0 | 85 | |
CheckOther | 0 | 0 | 276 | |
CheckMemoryLeakStructMember | 0 | 0 | 50 | |
CheckLeakAutoVar | 0 | 0 | 130 | |
CheckPostfixOperator | 0 | 0 | 30 | |
CheckMemoryLeakNoVar | 0 | 0 | 53 | |
CheckString | 0 | 0 | 73 | |
CheckFunctions | 0 | 0 | 101 | |
CheckIO | 0 | 0 | 179 | |
CheckExceptionSafety | 0 | 0 | 70 | |
XMLConstHandle | -0.24 | -0.25 | 12 | tinyxml2 |
XMLHandle | -0.24 | -0.25 | 12 | tinyxml2 |
XMLElement+AnonymousEnum | - | - | 0 | tinyxml2 |
TestCharVar | 0.67 | 0.8 | 18 | |
TestBufferOverrun | 0.98 | 0.99 | 45 | |
XMLPrinter+AnonymousEnum | - | - | 0 | tinyxml2 |
StrPair+AnonymousEnum | - | - | 0 | tinyxml2 |
CheckBufferOverrun+MyFileInfo+ArrayUsage | 0 | 0 | 0 | |
CheckBufferOverrun+MyFileInfo | 1 | 0 | 1 | |
XMLElement+AnonymousEnum | - | - | 0 | tinyxml2 |
XMLAttribute+AnonymousEnum | - | - | 0 | tinyxml2 |
XMLUtil | 0 | 0 | 6 | tinyxml2 |
TestGarbage | 0.97 | 0.98 | 38 | |
TestFileLister | 0 | 0 | 28 | |
TestExceptionSafety | 0.9 | 0.95 | 17 | |
TestLeakAutoVar | 0.97 | 0.98 | 24 | |
TestIO | 0.94 | 0.97 | 34 | |
TestIncompleteStatement | 0.9 | 0.95 | 17 | |
TestCondition | 0.94 | 0.97 | 25 | |
TestCmdlineParser | 0.18 | 0.19 | 79 | |
TestClass | 0.95 | 0.96 | 40 | |
TestErrorLogger | 0.56 | 0.58 | 56 | |
TestCppcheck | 0 | 0 | 34 | |
TestConstructors | 0.98 | 0.99 | 19 | |
Library+CodeBlock | 0.72 | 0.81 | 6 | |
Library+Function | 0.1 | 0 | 0 | |
Severity | 0 | 0 | 15 | |
IMAGEHLP_SYMBOL64_EXT | 0 | 0 | 1 | anonymous_namespace{cppcheckexecutor .cpp} |
make_container<Cont> | 0 | 0 | 0 | |
DUI | 0 | 0 | 0 | simplecpp |
TimerResultsData | 0.25 | 0.5 | 1 | |
MathLib+value | 0.91 | 1 | 2 | |
MathLib | 0 | 0 | 3 | |
Suppressions+FileMatcher | 1 | 1.33 | 0 | |
Settings+Rule | 0.4 | 0 | 2 | |
Timer | 1 | 1.33 | 0 | |
TestAssert | 0.71 | 0.83 | 16 | |
Test64BitPortability | 0.78 | 0.88 | 16 | |
IMAGEHLP_SYMBOL64_EXT | 0 | 0 | 1 | anonymous_namespace{cppcheckexecutor .cpp} |
TestBoost | 0.5 | 0.67 | 17 | |
TestBool | 0.92 | 0.96 | 21 | |
TestAutoVariables | 0.96 | 0.98 | 26 | |
Severity | 0 | 0 | 15 | |
Suppressions+FileMatcher | 1 | 1.33 | 0 | |
MathLib+value | 0.91 | 1 | 2 | |
Settings+Rule | 0.4 | 0 | 2 | |
Timer | 1 | 1.33 | 0 | |
Library+CodeBlock | 0.72 | 0.81 | 6 | |
TestTokenList | 0.29 | 0.33 | 27 | |
TestTokenizer | 0.99 | 0.99 | 116 | |
TestToken | 0.83 | 0.85 | 86 | |
TestUninitVar | 0.91 | 0.93 | 32 | |
CheckUninitVar+MyFileInfo | 0 | 0 | 1 | |
TestType | 0 | 0 | 28 | |
TestSuppressions | 0 | 0 | 57 | |
TestString | 0.87 | 0.93 | 19 | |
TestStl | 0.98 | 0.99 | 32 | |
TestTimer | 0 | 0 | 10 | |
TestThreadExecutor | 0.8 | 0.89 | 31 | |
TestSymbolDatabase | 0.81 | 0.82 | 233 | |
Macro | 0.68 | 0.71 | 86 | simplecpp |
TestVarID | 0 | 0 | 33 | |
TestValueFlow | 0.77 | 0.79 | 64 | |
LongFitsIntoSizeTMinusOne<false> | 0 | 0 | 0 | tinyxml2 |
XMLConstHandle | -0.24 | -0.25 | 12 | tinyxml2 |
XMLHandle | -0.24 | -0.25 | 12 | tinyxml2 |
TestUnusedFunctions | 0.88 | 0.92 | 24 | |
CheckUnusedFunctions+FunctionDecl | 1 | 0 | 0 | |
CheckUnusedFunctions+FunctionUsage | 0.25 | 0 | 0 | |
TestVaarg | 0.78 | 0.88 | 16 | |
TestUnusedVar | 0.98 | 0.99 | 23 | |
TestUnusedPrivateFunction | 0.94 | 0.97 | 21 | |
TestMemleakNoVar | 0.67 | 0.8 | 26 | |
TestMemleakStructMember | 0.91 | 0.95 | 21 | |
TestMemleakInClass | 0.94 | 0.97 | 22 | |
TestNullPointer | 0.96 | 0.98 | 45 | |
TestMemleakWindows | 0.67 | 0.8 | 23 | |
TestMemleakGLib | 0.6 | 0.75 | 38 | |
TestMathLib | 0 | 0 | 53 | |
TestLibrary | 0.92 | 0.96 | 117 | |
TestLeakAutoVarWindows | 0.5 | 0.67 | 22 | |
TestMemleakInFunction | 0.98 | 0.99 | 76 | |
TestMemleak | 0.6 | 0.75 | 25 | |
Scope+UsingInfo | 0 | 0 | 0 | |
TestSimplifyTemplate | 0.93 | 0.94 | 31 | |
TestSamples | 0 | 0 | 42 | |
TestPreprocessor | 0.92 | 0.93 | 79 | |
TestSizeof | 0.85 | 0.92 | 17 | |
TestSimplifyTypedef | 0.99 | 0.99 | 30 | |
TestSimplifyTokens | 0.97 | 0.98 | 49 | |
TestOther | 0.98 | 0.99 | 58 | |
TestOptions | 0 | 0 | 9 | |
TestFunctions | 0.85 | 0.88 | 39 | |
TestPostfixOperator | 0.83 | 0.91 | 18 | |
TestPathMatch | 0.78 | 0.81 | 11 | |
TestPath | 0 | 0 | 20 |
Namespaces Metrics
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Namespaces | # lines of code | # IL instruction | # Types | # lines of comment | % Comment | % Coverage | Afferent Coupling | Efferent Coupling |
---|---|---|---|---|---|---|---|---|
cli::GlobalNamespace | 1198 | 16 | 64 | 0 | 0 | - | 1 | 6 |
cli::ValueFlow | 63 | 0 | 4 | 0 | 0 | - | 1 | 1 |
cli::cppcheck | 22 | 0 | 2 | 0 | 0 | - | 1 | 1 |
cli::simplecpp | 75 | 2 | 7 | 0 | 0 | - | 1 | 1 |
cli::anonymous_namespace{cppcheckexecuto r.cpp} | 137 | 1 | 1 | 0 | 0 | - | 0 | 1 |
cppcheck::GlobalNamespace | 29706 | 1156 | 131 | 0 | 0 | - | 29 | 11 |
cppcheck::simplecpp | 1283 | 45 | 11 | 0 | 0 | - | 2 | 2 |
cppcheck::anonymous_namespace{simplecpp .cpp} | 126 | 7 | 0 | 0 | 0 | - | 0 | 2 |
cppcheck::tinyxml2 | 1507 | 30 | 31 | 0 | 0 | - | 3 | 0 |
cppcheck::ValueFlow | 95 | 2 | 4 | 0 | 0 | - | 2 | 2 |
cppcheck::cppcheck | 185 | 2 | 2 | 0 | 0 | - | 1 | 2 |
cppcheck::anonymous_namespace{check64bit .cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checkasser t.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checkautov ariables.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checkbool .cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checkboost .cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checkbuffe roverrun.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checkclass .cpp} | 2 | 0 | 1 | 0 | 0 | - | 1 | 2 |
cppcheck::anonymous_namespace{checkcondi tion.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checkfunct ions.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checkstrin g.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checkexcep tionsafety.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checkio .cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 2 |
cppcheck::anonymous_namespace{checkleaka utovar.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checkmemor yleak.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 2 |
cppcheck::anonymous_namespace{checknullp ointer.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 2 |
cppcheck::anonymous_namespace{checkother .cpp} | 12 | 2 | 0 | 0 | 0 | - | 0 | 2 |
cppcheck::anonymous_namespace{checkpostf ixoperator.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checksizeo f.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checkstl .cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 2 |
cppcheck::anonymous_namespace{checktype .cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checkunini tvar.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checkunuse dfunctions.cpp} | 3 | 0 | 1 | 0 | 0 | - | 1 | 1 |
cppcheck::anonymous_namespace{checkunuse dvar.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{checkvaarg .cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{importproj ect.cpp} | 44 | 5 | 2 | 0 | 0 | - | 1 | 3 |
cppcheck::anonymous_namespace{settings .cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
cppcheck::anonymous_namespace{symboldata base.cpp} | 9 | 2 | 0 | 0 | 0 | - | 0 | 2 |
cppcheck::anonymous_namespace{timer.cpp} | 1 | 0 | 0 | 0 | 0 | - | 0 | 2 |
cppcheck::anonymous_namespace{tokenize .cpp} | 13 | 0 | 2 | 0 | 0 | - | 1 | 2 |
cppcheck::anonymous_namespace{valueflow .cpp} | 16 | 0 | 1 | 0 | 0 | - | 1 | 3 |
testrunner::GlobalNamespace | 28970 | 89 | 189 | 0 | 0 | - | 53 | 7 |
testrunner::cppcheck | 22 | 0 | 2 | 0 | 0 | - | 1 | 1 |
testrunner::ValueFlow | 63 | 0 | 4 | 0 | 0 | - | 1 | 1 |
testrunner::simplecpp | 75 | 2 | 7 | 0 | 0 | - | 1 | 1 |
testrunner::anonymous_namespace{cppcheck executor.cpp} | 137 | 1 | 1 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{test64bi t.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testasse rt.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testauto variables.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testbool .cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testboos t.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::tinyxml2 | 309 | 3 | 28 | 0 | 0 | - | 1 | 0 |
testrunner::anonymous_namespace{testbuff eroverrun.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testchar var.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testclas s.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testcmdl ineparser.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testcond ition.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testcons tructors.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testcppc heck.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testerro rlogger.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testexce ptionsafety.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testfile lister.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testgarb age.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testinco mpletestatement.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testio .cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testleak autovar.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testlibr ary.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testmath lib.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testmeml eak.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testnull pointer.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testfunc tions.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testopti ons.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testothe r.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testpath .cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testpath match.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testpost fixoperator.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testprep rocessor.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testsamp les.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testsimp lifytemplate.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testsimp lifytokens.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testsimp lifytypedef.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testsize of.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{teststl .cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{teststri ng.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testsupp ressions.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testsymb oldatabase.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testthre adexecutor.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testtime r.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testtoke n.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testtoke nize.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testtoke nlist.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testtype .cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testunin itvar.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testunus edfunctions.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testunus edprivfunc.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testunus edvar.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testvaar g.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testvalu eflow.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
testrunner::anonymous_namespace{testvari d.cpp} | 0 | 0 | 0 | 0 | 0 | - | 0 | 1 |
Project Rules | 812 |
Quality Gates | 812 |
|
Quality Gate Pass: Percentage Code Coverage |
Scalar Result: N/A %
Quality Gate Pass: Percentage Coverage on New Code |
Scalar Result: N/A %
Quality Gate Pass: Percentage Coverage on Refactored Code |
Scalar Result: N/A %
Quality Gate Pass: Blocker Issues |
No issue matched
Quality Gate Warn: Critical Issues |
5 issues matched
5 issues | Severity | Debt | Annual Interest | Full Name |
---|---|---|---|---|
Critical issue on: Tokenizer | Critical | 1d 2h | 2h 0min | Rule violated: Avoid types too big |
Critical issue on: TestTokenizer | Critical | 1d 2h | 2h 0min | Rule violated: Avoid types too big |
Critical issue on: TestSymbolDatabase | Critical | 1d 2h | 2h 0min | Rule violated: Avoid types too big |
Critical issue on: TestTokenizer | Critical | 1d 2h | 2h 0min | Rule violated: Avoid types with too many methods |
Critical issue on: Tokenizer.simplifyTypedef() | Critical | 6h 0min | 2h 0min | Rule violated: Avoid methods with too many local variables |
Statistics
Stat | Severity | Debt | Annual Interest |
---|---|---|---|
Sum: | - | 5d 6h | 1d 2h |
Average: | - | 1d 1h | 2h 0min |
Minimum: | - | 6h 0min | 2h 0min |
Maximum: | - | 1d 2h | 2h 0min |
Standard deviation: | - | 1h 36min | 0min 0s |
Variance: | - | 1 152d | 0min 0s |
Quality Gate Pass: New Blocker / Critical / High Issues |
No issue matched
Quality Gate Fail: Critical Rules Violated |
3 rules matched
3 rules | issues | Full Name |
---|---|---|
Avoid types too big | 66 issues | Rule |
Avoid methods too big, too complex | 433 issues | Rule |
Avoid methods with too many parameters | 32 issues | Rule |
Statistics
Stat | issues |
---|---|
Sum: | 531 |
Average: | 177 |
Minimum: | 32 |
Maximum: | 433 |
Standard deviation: | 181.55 |
Variance: | 32 961 |
Quality Gate Pass: Percentage Debt |
Scalar Result: 13.6 %
Quality Gate Pass: New Debt since Baseline |
Scalar Result: 0 man-days
Quality Gate Fail: Debt Rating per Namespace |
3 namespaces matched
3 namespaces | debtRating | debtRatio | devTimeInManDay | debtInManDay | issues | Full Name |
---|---|---|---|---|---|---|
cppcheck | D | 39.52 | 1d 0h | 3h 31min | 3 issues | cppcheck |
cppcheck | D | 39.52 | 1d 0h | 3h 31min | 3 issues | cppcheck |
tinyxml2 | D | 20.22 | 14d 7h | 3d 0h | 129 issues | tinyxml2 |
Statistics
Stat | debtRating | debtRatio | devTimeInManDay | debtInManDay | issues |
---|---|---|---|---|---|
Sum: | - | 99.26 | 17d 1h | 3d 7h | 135 |
Average: | - | 33.09 | 5d 5h | 1d 2h | 45 |
Minimum: | - | 20.22 | 1d 0h | 3h 31min | 3 |
Maximum: | - | 39.52 | 14d 7h | 3d 0h | 129 |
Standard deviation: | - | 9.1 | 6d 4h | 1d 1h | 59.4 |
Variance: | - | 82.82 | 1 232 632d | 42 944d | 3 528 |
Quality Gate Pass: New Annual Interest since Baseline |
Scalar Result: 0 man-days
Project Rules | 251213 |
Code Smells | 063 |
|
Critical Rule Violated: Avoid types too big |
• How to Fix Issues: Types with many lines of code should be split in a group of smaller types. To refactor a God Class you'll need patience, and you might even need to recreate everything from scratch. Here are a few refactoring advices: • The logic in the God Class must be splitted in smaller classes. These smaller classes can eventually become private classes nested in the original God Class, whose instances objects become composed of instances of smaller nested classes. • Smaller classes partitioning should be driven by the multiple responsibilities handled by the God Class. To identify these responsibilities it often helps to look for subsets of methods strongly coupled with subsets of fields. • If the God Class contains way more logic than states, a good option can be to define one or several static classes that contains no static field but only pure static methods. A pure static method is a function that computes a result only from inputs parameters, it doesn't read nor assign any static or instance field. The main advantage of pure static methods is that they are easily testable. • Try to maintain the interface of the God Class at first and delegate calls to the new extracted classes. In the end the God Class should be a pure facade without its own logic. Then you can keep it for convenience or throw it away and start to use the new classes only. • Unit Tests can help: write tests for each method before extracting it to ensure you don't break functionality. The estimated Debt, which means the effort to fix such issue, varies linearly from 1 hour for a 200 lines of code type, up to 10 hours for a type with 2.000 or more lines of code. In Debt and Interest computation, this rule takes account of the fact that static types with no mutable fields are just a collection of static methods that can be easily splitted and moved from one type to another.
66 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
66 types | locJustMyCode | Methods | Fields | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|
Tokenizer | 5 459 | 147 methods | 9 fields | 1d 2h | 2h 0min | Tokenizer |
TestTokenizer | 2 750 | 366 methods | 4 fields | 1d 2h | 2h 0min | TestTokenizer |
TestSymbolDatabase | 2 472 | 201 methods | 7 fields | 1d 2h | 2h 0min | TestSymbolDatabase |
SymbolDatabase | 1 704 | 46 methods | 9 fields | 1d 0h | 1h 40min | SymbolDatabase |
TestOther | 1 644 | 137 methods | 1 field | 1d 0h | 1h 36min | TestOther |
CheckOther | 1 496 | 98 methods | no field | 7h 28min | 1h 26min | CheckOther |
TestClass | 1 349 | 158 methods | 2 fields | 6h 44min | 1h 17min | TestClass |
CheckIO | 1 188 | 37 methods | no field | 5h 56min | 1h 6min | CheckIO |
TestSimplifyTokens | 1 179 | 115 methods | 4 fields | 5h 53min | 1h 6min | TestSimplifyTokens |
CheckClass | 1 102 | 69 methods | 1 field | 5h 30min | 1h 1min | CheckClass |
TestMemleakInFunction | 1 020 | 171 methods | 3 fields | 5h 6min | 55min | TestMemleakInFunction |
TestBufferOverrun | 1 009 | 143 methods | 1 field | 5h 2min | 55min | TestBufferOverrun |
CheckMemoryLeakInFunction | 1 006 | 15 methods | 1 field | 5h 1min | 54min | CheckMemoryLeakInFunction |
TestUnusedVar | 991 | 139 methods | 1 field | 4h 57min | 53min | TestUnusedVar |
TestIO | 975 | 34 methods | 1 field | 4h 52min | 52min | TestIO |
TestUninitVar | 944 | 47 methods | 1 field | 4h 43min | 50min | TestUninitVar |
Token | 933 | 158 methods | 18 fields | 4h 39min | 50min | Token |
CheckBufferOverrun | 924 | 47 methods | 1 field | 4h 37min | 49min | CheckBufferOverrun |
TestMathLib | 876 | 36 methods | no field | 4h 22min | 46min | TestMathLib |
CheckStl | 845 | 52 methods | no field | 4h 13min | 44min | CheckStl |
TestSimplifyTypedef | 822 | 133 methods | 3 fields | 4h 6min | 42min | TestSimplifyTypedef |
Library | 807 | 72 methods | 24 fields | 4h 2min | 41min | Library |
TemplateSimplifier | 802 | 19 methods | no field | 4h 0min | 41min | TemplateSimplifier |
TestValueFlow | 774 | 41 methods | 1 field | 3h 52min | 39min | TestValueFlow |
TestPreprocessor | 772 | 148 methods | 2 fields | 3h 51min | 39min | TestPreprocessor |
TestStl | 745 | 87 methods | 1 field | 3h 43min | 37min | TestStl |
CheckUninitVar | 656 | 25 methods | no field | 3h 16min | 31min | CheckUninitVar |
MathLib | 649 | 40 methods | no field | 3h 14min | 31min | MathLib |
TestNullPointer | 649 | 56 methods | 1 field | 3h 14min | 31min | TestNullPointer |
TestCmdlineParser | 627 | 100 methods | 2 fields | 3h 8min | 29min | TestCmdlineParser |
TestVarID | 602 | 144 methods | no field | 3h 0min | 28min | TestVarID |
TestConstructors | 600 | 129 methods | 1 field | 3h 0min | 28min | TestConstructors |
TestGarbage | 591 | 184 methods | 1 field | 2h 57min | 27min | TestGarbage |
TestToken | 583 | 53 methods | 6 fields | 2h 54min | 27min | TestToken |
TestCondition | 568 | 37 methods | 2 fields | 2h 50min | 26min | TestCondition |
CheckCondition | 532 | 32 methods | no field | 2h 39min | 23min | CheckCondition |
Scope | 459 | 26 methods | 21 fields | 2h 17min | 18min | Scope |
TokenList | 450 | 27 methods | 4 fields | 2h 15min | 18min | simplecpp.TokenList |
CheckUnusedVar | 430 | 18 methods | 2 fields | 2h 9min | 17min | CheckUnusedVar |
Macro | 400 | 20 methods | 8 fields | 2h 0min | 15min | simplecpp.Macro |
CmdLineParser | 393 | 12 methods | 7 fields | 1h 57min | 14min | CmdLineParser |
CmdLineParser | 393 | 12 methods | 7 fields | 1h 57min | 14min | CmdLineParser |
TestSimplifyTemplate | 346 | 75 methods | 1 field | 1h 43min | 11min | TestSimplifyTemplate |
CppCheck | 336 | 27 methods | 10 fields | 1h 40min | 10min | CppCheck |
TestLeakAutoVar | 328 | 67 methods | 1 field | 1h 38min | 10min | TestLeakAutoVar |
CheckLeakAutoVar | 320 | 19 methods | no field | 1h 36min | 9min | CheckLeakAutoVar |
TestLibrary | 318 | 27 methods | 1 field | 1h 35min | 9min | TestLibrary |
TestAutoVariables | 297 | 51 methods | 1 field | 1h 29min | 8min | TestAutoVariables |
CheckNullPointer | 294 | 19 methods | no field | 1h 28min | 8min | CheckNullPointer |
TestBool | 289 | 28 methods | 1 field | 1h 26min | 7min | TestBool |
XMLElement | 273 | 65 methods | 2 fields | 1h 21min | 6min | tinyxml2.XMLElement |
Function | 267 | 59 methods | 15 fields | 1h 20min | 6min | Function |
Preprocessor | 265 | 24 methods | 8 fields | 1h 19min | 6min | Preprocessor |
CheckIO+ArgumentInfo | 262 | 8 methods | 8 fields | 1h 18min | 6min | CheckIO+ArgumentInfo |
TokenList | 251 | 25 methods | 6 fields | 1h 15min | 5min | TokenList |
TestSizeof | 240 | 15 methods | 1 field | 1h 12min | 4min 37s | TestSizeof |
XMLDocument | 237 | 38 methods | 14 fields | 1h 11min | 4min 25s | tinyxml2.XMLDocument |
TestFunctions | 236 | 29 methods | 1 field | 1h 10min | 4min 21s | TestFunctions |
TestErrorLogger | 229 | 27 methods | 2 fields | 1h 8min | 3min 54s | TestErrorLogger |
ErrorLogger+ErrorMessage | 223 | 14 methods | 8 fields | 1h 6min | 3min 30s | ErrorLogger+ErrorMessage |
CheckBool | 223 | 28 methods | no field | 1h 6min | 3min 30s | CheckBool |
XMLNode | 218 | 54 methods | 10 fields | 1h 5min | 3min 10s | tinyxml2.XMLNode |
CppCheckExecutor | 214 | 15 methods | 6 fields | 1h 4min | 2min 55s | CppCheckExecutor |
CppCheckExecutor | 214 | 15 methods | 6 fields | 1h 4min | 2min 55s | CppCheckExecutor |
CheckAutoVariables | 212 | 28 methods | no field | 1h 3min | 2min 47s | CheckAutoVariables |
CheckUnusedFunctions | 202 | 14 methods | 4 fields | 1h 0min | 2min 7s | CheckUnusedFunctions |
Rule Violated: Avoid types with too many methods |
• How to Fix Issues: To refactor properly a God Class please read HowToFix advices from the default rule Types to Big. // The estimated Debt, which means the effort to fix such issue, varies linearly from 1 hour for a type with 20 methods, up to 10 hours for a type with 200 or more methods. In Debt and Interest computation, this rule takes account of the fact that static types with no mutable fields are just a collection of static methods that can be easily splitted and moved from one type to another.
100 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
100 types | nbMethods | instanceMethods | staticMethods | # lines of code (LOC) | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
TestTokenizer | 363 | 363 methods | no method | 2 750 | 1d 2h | 2h 0min | TestTokenizer |
TestSymbolDatabase | 198 | 196 methods | 2 methods | 2 472 | 1d 1h | 1h 58min | TestSymbolDatabase |
TestGarbage | 181 | 181 methods | no method | 591 | 1d 1h | 1h 47min | TestGarbage |
TestMemleakInFunction | 168 | 168 methods | no method | 1 020 | 1d 0h | 1h 39min | TestMemleakInFunction |
Token | 158 | 137 methods | 21 methods | 154 | 7h 54min | 1h 32min | Token |
Token | 158 | 137 methods | 21 methods | 933 | 7h 54min | 1h 32min | Token |
Token | 158 | 137 methods | 21 methods | 154 | 7h 54min | 1h 32min | Token |
TestClass | 155 | 155 methods | no method | 1 349 | 7h 45min | 1h 30min | TestClass |
Tokenizer | 147 | 135 methods | 12 methods | 10 | 7h 21min | 1h 25min | Tokenizer |
Tokenizer | 147 | 135 methods | 12 methods | 5 459 | 7h 21min | 1h 25min | Tokenizer |
Tokenizer | 147 | 135 methods | 12 methods | 10 | 7h 21min | 1h 25min | Tokenizer |
TestPreprocessor | 145 | 145 methods | no method | 772 | 7h 15min | 1h 23min | TestPreprocessor |
TestVarID | 141 | 141 methods | no method | 602 | 7h 3min | 1h 21min | TestVarID |
TestBufferOverrun | 140 | 140 methods | no method | 1 009 | 7h 0min | 1h 20min | TestBufferOverrun |
TestUnusedVar | 136 | 136 methods | no method | 991 | 6h 48min | 1h 18min | TestUnusedVar |
TestOther | 134 | 134 methods | no method | 1 644 | 6h 42min | 1h 16min | TestOther |
TestSimplifyTypedef | 130 | 130 methods | no method | 822 | 6h 30min | 1h 14min | TestSimplifyTypedef |
TestConstructors | 126 | 126 methods | no method | 600 | 6h 18min | 1h 11min | TestConstructors |
TestSimplifyTokens | 112 | 112 methods | no method | 1 179 | 5h 36min | 1h 2min | TestSimplifyTokens |
TestCmdlineParser | 97 | 97 methods | no method | 627 | 4h 51min | 52min | TestCmdlineParser |
CheckOther | 95 | 92 methods | 3 methods | 1 496 | 4h 45min | 51min | CheckOther |
CheckOther | 95 | 92 methods | 3 methods | 95 | 4h 45min | 51min | CheckOther |
TestStl | 84 | 84 methods | no method | 745 | 4h 12min | 43min | TestStl |
TestSimplifyTemplate | 72 | 72 methods | no method | 346 | 3h 36min | 36min | TestSimplifyTemplate |
Library | 69 | 64 methods | 5 methods | 49 | 3h 27min | 34min | Library |
Library | 69 | 64 methods | 5 methods | 807 | 3h 27min | 34min | Library |
Library | 69 | 64 methods | 5 methods | 49 | 3h 27min | 34min | Library |
CheckClass | 66 | 57 methods | 9 methods | 1 102 | 3h 18min | 32min | CheckClass |
CheckClass | 66 | 57 methods | 9 methods | 51 | 3h 18min | 32min | CheckClass |
XMLElement | 65 | 64 methods | 1 method | 273 | 3h 15min | 31min | tinyxml2.XMLElement |
XMLElement | 65 | 64 methods | 1 method | 51 | 3h 15min | 31min | tinyxml2.XMLElement |
TestLeakAutoVar | 64 | 64 methods | no method | 328 | 3h 12min | 30min | TestLeakAutoVar |
Function | 56 | 55 methods | 1 method | 267 | 2h 48min | 25min | Function |
Function | 56 | 55 methods | 1 method | 64 | 2h 48min | 25min | Function |
XMLNode | 54 | 53 methods | 1 method | 218 | 2h 42min | 24min | tinyxml2.XMLNode |
XMLNode | 54 | 53 methods | 1 method | 35 | 2h 42min | 24min | tinyxml2.XMLNode |
TestNullPointer | 53 | 53 methods | no method | 649 | 2h 39min | 23min | TestNullPointer |
TestToken | 50 | 49 methods | 1 method | 583 | 2h 30min | 21min | TestToken |
CheckStl | 49 | 48 methods | 1 method | 845 | 2h 27min | 21min | CheckStl |
CheckStl | 49 | 48 methods | 1 method | 48 | 2h 27min | 21min | CheckStl |
TestAutoVariables | 48 | 48 methods | no method | 297 | 2h 24min | 20min | TestAutoVariables |
Variable | 47 | 47 methods | no method | 167 | 2h 21min | 19min | Variable |
Variable | 47 | 47 methods | no method | 55 | 2h 21min | 19min | Variable |
SymbolDatabase | 45 | 44 methods | 1 method | 1 704 | 2h 15min | 18min | SymbolDatabase |
SymbolDatabase | 45 | 44 methods | 1 method | 4 | 2h 15min | 18min | SymbolDatabase |
CheckBufferOverrun | 44 | 41 methods | 3 methods | 924 | 2h 12min | 17min | CheckBufferOverrun |
CheckBufferOverrun | 44 | 41 methods | 3 methods | 34 | 2h 12min | 17min | CheckBufferOverrun |
TestUninitVar | 44 | 44 methods | no method | 944 | 2h 12min | 17min | TestUninitVar |
XMLDocument | 38 | 37 methods | 1 method | 237 | 1h 54min | 13min | tinyxml2.XMLDocument |
TestValueFlow | 38 | 38 methods | no method | 774 | 1h 54min | 13min | TestValueFlow |
XMLDocument | 38 | 37 methods | 1 method | 18 | 1h 54min | 13min | tinyxml2.XMLDocument |
MathLib | 37 | no method | 37 methods | 3 | 1h 51min | 13min | MathLib |
MathLib | 37 | no method | 37 methods | 649 | 1h 51min | 13min | MathLib |
MathLib | 37 | no method | 37 methods | 3 | 1h 51min | 13min | MathLib |
XMLPrinter | 36 | 36 methods | no method | 182 | 1h 48min | 12min | tinyxml2.XMLPrinter |
XMLPrinter | 36 | 36 methods | no method | 6 | 1h 48min | 12min | tinyxml2.XMLPrinter |
CheckIO | 34 | 31 methods | 3 methods | 1 188 | 1h 42min | 11min | CheckIO |
TestCondition | 34 | 34 methods | no method | 568 | 1h 42min | 11min | TestCondition |
CheckIO | 34 | 31 methods | 3 methods | 31 | 1h 42min | 11min | CheckIO |
TestMathLib | 33 | 33 methods | no method | 876 | 1h 39min | 10min | TestMathLib |
TestMemleakInClass | 32 | 32 methods | no method | 170 | 1h 36min | 9min | TestMemleakInClass |
TestUnusedPrivateFunction | 32 | 32 methods | no method | 131 | 1h 36min | 9min | TestUnusedPrivateFunction |
TestIO | 31 | 31 methods | no method | 975 | 1h 33min | 9min | TestIO |
CheckCondition | 29 | 28 methods | 1 method | 532 | 1h 27min | 7min | CheckCondition |
CheckCondition | 29 | 28 methods | 1 method | 27 | 1h 27min | 7min | CheckCondition |
TestPathMatch | 28 | 28 methods | no method | 78 | 1h 24min | 7min | TestPathMatch |
TokenList | 27 | 27 methods | no method | 27 | 1h 21min | 6min | simplecpp.TokenList |
TokenList | 27 | 27 methods | no method | 450 | 1h 21min | 6min | simplecpp.TokenList |
XMLAttribute | 27 | 27 methods | no method | 76 | 1h 21min | 6min | tinyxml2.XMLAttribute |
TokenList | 27 | 27 methods | no method | 27 | 1h 21min | 6min | simplecpp.TokenList |
XMLAttribute | 27 | 27 methods | no method | 22 | 1h 21min | 6min | tinyxml2.XMLAttribute |
CppCheck | 26 | 24 methods | 2 methods | 2 | 1h 18min | 5min | CppCheck |
CppCheck | 26 | 24 methods | 2 methods | 336 | 1h 18min | 5min | CppCheck |
CppCheck | 26 | 24 methods | 2 methods | 2 | 1h 18min | 5min | CppCheck |
TestFunctions | 26 | 26 methods | no method | 236 | 1h 18min | 5min | TestFunctions |
TokenList | 25 | 23 methods | 2 methods | 9 | 1h 15min | 5min | TokenList |
TokenList | 25 | 23 methods | 2 methods | 251 | 1h 15min | 5min | TokenList |
CheckAutoVariables | 25 | 17 methods | 8 methods | 212 | 1h 15min | 5min | CheckAutoVariables |
CheckBool | 25 | 24 methods | 1 method | 223 | 1h 15min | 5min | CheckBool |
TokenList | 25 | 23 methods | 2 methods | 9 | 1h 15min | 5min | TokenList |
CheckAutoVariables | 25 | 17 methods | 8 methods | 18 | 1h 15min | 5min | CheckAutoVariables |
CheckBool | 25 | 24 methods | 1 method | 23 | 1h 15min | 5min | CheckBool |
TestBool | 25 | 25 methods | no method | 289 | 1h 15min | 5min | TestBool |
TestErrorLogger | 24 | 24 methods | no method | 229 | 1h 12min | 4min 37s | TestErrorLogger |
TestLibrary | 24 | 24 methods | no method | 318 | 1h 12min | 4min 37s | TestLibrary |
TestUnusedFunctions | 24 | 24 methods | no method | 135 | 1h 12min | 4min 37s | TestUnusedFunctions |
Preprocessor | 23 | 20 methods | 3 methods | 2 | 1h 9min | 3min 58s | Preprocessor |
Scope | 23 | 23 methods | no method | 459 | 1h 9min | 3min 58s | Scope |
CheckSizeof | 23 | 22 methods | 1 method | 198 | 1h 9min | 3min 58s | CheckSizeof |
Preprocessor | 23 | 20 methods | 3 methods | 265 | 1h 9min | 3min 58s | Preprocessor |
Preprocessor | 23 | 20 methods | 3 methods | 2 | 1h 9min | 3min 58s | Preprocessor |
Scope | 23 | 23 methods | no method | 13 | 1h 9min | 3min 58s | Scope |
CheckSizeof | 23 | 22 methods | 1 method | 22 | 1h 9min | 3min 58s | CheckSizeof |
CheckUninitVar | 22 | 21 methods | 1 method | 656 | 1h 6min | 3min 18s | CheckUninitVar |
XMLUtil | 22 | no method | 22 methods | 160 | 1h 6min | 3min 18s | tinyxml2.XMLUtil |
TestMemleakStructMember | 22 | 22 methods | no method | 103 | 1h 6min | 3min 18s | TestMemleakStructMember |
CheckUninitVar | 22 | 21 methods | 1 method | 15 | 1h 6min | 3min 18s | CheckUninitVar |
XMLUtil | 22 | no method | 22 methods | 22 | 1h 6min | 3min 18s | tinyxml2.XMLUtil |
Variables | 21 | 21 methods | no method | 124 | 1h 3min | 2min 39s | Variables |
TestFixture | 21 | 20 methods | 1 method | 94 | 1h 3min | 2min 39s | TestFixture |
Rule Violated: Avoid types with too many fields |
• How to Fix Issues: To refactor such type and increase code quality and maintainability, certainly you'll have to group subsets of fields into smaller types and dispatch the logic implemented into the methods into these smaller types. More refactoring advices can be found in the default rule Types to Big, HowToFix section. The estimated Debt, which means the effort to fix such issue, varies linearly from 1 hour for a type with 15 fields, to up to 10 hours for a type with 200 or more fields.
14 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
14 types | instanceFields | staticFields | methodsAssigningFields | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|
Settings | 41 fields | no field | 22 methods | 2h 15min | 18min | Settings |
Settings | 41 fields | no field | 43 methods | 2h 15min | 18min | Settings |
Settings | 41 fields | no field | 108 methods | 2h 15min | 18min | Settings |
Library | 24 fields | no field | no method | 1h 26min | 7min | Library |
Library | 24 fields | no field | 2 methods | 1h 26min | 7min | Library |
Library | 24 fields | no field | no method | 1h 26min | 7min | Library |
Scope | 21 fields | no field | 115 methods | 1h 17min | 5min | Scope |
Scope | 21 fields | no field | 4 methods | 1h 17min | 5min | Scope |
Token | 18 fields | no field | 23 methods | 1h 8min | 3min 54s | Token |
Platform | 18 fields | no field | no method | 1h 8min | 3min 54s | cppcheck.Platform |
Token | 18 fields | no field | 78 methods | 1h 8min | 3min 54s | Token |
Platform | 18 fields | no field | 49 methods | 1h 8min | 3min 54s | cppcheck.Platform |
Token | 18 fields | no field | 23 methods | 1h 8min | 3min 54s | Token |
Platform | 18 fields | no field | 10 methods | 1h 8min | 3min 54s | cppcheck.Platform |
Critical Rule Violated: Avoid methods too big, too complex |
• How to Fix Issues: A large and complex method should be split in smaller methods, or even one or several classes can be created for that. During this process it is important to question the scope of each variable local to the method. This can be an indication if such local variable will become an instance field of the newly created class(es). Large switch…case structures might be refactored through the help of a set of types that implement a common interface, the interface polymorphism playing the role of the switch cases tests. Unit Tests can help: write tests for each method before extracting it to ensure you don't break functionality. The estimated Debt, which means the effort to fix such issue, varies from 40 minutes to 8 hours, linearly from a weighted complexity score.
433 methods matched
- The following list of methods is truncated and contains only the first 100 methods of the 433 methods matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
433 methods | # lines of code (LOC) | Cyclomatic Complexity (CC) | complexityScore | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|
checkFormatString(constToken*const ,constToken*const,constToken*,constbool ,constbool) | 672 | 474 | 810 | 1d 0h | 40min | CheckIO.checkFormatString (constToken*const,constToken*const ,constToken*,constbool,constbool) |
simplifyTypedef() | 695 | 321 | 668 | 1d 0h | 40min | Tokenizer.simplifyTypedef() |
run() | 357 | 357 | 535 | 1d 0h | 40min | TestTokenizer.run() |
getcode(constToken*,std::list <constToken*>,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool ,unsignedint) | 417 | 265 | 473 | 1d 0h | 40min | CheckMemoryLeakInFunction.getcode (constToken*,std::list<constToken*> ,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool ,unsignedint) |
createSymbolDatabaseFindAllScopes() | 458 | 224 | 453 | 1d 0h | 40min | SymbolDatabase .createSymbolDatabaseFindAllScopes() |
checkFunctionVariableUsage_iterateScopes (constScope*const,Variables&,bool) | 308 | 234 | 388 | 7h 45min | 40min | CheckUnusedVar .checkFunctionVariableUsage_iterateScope s(constScope*const,Variables&,bool) |
valueFlowForward(Token*const ,constToken*const,constVariable*const ,constunsignedint,std::list <ValueFlow::Value>,constbool,constbool ,TokenList*const,ErrorLogger*const ,constSettings*const) | 333 | 216 | 382 | 7h 38min | 40min | __Globals.valueFlowForward(Token*const ,constToken*const,constVariable*const ,constunsignedint,std::list <ValueFlow::Value>,constbool,constbool ,TokenList*const,ErrorLogger*const ,constSettings*const) |
setTokenValue(Token* ,constValueFlow::Value&,constSettings*) | 278 | 216 | 355 | 7h 6min | 40min | __Globals.setTokenValue(Token* ,constValueFlow::Value&,constSettings*) |
ParseFromArgs(int,constchar*const*) | 379 | 160 | 349 | 6h 59min | 40min | CmdLineParser.ParseFromArgs(int ,constchar*const*) |
ParseFromArgs(int,constchar*const*) | 379 | 160 | 349 | 6h 59min | 40min | CmdLineParser.ParseFromArgs(int ,constchar*const*) |
simplifycode(Token*) | 332 | 143 | 309 | 6h 11min | 40min | CheckMemoryLeakInFunction.simplifycode (Token*) |
load(consttinyxml2::XMLDocument&) | 316 | 131 | 289 | 5h 48min | 40min | Library.load(consttinyxml2::XMLDocument& ) |
checkScopeForVariable(constToken* ,constVariable&,bool*const,bool*const ,CheckUninitVar::Alloc*const ,conststd::string&) | 229 | 174 | 288 | 5h 46min | 40min | CheckUninitVar.checkScopeForVariable (constToken*,constVariable&,bool*const ,bool*const,CheckUninitVar::Alloc*const ,conststd::string&) |
run() | 193 | 191 | 287 | 5h 45min | 40min | TestSymbolDatabase.run() |
simplifyKnownVariablesSimplify(Token** ,Token*,unsignedint,conststd::string& ,std::string&,unsignedint,bool ,constToken*const,int) | 238 | 159 | 278 | 5h 34min | 40min | Tokenizer.simplifyKnownVariablesSimplify (Token**,Token*,unsignedint ,conststd::string&,std::string& ,unsignedint,bool,constToken*const,int) |
run() | 186 | 178 | 271 | 5h 26min | 40min | TestGarbage.run() |
preprocess(simplecpp::TokenList& ,constsimplecpp::TokenList&,std::vector <std::string>&,std::map<std::string ,TokenList*>&,constsimplecpp::DUI& ,OutputList*,std::list<MacroUsage>*) | 273 | 125 | 261 | 5h 14min | 40min | simplecpp.__Globals.preprocess (simplecpp::TokenList& ,constsimplecpp::TokenList&,std::vector <std::string>&,std::map<std::string ,TokenList*>&,constsimplecpp::DUI& ,OutputList*,std::list<MacroUsage>*) |
run() | 165 | 163 | 245 | 4h 55min | 40min | TestMemleakInFunction.run() |
checkScope(constToken*const,VarInfo* ,std::set<unsignedint>) | 200 | 129 | 229 | 4h 36min | 40min | CheckLeakAutoVar.checkScope (constToken*const,VarInfo*,std::set <unsignedint>) |
checkFileUsage() | 177 | 138 | 226 | 4h 33min | 40min | CheckIO.checkFileUsage() |
setVarIdPass1() | 158 | 146 | 225 | 4h 31min | 40min | Tokenizer.setVarIdPass1() |
testScanfArgument() | 440 | 1 | 221 | 4h 27min | 40min | TestIO.testScanfArgument() |
simplifyVarDecl(Token*,constToken*const ,constbool) | 189 | 125 | 219 | 4h 24min | 40min | Tokenizer.simplifyVarDecl(Token* ,constToken*const,constbool) |
run() | 141 | 139 | 209 | 4h 12min | 40min | TestClass.run() |
run() | 139 | 139 | 208 | 4h 11min | 40min | TestVarID.run() |
run() | 138 | 138 | 207 | 4h 10min | 40min | TestPreprocessor.run() |
run() | 140 | 137 | 207 | 4h 10min | 40min | TestBufferOverrun.run() |
run() | 134 | 133 | 200 | 4h 2min | 40min | TestUnusedVar.run() |
checkRedundantAssignment() | 172 | 114 | 200 | 4h 2min | 40min | CheckOther.checkRedundantAssignment() |
findFunction(constToken*,bool) | 150 | 120 | 195 | 3h 56min | 38min | Scope.findFunction(constToken*,bool) |
run() | 129 | 129 | 193 | 3h 53min | 38min | TestOther.run() |
run() | 128 | 126 | 190 | 3h 50min | 37min | TestSimplifyTypedef.run() |
run() | 126 | 124 | 187 | 3h 46min | 37min | TestConstructors.run() |
ArgumentInfo(constToken*,constSettings* ,bool) | 170 | 100 | 185 | 3h 44min | 36min | CheckIO+ArgumentInfo.ArgumentInfo (constToken*,constSettings*,bool) |
setValueType(Token*,constValueType&,bool ,ValueType::Sign,constSettings*) | 146 | 105 | 178 | 3h 36min | 35min | __Globals.setValueType(Token* ,constValueType&,bool,ValueType::Sign ,constSettings*) |
initializeVarList(constFunction& ,std::list<constFunction*>&,constScope* ,std::vector<Usage>&) | 159 | 96 | 175 | 3h 32min | 34min | CheckClass.initializeVarList (constFunction&,std::list<constFunction* >&,constScope*,std::vector<Usage>&) |
processFile(conststd::string& ,conststd::string&,std::istream&) | 187 | 74 | 167 | 3h 22min | 32min | CppCheck.processFile(conststd::string& ,conststd::string&,std::istream&) |
run() | 109 | 104 | 158 | 3h 12min | 30min | TestSimplifyTokens.run() |
setValueTypeInTokenList(Token*,bool ,constSettings*) | 136 | 88 | 156 | 3h 9min | 30min | SymbolDatabase.setValueTypeInTokenList (Token*,bool,constSettings*) |
string_c_str() | 119 | 94 | 153 | 3h 6min | 29min | CheckStl.string_c_str() |
simplifyKnownVariables() | 142 | 81 | 152 | 3h 5min | 29min | Tokenizer.simplifyKnownVariables() |
checkScope(constToken*,conststd::vector <std::string>& ,constCheckBufferOverrun::ArrayInfo&) | 121 | 90 | 150 | 3h 2min | 28min | CheckBufferOverrun.checkScope (constToken*,conststd::vector <std::string>& ,constCheckBufferOverrun::ArrayInfo&) |
valueFlowAfterCondition(TokenList* ,SymbolDatabase*,ErrorLogger* ,constSettings*) | 113 | 90 | 146 | 2h 57min | 27min | __Globals.valueFlowAfterCondition (TokenList*,SymbolDatabase*,ErrorLogger* ,constSettings*) |
simplifyCalculations(Token*) | 120 | 84 | 144 | 2h 55min | 27min | TemplateSimplifier.simplifyCalculations (Token*) |
eraseDeadCode(Token*,constToken*) | 144 | 67 | 139 | 2h 49min | 26min | Tokenizer.eraseDeadCode(Token* ,constToken*) |
parseTokens(constTokenizer&,constchar* ,constSettings*,bool) | 123 | 76 | 137 | 2h 47min | 25min | CheckUnusedFunctions.parseTokens (constTokenizer&,constchar* ,constSettings*,bool) |
loadFunction (consttinyxml2::XMLElement*const ,conststd::string&,std::set<std::string >&) | 148 | 63 | 137 | 2h 47min | 25min | Library.loadFunction (consttinyxml2::XMLElement*const ,conststd::string&,std::set<std::string >&) |
run() | 90 | 90 | 135 | 2h 44min | 25min | TestCmdlineParser.run() |
isVariableUsage(constToken*,bool ,CheckUninitVar::Alloc) | 98 | 85 | 134 | 2h 43min | 25min | CheckUninitVar.isVariableUsage (constToken*,bool,CheckUninitVar::Alloc) |
printOut(constchar*) | 153 | 58 | 134 | 2h 43min | 25min | SymbolDatabase.printOut(constchar*) |
simplifyTokenList1(constchar*) | 158 | 51 | 130 | 2h 38min | 24min | Tokenizer.simplifyTokenList1(constchar*) |
checkGlobalAndLocalVariable() | 109 | 74 | 128 | 2h 36min | 23min | CheckBufferOverrun .checkGlobalAndLocalVariable() |
checkIncorrectLogicOperator() | 110 | 73 | 128 | 2h 36min | 23min | CheckCondition .checkIncorrectLogicOperator() |
simplifySizeof() | 129 | 64 | 128 | 2h 36min | 23min | Tokenizer.simplifySizeof() |
execute(constToken*,(anonymousnamespace )::ProgramMemory*const,MathLib::bigint* ,bool*) | 119 | 67 | 126 | 2h 34min | 23min | __Globals.execute(constToken*, (anonymousnamespace )::ProgramMemory*const,MathLib::bigint* ,bool*) |
doAssignment(Variables&,constToken*,bool ,constScope*) | 119 | 66 | 125 | 2h 32min | 23min | __Globals.doAssignment(Variables& ,constToken*,bool,constScope*) |
constructors() | 87 | 81 | 124 | 2h 31min | 23min | CheckClass.constructors() |
run() | 84 | 81 | 123 | 2h 30min | 22min | TestStl.run() |
simplifyTemplateInstantiations (TokenList&,ErrorLogger*,constSettings* ,constToken*,conststd::time_t,std::list <Token*>&,std::set<std::string>&) | 111 | 68 | 123 | 2h 30min | 22min | TemplateSimplifier .simplifyTemplateInstantiations (TokenList&,ErrorLogger*,constSettings* ,constToken*,conststd::time_t,std::list <Token*>&,std::set<std::string>&) |
isSameExpression(bool,bool,constToken* ,constToken*,constLibrary&,bool) | 67 | 87 | 120 | 2h 27min | 22min | __Globals.isSameExpression(bool,bool ,constToken*,constToken*,constLibrary& ,bool) |
isFunction(constToken*,constScope* ,constToken**,constToken**,constToken**) | 81 | 75 | 115 | 2h 21min | 21min | SymbolDatabase.isFunction(constToken* ,constScope*,constToken**,constToken** ,constToken**) |
argsMatch(constScope*,constToken* ,constToken*,conststd::string& ,unsignedint) | 93 | 69 | 115 | 2h 21min | 21min | Function.argsMatch(constScope* ,constToken*,constToken* ,conststd::string&,unsignedint) |
setVarIdPass2() | 104 | 61 | 113 | 2h 18min | 20min | Tokenizer.setVarIdPass2() |
readfile(std::istream&,conststd::string& ,OutputList*) | 114 | 56 | 113 | 2h 18min | 20min | simplecpp.TokenList.readfile (std::istream&,conststd::string& ,OutputList*) |
checkConstFunc(constScope* ,constFunction*,bool&) | 83 | 71 | 112 | 2h 17min | 20min | CheckClass.checkConstFunc(constScope* ,constFunction*,bool&) |
createTokens(std::istream& ,conststd::string&) | 112 | 56 | 112 | 2h 17min | 20min | TokenList.createTokens(std::istream& ,conststd::string&) |
checkSizeofForPointerSize() | 82 | 70 | 111 | 2h 16min | 20min | CheckSizeof.checkSizeofForPointerSize() |
checkPassByReference() | 79 | 70 | 109 | 2h 13min | 19min | CheckOther.checkPassByReference() |
simplifyRedundantParentheses() | 86 | 64 | 107 | 2h 11min | 19min | Tokenizer.simplifyRedundantParentheses() |
addClassFunction(Scope**,constToken** ,constToken*) | 97 | 58 | 106 | 2h 10min | 18min | SymbolDatabase.addClassFunction(Scope** ,constToken**,constToken*) |
call_func(constToken*,std::list <constToken*>,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool& ,unsignedint) | 103 | 55 | 106 | 2h 10min | 18min | CheckMemoryLeakInFunction.call_func (constToken*,std::list<constToken*> ,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool& ,unsignedint) |
createAstAtToken(Token*,bool) | 82 | 61 | 102 | 2h 5min | 18min | __Globals.createAstAtToken(Token*,bool) |
valueFlowReverse(TokenList*,Token* ,constToken*const,ValueFlow::Value ,ValueFlow::Value,ErrorLogger* ,constSettings*) | 88 | 58 | 102 | 2h 5min | 18min | __Globals.valueFlowReverse(TokenList* ,Token*,constToken*const ,ValueFlow::Value,ValueFlow::Value ,ErrorLogger*,constSettings*) |
run() | 68 | 67 | 101 | 2h 4min | 17min | TestSimplifyTemplate.run() |
isDecimalFloat(conststd::string&) | 90 | 56 | 101 | 2h 4min | 17min | MathLib.isDecimalFloat(conststd::string& ) |
checkStructVariable(constVariable*const) | 90 | 56 | 101 | 2h 4min | 17min | CheckMemoryLeakStructMember .checkStructVariable(constVariable*const ) |
run() | 71 | 64 | 99 | 2h 2min | 17min | TestLeakAutoVar.run() |
duplicateTypedef(Token**,constToken* ,constToken*) | 79 | 60 | 99 | 2h 2min | 17min | Tokenizer.duplicateTypedef(Token** ,constToken*,constToken*) |
checkScope_inner(constToken* ,constCheckBufferOverrun::ArrayInfo&) | 83 | 57 | 98 | 2h 0min | 17min | CheckBufferOverrun.checkScope_inner (constToken* ,constCheckBufferOverrun::ArrayInfo&) |
simplifyStructDecl() | 100 | 48 | 98 | 2h 0min | 17min | Tokenizer.simplifyStructDecl() |
useDefaultArgumentValues(conststd::list <Token*>&,std::list<Token*>*) | 91 | 51 | 96 | 1h 58min | 16min | TemplateSimplifier .useDefaultArgumentValues(conststd::list <Token*>&,std::list<Token*>*) |
simplifyConditions() | 101 | 45 | 95 | 1h 57min | 16min | Tokenizer.simplifyConditions() |
testPrintfArgument() | 182 | 1 | 92 | 1h 53min | 15min | TestIO.testPrintfArgument() |
iterators() | 79 | 52 | 91 | 1h 52min | 15min | CheckStl.iterators() |
valueFlowSetConstantValue(constToken* ,constSettings*,bool) | 83 | 49 | 90 | 1h 51min | 15min | __Globals.valueFlowSetConstantValue (constToken*,constSettings*,bool) |
simplifyFunctionParameters() | 94 | 43 | 90 | 1h 51min | 15min | Tokenizer.simplifyFunctionParameters() |
isPointerDeRef(constToken*,bool&) | 56 | 61 | 89 | 1h 50min | 15min | CheckNullPointer.isPointerDeRef (constToken*,bool&) |
simplifyComma() | 66 | 56 | 89 | 1h 50min | 15min | Tokenizer.simplifyComma() |
checkScope(constScope*,conststd::set <std::string>&) | 53 | 62 | 88 | 1h 48min | 14min | CheckUninitVar.checkScope(constScope* ,conststd::set<std::string>&) |
pushback() | 77 | 50 | 88 | 1h 48min | 14min | CheckStl.pushback() |
multiComparePercent(constToken* ,constchar*&,unsignedint) | 93 | 42 | 88 | 1h 48min | 14min | __Globals.multiComparePercent (constToken*,constchar*&,unsignedint) |
simplifyNumericCalculations(Token*) | 55 | 60 | 87 | 1h 47min | 14min | TemplateSimplifier .simplifyNumericCalculations(Token*) |
checkStructVariable() | 76 | 48 | 86 | 1h 46min | 14min | CheckBufferOverrun.checkStructVariable() |
simplifyMathFunctions() | 99 | 37 | 86 | 1h 46min | 14min | Tokenizer.simplifyMathFunctions() |
calc(char,constMathLib::value& ,constMathLib::value&) | 92 | 38 | 84 | 1h 44min | 14min | MathLib+value.calc(char ,constMathLib::value& ,constMathLib::value&) |
parsedecl(constToken*,ValueType*const ,ValueType::Sign,constSettings*) | 79 | 44 | 83 | 1h 43min | 13min | __Globals.parsedecl(constToken* ,ValueType*const,ValueType::Sign ,constSettings*) |
valueFlowBeforeCondition(TokenList* ,SymbolDatabase*,ErrorLogger* ,constSettings*) | 65 | 50 | 82 | 1h 41min | 13min | __Globals.valueFlowBeforeCondition (TokenList*,SymbolDatabase*,ErrorLogger* ,constSettings*) |
checkUnreachableCode() | 65 | 50 | 82 | 1h 41min | 13min | CheckOther.checkUnreachableCode() |
valuetype() | 159 | 1 | 80 | 1h 39min | 13min | TestSymbolDatabase.valuetype() |
run() | 56 | 51 | 79 | 1h 38min | 12min | TestNullPointer.run() |
Critical Rule Violated: Avoid methods with too many parameters |
• How to Fix Issues: More properties/fields can be added to the declaring type to handle numerous states. An alternative is to provide a class or a structure dedicated to handle arguments passing. The estimated Debt, which means the effort to fix such issue, varies linearly from 1 hour for a method with 7 parameters, up to 6 hours for a methods with 40 or more parameters.
32 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
32 methods | # Parameters | Debt | Annual Interest | Full Name |
---|---|---|---|---|
valueFlowForward(Token*const ,constToken*const,constVariable*const ,constunsignedint,std::list <ValueFlow::Value>,constbool,constbool ,TokenList*const,ErrorLogger*const ,constSettings*const) | 10 | 1h 27min | 12min | __Globals.valueFlowForward(Token*const ,constToken*const,constVariable*const ,constunsignedint,std::list <ValueFlow::Value>,constbool,constbool ,TokenList*const,ErrorLogger*const ,constSettings*const) |
simplifyKnownVariablesSimplify(Token** ,Token*,unsignedint,conststd::string& ,std::string&,unsignedint,bool ,constToken*const,int) | 9 | 1h 18min | 9min | Tokenizer.simplifyKnownVariablesSimplify (Token**,Token*,unsignedint ,conststd::string&,std::string& ,unsignedint,bool,constToken*const,int) |
simplifyKnownVariablesSimplify(Token** ,Token*,unsignedint,conststd::string& ,std::string&,unsignedint,bool ,constToken*const,int) | 9 | 1h 18min | 9min | Tokenizer.simplifyKnownVariablesSimplify (Token**,Token*,unsignedint ,conststd::string&,std::string& ,unsignedint,bool,constToken*const,int) |
simplifyKnownVariablesSimplify(Token** ,Token*,unsignedint,conststd::string& ,std::string&,unsignedint,bool ,constToken*const,int) | 9 | 1h 18min | 9min | Tokenizer.simplifyKnownVariablesSimplify (Token**,Token*,unsignedint ,conststd::string&,std::string& ,unsignedint,bool,constToken*const,int) |
Variable(constToken*,constToken* ,constToken*,std::size_t,AccessControl ,constType*,constScope*,constLibrary*) | 8 | 1h 9min | 5min | Variable.Variable(constToken* ,constToken*,constToken*,std::size_t ,AccessControl,constType*,constScope* ,constLibrary*) |
Variable(constToken*,constToken* ,constToken*,std::size_t,AccessControl ,constType*,constScope*,constLibrary*) | 8 | 1h 9min | 5min | Variable.Variable(constToken* ,constToken*,constToken*,std::size_t ,AccessControl,constType*,constScope* ,constLibrary*) |
stringifyList(bool,bool,bool,bool,bool ,conststd::vector<std::string>* ,constToken*) | 7 | 1h 0min | 2min 0s | Token.stringifyList(bool,bool,bool,bool ,bool,conststd::vector<std::string>* ,constToken*) |
ErrorMessage(conststd::list<FileLocation >&,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) | 7 | 1h 0min | 2min 0s | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<FileLocation>& ,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) |
ErrorMessage(conststd::list<constToken* >&,constTokenList* ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) | 7 | 1h 0min | 2min 0s | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<constToken*>& ,constTokenList*,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) |
simplifyKnownVariablesGetData (unsignedint,Token**,Token** ,std::string&,unsignedint&,bool&,bool) | 7 | 1h 0min | 2min 0s | Tokenizer.simplifyKnownVariablesGetData (unsignedint,Token**,Token** ,std::string&,unsignedint&,bool&,bool) |
valueFlowReverse(TokenList*,Token* ,constToken*const,ValueFlow::Value ,ValueFlow::Value,ErrorLogger* ,constSettings*) | 7 | 1h 0min | 2min 0s | __Globals.valueFlowReverse(TokenList* ,Token*,constToken*const ,ValueFlow::Value,ValueFlow::Value ,ErrorLogger*,constSettings*) |
stringifyList(bool,bool,bool,bool,bool ,conststd::vector<std::string>* ,constToken*) | 7 | 1h 0min | 2min 0s | Token.stringifyList(bool,bool,bool,bool ,bool,conststd::vector<std::string>* ,constToken*) |
ErrorMessage(conststd::list<FileLocation >&,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) | 7 | 1h 0min | 2min 0s | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<FileLocation>& ,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) |
ErrorMessage(conststd::list<constToken* >&,constTokenList* ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) | 7 | 1h 0min | 2min 0s | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<constToken*>& ,constTokenList*,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) |
simplifyKnownVariablesGetData (unsignedint,Token**,Token** ,std::string&,unsignedint&,bool&,bool) | 7 | 1h 0min | 2min 0s | Tokenizer.simplifyKnownVariablesGetData (unsignedint,Token**,Token** ,std::string&,unsignedint&,bool&,bool) |
addVariable(constToken*,constToken* ,constToken*,AccessControl,constType* ,constScope*,constLibrary*) | 7 | 1h 0min | 2min 0s | Scope.addVariable(constToken* ,constToken*,constToken*,AccessControl ,constType*,constScope*,constLibrary*) |
duplInheritedMembersError(constToken* ,constToken*,conststd::string& ,conststd::string&,conststd::string& ,bool,bool) | 7 | 1h 0min | 2min 0s | CheckClass.duplInheritedMembersError (constToken*,constToken* ,conststd::string&,conststd::string& ,conststd::string&,bool,bool) |
call_func(constToken*,std::list <constToken*>,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool& ,unsignedint) | 7 | 1h 0min | 2min 0s | CheckMemoryLeakInFunction.call_func (constToken*,std::list<constToken*> ,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool& ,unsignedint) |
getcode(constToken*,std::list <constToken*>,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool ,unsignedint) | 7 | 1h 0min | 2min 0s | CheckMemoryLeakInFunction.getcode (constToken*,std::list<constToken*> ,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool ,unsignedint) |
expandTemplate(TokenList&,constToken* ,conststd::string&,conststd::vector <constToken*>&,conststd::string& ,conststd::vector<constToken*>& ,std::list<Token*>&) | 7 | 1h 0min | 2min 0s | TemplateSimplifier.expandTemplate (TokenList&,constToken* ,conststd::string&,conststd::vector <constToken*>&,conststd::string& ,conststd::vector<constToken*>& ,std::list<Token*>&) |
simplifyTemplateInstantiations (TokenList&,ErrorLogger*,constSettings* ,constToken*,conststd::time_t,std::list <Token*>&,std::set<std::string>&) | 7 | 1h 0min | 2min 0s | TemplateSimplifier .simplifyTemplateInstantiations (TokenList&,ErrorLogger*,constSettings* ,constToken*,conststd::time_t,std::list <Token*>&,std::set<std::string>&) |
preprocess(simplecpp::TokenList& ,constsimplecpp::TokenList&,std::vector <std::string>&,std::map<std::string ,TokenList*>&,constsimplecpp::DUI& ,OutputList*,std::list<MacroUsage>*) | 7 | 1h 0min | 2min 0s | simplecpp.__Globals.preprocess (simplecpp::TokenList& ,constsimplecpp::TokenList&,std::vector <std::string>&,std::map<std::string ,TokenList*>&,constsimplecpp::DUI& ,OutputList*,std::list<MacroUsage>*) |
ErrorMessage(conststd::list<FileLocation >&,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) | 7 | 1h 0min | 2min 0s | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<FileLocation>& ,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) |
ErrorMessage(conststd::list<constToken* >&,constTokenList* ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) | 7 | 1h 0min | 2min 0s | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<constToken*>& ,constTokenList*,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) |
stringifyList(bool,bool,bool,bool,bool ,conststd::vector<std::string>* ,constToken*) | 7 | 1h 0min | 2min 0s | Token.stringifyList(bool,bool,bool,bool ,bool,conststd::vector<std::string>* ,constToken*) |
simplifyKnownVariablesGetData (unsignedint,Token**,Token** ,std::string&,unsignedint&,bool&,bool) | 7 | 1h 0min | 2min 0s | Tokenizer.simplifyKnownVariablesGetData (unsignedint,Token**,Token** ,std::string&,unsignedint&,bool&,bool) |
duplInheritedMembersError(constToken* ,constToken*,conststd::string& ,conststd::string&,conststd::string& ,bool,bool) | 7 | 1h 0min | 2min 0s | CheckClass.duplInheritedMembersError (constToken*,constToken* ,conststd::string&,conststd::string& ,conststd::string&,bool,bool) |
call_func(constToken*,std::list <constToken*>,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool& ,unsignedint) | 7 | 1h 0min | 2min 0s | CheckMemoryLeakInFunction.call_func (constToken*,std::list<constToken*> ,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool& ,unsignedint) |
getcode(constToken*,std::list <constToken*>,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool ,unsignedint) | 7 | 1h 0min | 2min 0s | CheckMemoryLeakInFunction.getcode (constToken*,std::list<constToken*> ,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool ,unsignedint) |
addVariable(constToken*,constToken* ,constToken*,AccessControl,constType* ,constScope*,constLibrary*) | 7 | 1h 0min | 2min 0s | Scope.addVariable(constToken* ,constToken*,constToken*,AccessControl ,constType*,constScope*,constLibrary*) |
expandTemplate(TokenList&,constToken* ,conststd::string&,conststd::vector <constToken*>&,conststd::string& ,conststd::vector<constToken*>& ,std::list<Token*>&) | 7 | 1h 0min | 2min 0s | TemplateSimplifier.expandTemplate (TokenList&,constToken* ,conststd::string&,conststd::vector <constToken*>&,conststd::string& ,conststd::vector<constToken*>& ,std::list<Token*>&) |
simplifyTemplateInstantiations (TokenList&,ErrorLogger*,constSettings* ,constToken*,conststd::time_t,std::list <Token*>&,std::set<std::string>&) | 7 | 1h 0min | 2min 0s | TemplateSimplifier .simplifyTemplateInstantiations (TokenList&,ErrorLogger*,constSettings* ,constToken*,conststd::time_t,std::list <Token*>&,std::set<std::string>&) |
Rule Violated: Avoid methods with too many local variables |
• How to Fix Issues: To refactor such method and increase code quality and maintainability, certainly you'll have to split the method into several smaller methods or even create one or several classes to implement the logic. During this process it is important to question the scope of each variable local to the method. This can be an indication if such local variable will become an instance field of the newly created class(es). The estimated Debt, which means the effort to fix such issue, varies linearly from 10 minutes for a method with 15 variables, up to 2 hours for a methods with 80 or more variables.
74 methods matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
74 methods | # Variables | Debt | Annual Interest | Full Name |
---|---|---|---|---|
simplifyTypedef() | 81 | 6h 0min | 2h 0min | Tokenizer.simplifyTypedef() |
load(consttinyxml2::XMLDocument&) | 79 | 5h 55min | 1h 58min | Library.load(consttinyxml2::XMLDocument& ) |
valueFlowForward(Token*const ,constToken*const,constVariable*const ,constunsignedint,std::list <ValueFlow::Value>,constbool,constbool ,TokenList*const,ErrorLogger*const ,constSettings*const) | 66 | 4h 55min | 1h 34min | __Globals.valueFlowForward(Token*const ,constToken*const,constVariable*const ,constunsignedint,std::list <ValueFlow::Value>,constbool,constbool ,TokenList*const,ErrorLogger*const ,constSettings*const) |
simplifyStdType() | 60 | 4h 27min | 1h 23min | TestTokenizer.simplifyStdType() |
createLinks() | 60 | 4h 27min | 1h 23min | TestTokenizer.createLinks() |
preprocess(simplecpp::TokenList& ,constsimplecpp::TokenList&,std::vector <std::string>&,std::map<std::string ,TokenList*>&,constsimplecpp::DUI& ,OutputList*,std::list<MacroUsage>*) | 58 | 4h 18min | 1h 20min | simplecpp.__Globals.preprocess (simplecpp::TokenList& ,constsimplecpp::TokenList&,std::vector <std::string>&,std::map<std::string ,TokenList*>&,constsimplecpp::DUI& ,OutputList*,std::list<MacroUsage>*) |
checkIncorrectLogicOperator() | 55 | 4h 4min | 1h 14min | CheckCondition .checkIncorrectLogicOperator() |
createSymbolDatabaseFindAllScopes() | 46 | 3h 23min | 58min | SymbolDatabase .createSymbolDatabaseFindAllScopes() |
simplifyStructDecl1() | 46 | 3h 23min | 58min | TestSimplifyTokens.simplifyStructDecl1() |
ParseFromArgs(int,constchar*const*) | 43 | 3h 9min | 52min | CmdLineParser.ParseFromArgs(int ,constchar*const*) |
checkFunctionVariableUsage_iterateScopes (constScope*const,Variables&,bool) | 43 | 3h 9min | 52min | CheckUnusedVar .checkFunctionVariableUsage_iterateScope s(constScope*const,Variables&,bool) |
ParseFromArgs(int,constchar*const*) | 43 | 3h 9min | 52min | CmdLineParser.ParseFromArgs(int ,constchar*const*) |
processFile(conststd::string& ,conststd::string&,std::istream&) | 42 | 3h 4min | 51min | CppCheck.processFile(conststd::string& ,conststd::string&,std::istream&) |
checkScopeForVariable(constToken* ,constVariable&,bool*const,bool*const ,CheckUninitVar::Alloc*const ,conststd::string&) | 41 | 3h 0min | 49min | CheckUninitVar.checkScopeForVariable (constToken*,constVariable&,bool*const ,bool*const,CheckUninitVar::Alloc*const ,conststd::string&) |
simplifyKnownVariables() | 40 | 2h 55min | 47min | Tokenizer.simplifyKnownVariables() |
simplifyStructDecl3() | 40 | 2h 55min | 47min | TestSimplifyTokens.simplifyStructDecl3() |
simplifyTypedefFunction1() | 40 | 2h 55min | 47min | TestSimplifyTypedef .simplifyTypedefFunction1() |
checkRedundantAssignment() | 39 | 2h 50min | 45min | CheckOther.checkRedundantAssignment() |
getcode(constToken*,std::list <constToken*>,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool ,unsignedint) | 39 | 2h 50min | 45min | CheckMemoryLeakInFunction.getcode (constToken*,std::list<constToken*> ,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool ,unsignedint) |
simplifyKnownVariables29() | 36 | 2h 36min | 40min | TestTokenizer.simplifyKnownVariables29() |
checkScope(constToken*,conststd::vector <std::string>& ,constCheckBufferOverrun::ArrayInfo&) | 35 | 2h 32min | 38min | CheckBufferOverrun.checkScope (constToken*,conststd::vector <std::string>& ,constCheckBufferOverrun::ArrayInfo&) |
checkScope(constToken*const,VarInfo* ,std::set<unsignedint>) | 34 | 2h 27min | 36min | CheckLeakAutoVar.checkScope (constToken*const,VarInfo*,std::set <unsignedint>) |
simplifyInitVar() | 34 | 2h 27min | 36min | TestTokenizer.simplifyInitVar() |
string_c_str() | 33 | 2h 23min | 34min | CheckStl.string_c_str() |
setTokenValue(Token* ,constValueFlow::Value&,constSettings*) | 32 | 2h 18min | 32min | __Globals.setTokenValue(Token* ,constValueFlow::Value&,constSettings*) |
loadFunction (consttinyxml2::XMLElement*const ,conststd::string&,std::set<std::string >&) | 31 | 2h 13min | 31min | Library.loadFunction (consttinyxml2::XMLElement*const ,conststd::string&,std::set<std::string >&) |
setValueTypeInTokenList(Token*,bool ,constSettings*) | 29 | 2h 4min | 27min | SymbolDatabase.setValueTypeInTokenList (Token*,bool,constSettings*) |
flowControl() | 29 | 2h 4min | 27min | TestSimplifyTokens.flowControl() |
checkGlobalAndLocalVariable() | 28 | 2h 0min | 25min | CheckBufferOverrun .checkGlobalAndLocalVariable() |
checkFileUsage() | 28 | 2h 0min | 25min | CheckIO.checkFileUsage() |
simplifyTemplateInstantiations (TokenList&,ErrorLogger*,constSettings* ,constToken*,conststd::time_t,std::list <Token*>&,std::set<std::string>&) | 27 | 1h 55min | 23min | TemplateSimplifier .simplifyTemplateInstantiations (TokenList&,ErrorLogger*,constSettings* ,constToken*,conststd::time_t,std::list <Token*>&,std::set<std::string>&) |
findFunction(constToken*,bool) | 26 | 1h 50min | 21min | Scope.findFunction(constToken*,bool) |
parseTokens(constTokenizer&,constchar* ,constSettings*,bool) | 26 | 1h 50min | 21min | CheckUnusedFunctions.parseTokens (constTokenizer&,constchar* ,constSettings*,bool) |
setVarIdPass1() | 25 | 1h 46min | 20min | Tokenizer.setVarIdPass1() |
bitfields1() | 25 | 1h 46min | 20min | TestTokenizer.bitfields1() |
check_internal(CppCheck&,int ,constchar*const*) | 24 | 1h 41min | 18min | CppCheckExecutor.check_internal (CppCheck&,int,constchar*const*) |
valueFlowSetConstantValue(constToken* ,constSettings*,bool) | 24 | 1h 41min | 18min | __Globals.valueFlowSetConstantValue (constToken*,constSettings*,bool) |
simplifySizeof() | 24 | 1h 41min | 18min | Tokenizer.simplifySizeof() |
simplifyKnownVariablesSimplify(Token** ,Token*,unsignedint,conststd::string& ,std::string&,unsignedint,bool ,constToken*const,int) | 24 | 1h 41min | 18min | Tokenizer.simplifyKnownVariablesSimplify (Token**,Token*,unsignedint ,conststd::string&,std::string& ,unsignedint,bool,constToken*const,int) |
constructors() | 24 | 1h 41min | 18min | CheckClass.constructors() |
checkFormatString(constToken*const ,constToken*const,constToken*,constbool ,constbool) | 24 | 1h 41min | 18min | CheckIO.checkFormatString (constToken*const,constToken*const ,constToken*,constbool,constbool) |
check_internal(CppCheck&,int ,constchar*const*) | 24 | 1h 41min | 18min | CppCheckExecutor.check_internal (CppCheck&,int,constchar*const*) |
valueFlowAfterCondition(TokenList* ,SymbolDatabase*,ErrorLogger* ,constSettings*) | 23 | 1h 36min | 16min | __Globals.valueFlowAfterCondition (TokenList*,SymbolDatabase*,ErrorLogger* ,constSettings*) |
pushback() | 23 | 1h 36min | 16min | CheckStl.pushback() |
iftruefalse() | 23 | 1h 36min | 16min | TestSimplifyTokens.iftruefalse() |
sizeof9() | 23 | 1h 36min | 16min | TestSimplifyTokens.sizeof9() |
checkScope_inner(constToken* ,constCheckBufferOverrun::ArrayInfo&) | 22 | 1h 32min | 14min | CheckBufferOverrun.checkScope_inner (constToken* ,constCheckBufferOverrun::ArrayInfo&) |
virtualDestructor() | 22 | 1h 32min | 14min | CheckClass.virtualDestructor() |
setValueType(Token*,constValueType&,bool ,ValueType::Sign,constSettings*) | 21 | 1h 27min | 12min | __Globals.setValueType(Token* ,constValueType&,bool,ValueType::Sign ,constSettings*) |
valueFlowAfterMove(TokenList* ,SymbolDatabase*,ErrorLogger* ,constSettings*) | 21 | 1h 27min | 12min | __Globals.valueFlowAfterMove(TokenList* ,SymbolDatabase*,ErrorLogger* ,constSettings*) |
setVarIdPass2() | 21 | 1h 27min | 12min | Tokenizer.setVarIdPass2() |
simplifyMathFunctions() | 21 | 1h 27min | 12min | Tokenizer.simplifyMathFunctions() |
simplifyMathExpressions() | 21 | 1h 27min | 12min | Tokenizer.simplifyMathExpressions() |
checkStructVariable() | 21 | 1h 27min | 12min | CheckBufferOverrun.checkStructVariable() |
simplifycode(Token*) | 21 | 1h 27min | 12min | CheckMemoryLeakInFunction.simplifycode (Token*) |
eraseDeadCode(Token*,constToken*) | 20 | 1h 23min | 11min | Tokenizer.eraseDeadCode(Token* ,constToken*) |
addClassFunction(Scope**,constToken** ,constToken*) | 20 | 1h 23min | 11min | SymbolDatabase.addClassFunction(Scope** ,constToken**,constToken*) |
call_func(constToken*,std::list <constToken*>,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool& ,unsignedint) | 20 | 1h 23min | 11min | CheckMemoryLeakInFunction.call_func (constToken*,std::list<constToken*> ,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool& ,unsignedint) |
mismatchingContainers() | 20 | 1h 23min | 11min | CheckStl.mismatchingContainers() |
useDefaultArgumentValues(conststd::list <Token*>&,std::list<Token*>*) | 20 | 1h 23min | 11min | TemplateSimplifier .useDefaultArgumentValues(conststd::list <Token*>&,std::list<Token*>*) |
getcode(constsimplecpp::TokenList& ,conststd::string&,std::vector <std::string>&,constbool) | 19 | 1h 18min | 9min | Preprocessor.getcode (constsimplecpp::TokenList& ,conststd::string&,std::vector <std::string>&,constbool) |
importVcxproj(conststd::string&,std::map <std::string,std::string> ,conststd::string&) | 18 | 1h 13min | 7min | ImportProject.importVcxproj (conststd::string&,std::map<std::string ,std::string>,conststd::string&) |
checkFunctionParameter(constToken& ,constunsignedint ,constCheckBufferOverrun::ArrayInfo& ,conststd::list<constToken*>&) | 18 | 1h 13min | 7min | CheckBufferOverrun .checkFunctionParameter(constToken& ,constunsignedint ,constCheckBufferOverrun::ArrayInfo& ,conststd::list<constToken*>&) |
analyseWholeProgram(ErrorLogger*const ,conststd::string&) | 18 | 1h 13min | 7min | CheckUnusedFunctions.analyseWholeProgram (ErrorLogger*const,conststd::string&) |
sizeof18() | 18 | 1h 13min | 7min | TestSimplifyTokens.sizeof18() |
checkFuncArgNamesDifferent() | 17 | 1h 9min | 5min | CheckOther.checkFuncArgNamesDifferent() |
variable(constScope*,constToken*) | 17 | 1h 9min | 5min | CheckMemoryLeakInClass.variable (constScope*,constToken*) |
isVariableStlType() | 17 | 1h 9min | 5min | TestSymbolDatabase.isVariableStlType() |
matchNumeric() | 17 | 1h 9min | 5min | TestToken.matchNumeric() |
simplifyNamespaceStd() | 17 | 1h 9min | 5min | TestTokenizer.simplifyNamespaceStd() |
deserialize(conststd::string&) | 16 | 1h 4min | 3min 48s | ErrorLogger+ErrorMessage.deserialize (conststd::string&) |
createTokens(std::istream& ,conststd::string&) | 16 | 1h 4min | 3min 48s | TokenList.createTokens(std::istream& ,conststd::string&) |
simplifyVarDecl(Token*,constToken*const ,constbool) | 16 | 1h 4min | 3min 48s | Tokenizer.simplifyVarDecl(Token* ,constToken*const,constbool) |
createSymbolDatabaseVariableSymbolTable( ) | 16 | 1h 4min | 3min 48s | SymbolDatabase .createSymbolDatabaseVariableSymbolTable () |
Rule Violated: Avoid methods with too many overloads |
• How to Fix Issues: Typically the too many overloads phenomenon appears when an algorithm takes a various set of in-parameters. Each overload is presented as a facility to provide a various set of in-parameters. In such situation, the C# and VB.NET language feature named Named and Optional arguments should be used. The too many overloads phenomenon can also be a consequence of the usage of the visitor design pattern http://en.wikipedia.org/wiki/Visitor_pattern since a method named Visit() must be provided for each sub type. In such situation there is no need for fix. Sometime too many overloads phenomenon is not the symptom of a problem, for example when a numeric to something conversion method applies to all numeric and nullable numeric types. The estimated Debt, which means the effort to fix such issue, is of 2 minutes per method overload.
116 methods matched
- The following list of methods is truncated and contains only the first 100 methods of the 116 methods matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
116 methods | overloads | Debt | Severity | Full Name |
---|---|---|---|---|
ErrorMessage(conststd::list<FileLocation >&,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<FileLocation>& ,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) |
ErrorMessage(conststd::list<FileLocation >&,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<FileLocation>& ,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) |
ErrorMessage(conststd::list<constToken* >&,constTokenList* ,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<constToken*>& ,constTokenList*,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) |
ErrorMessage(conststd::list<constToken* >&,constTokenList* ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<constToken*>& ,constTokenList*,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) |
ErrorMessage() | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage() |
ErrorMessage (consttinyxml2::XMLElement*const) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (consttinyxml2::XMLElement*const) |
ErrorMessage(ErrorLogger::ErrorMessage&& ) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (ErrorLogger::ErrorMessage&&) |
ErrorMessage (constErrorLogger::ErrorMessage&) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (constErrorLogger::ErrorMessage&) |
ErrorMessage(conststd::list<FileLocation >&,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<FileLocation>& ,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) |
ErrorMessage(conststd::list<FileLocation >&,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<FileLocation>& ,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) |
ErrorMessage(conststd::list<constToken* >&,constTokenList* ,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<constToken*>& ,constTokenList*,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) |
ErrorMessage(conststd::list<constToken* >&,constTokenList* ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<constToken*>& ,constTokenList*,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) |
ErrorMessage() | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage() |
ErrorMessage (consttinyxml2::XMLElement*const) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (consttinyxml2::XMLElement*const) |
ErrorMessage(ErrorLogger::ErrorMessage&& ) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (ErrorLogger::ErrorMessage&&) |
ErrorMessage (constErrorLogger::ErrorMessage&) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (constErrorLogger::ErrorMessage&) |
ErrorMessage(conststd::list<FileLocation >&,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<FileLocation>& ,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) |
ErrorMessage(conststd::list<FileLocation >&,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<FileLocation>& ,conststd::string& ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) |
ErrorMessage(conststd::list<constToken* >&,constTokenList* ,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<constToken*>& ,constTokenList*,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) |
ErrorMessage(conststd::list<constToken* >&,constTokenList* ,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (conststd::list<constToken*>& ,constTokenList*,Severity::SeverityType ,conststd::string&,conststd::string& ,constCWE&,bool) |
ErrorMessage() | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage() |
ErrorMessage (consttinyxml2::XMLElement*const) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (consttinyxml2::XMLElement*const) |
ErrorMessage(ErrorLogger::ErrorMessage&& ) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (ErrorLogger::ErrorMessage&&) |
ErrorMessage (constErrorLogger::ErrorMessage&) | 8 methods | 2min 0s | Medium | ErrorLogger+ErrorMessage.ErrorMessage (constErrorLogger::ErrorMessage&) |
SetAttribute(constchar*) | 7 methods | 2min 0s | Medium | tinyxml2.XMLAttribute.SetAttribute (constchar*) |
SetAttribute(int) | 7 methods | 2min 0s | Medium | tinyxml2.XMLAttribute.SetAttribute(int) |
SetAttribute(unsignedint) | 7 methods | 2min 0s | Medium | tinyxml2.XMLAttribute.SetAttribute (unsignedint) |
SetAttribute(int64_t) | 7 methods | 2min 0s | Medium | tinyxml2.XMLAttribute.SetAttribute (int64_t) |
SetAttribute(bool) | 7 methods | 2min 0s | Medium | tinyxml2.XMLAttribute.SetAttribute(bool) |
SetAttribute(double) | 7 methods | 2min 0s | Medium | tinyxml2.XMLAttribute.SetAttribute (double) |
SetAttribute(float) | 7 methods | 2min 0s | Medium | tinyxml2.XMLAttribute.SetAttribute(float ) |
SetAttribute(constchar*,constchar*) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetAttribute (constchar*,constchar*) |
SetAttribute(constchar*,int) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetAttribute (constchar*,int) |
SetAttribute(constchar*,unsignedint) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetAttribute (constchar*,unsignedint) |
SetAttribute(constchar*,int64_t) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetAttribute (constchar*,int64_t) |
SetAttribute(constchar*,bool) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetAttribute (constchar*,bool) |
SetAttribute(constchar*,double) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetAttribute (constchar*,double) |
SetAttribute(constchar*,float) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetAttribute (constchar*,float) |
SetText(constchar*) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetText(constchar*) |
SetText(int) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetText(int) |
SetText(unsignedint) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetText(unsignedint) |
SetText(int64_t) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetText(int64_t) |
SetText(bool) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetText(bool) |
SetText(double) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetText(double) |
SetText(float) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetText(float) |
PushText(constchar*,bool) | 7 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushText(constchar* ,bool) |
PushText(int) | 7 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushText(int) |
PushText(unsignedint) | 7 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushText(unsignedint ) |
PushText(int64_t) | 7 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushText(int64_t) |
PushText(bool) | 7 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushText(bool) |
PushText(float) | 7 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushText(float) |
PushText(double) | 7 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushText(double) |
SetAttribute(constchar*) | 7 methods | 2min 0s | Medium | tinyxml2.XMLAttribute.SetAttribute (constchar*) |
SetAttribute(int) | 7 methods | 2min 0s | Medium | tinyxml2.XMLAttribute.SetAttribute(int) |
SetAttribute(unsignedint) | 7 methods | 2min 0s | Medium | tinyxml2.XMLAttribute.SetAttribute (unsignedint) |
SetAttribute(int64_t) | 7 methods | 2min 0s | Medium | tinyxml2.XMLAttribute.SetAttribute (int64_t) |
SetAttribute(bool) | 7 methods | 2min 0s | Medium | tinyxml2.XMLAttribute.SetAttribute(bool) |
SetAttribute(double) | 7 methods | 2min 0s | Medium | tinyxml2.XMLAttribute.SetAttribute (double) |
SetAttribute(float) | 7 methods | 2min 0s | Medium | tinyxml2.XMLAttribute.SetAttribute(float ) |
SetAttribute(constchar*,constchar*) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetAttribute (constchar*,constchar*) |
SetAttribute(constchar*,int) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetAttribute (constchar*,int) |
SetAttribute(constchar*,unsignedint) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetAttribute (constchar*,unsignedint) |
SetAttribute(constchar*,int64_t) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetAttribute (constchar*,int64_t) |
SetAttribute(constchar*,bool) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetAttribute (constchar*,bool) |
SetAttribute(constchar*,double) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetAttribute (constchar*,double) |
SetAttribute(constchar*,float) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetAttribute (constchar*,float) |
SetText(constchar*) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetText(constchar*) |
SetText(int) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetText(int) |
SetText(unsignedint) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetText(unsignedint) |
SetText(int64_t) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetText(int64_t) |
SetText(bool) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetText(bool) |
SetText(double) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetText(double) |
SetText(float) | 7 methods | 2min 0s | Medium | tinyxml2.XMLElement.SetText(float) |
PushText(constchar*,bool) | 7 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushText(constchar* ,bool) |
PushText(int) | 7 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushText(int) |
PushText(unsignedint) | 7 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushText(unsignedint ) |
PushText(int64_t) | 7 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushText(int64_t) |
PushText(bool) | 7 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushText(bool) |
PushText(float) | 7 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushText(float) |
PushText(double) | 7 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushText(double) |
ToStr(int,char*,int) | 6 methods | 2min 0s | Medium | tinyxml2.XMLUtil.ToStr(int,char*,int) |
ToStr(unsignedint,char*,int) | 6 methods | 2min 0s | Medium | tinyxml2.XMLUtil.ToStr(unsignedint,char* ,int) |
ToStr(bool,char*,int) | 6 methods | 2min 0s | Medium | tinyxml2.XMLUtil.ToStr(bool,char*,int) |
ToStr(float,char*,int) | 6 methods | 2min 0s | Medium | tinyxml2.XMLUtil.ToStr(float,char*,int) |
ToStr(double,char*,int) | 6 methods | 2min 0s | Medium | tinyxml2.XMLUtil.ToStr(double,char*,int) |
ToStr(int64_t,char*,int) | 6 methods | 2min 0s | Medium | tinyxml2.XMLUtil.ToStr(int64_t,char*,int ) |
QueryAttribute(constchar*,int*) | 6 methods | 2min 0s | Medium | tinyxml2.XMLElement.QueryAttribute (constchar*,int*) |
QueryAttribute(constchar*,unsignedint*) | 6 methods | 2min 0s | Medium | tinyxml2.XMLElement.QueryAttribute (constchar*,unsignedint*) |
QueryAttribute(constchar*,int64_t*) | 6 methods | 2min 0s | Medium | tinyxml2.XMLElement.QueryAttribute (constchar*,int64_t*) |
QueryAttribute(constchar*,bool*) | 6 methods | 2min 0s | Medium | tinyxml2.XMLElement.QueryAttribute (constchar*,bool*) |
QueryAttribute(constchar*,double*) | 6 methods | 2min 0s | Medium | tinyxml2.XMLElement.QueryAttribute (constchar*,double*) |
QueryAttribute(constchar*,float*) | 6 methods | 2min 0s | Medium | tinyxml2.XMLElement.QueryAttribute (constchar*,float*) |
PushAttribute(constchar*,constchar*) | 6 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushAttribute (constchar*,constchar*) |
PushAttribute(constchar*,int) | 6 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushAttribute (constchar*,int) |
PushAttribute(constchar*,unsignedint) | 6 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushAttribute (constchar*,unsignedint) |
PushAttribute(constchar*,int64_t) | 6 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushAttribute (constchar*,int64_t) |
PushAttribute(constchar*,bool) | 6 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushAttribute (constchar*,bool) |
PushAttribute(constchar*,double) | 6 methods | 2min 0s | Medium | tinyxml2.XMLPrinter.PushAttribute (constchar*,double) |
ToStr(int,char*,int) | 6 methods | 2min 0s | Medium | tinyxml2.XMLUtil.ToStr(int,char*,int) |
ToStr(unsignedint,char*,int) | 6 methods | 2min 0s | Medium | tinyxml2.XMLUtil.ToStr(unsignedint,char* ,int) |
Rule Violated: Avoid methods potentially poorly commented |
• How to Fix Issues: Typically add more comment. But code commenting is subject to controversy. While poorly written and designed code would needs a lot of comment to be understood, clean code doesn't need that much comment, especially if variables and methods are properly named and convey enough information. Unit-Test code can also play the role of code commenting. However, even when writing clean and well-tested code, one will have to write hacks at a point, usually to circumvent some API limitations or bugs. A hack is a non-trivial piece of code, that doesn't make sense at first glance, and that took time and web research to be found. In such situation comments must absolutely be used to express the intention, the need for the hacks and the source where the solution has been found. The estimated Debt, which means the effort to comment such method, varies linearly from 2 minutes for 10 lines of code not commented, up to 20 minutes for 200 or more, lines of code not commented.
479 methods matched
- The following list of methods is truncated and contains only the first 100 methods of the 479 methods matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
479 methods | Percentage Comment | # lines of code (LOC) | # lines of comment | nbLinesOfCodeNotCommented | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
checkFormatString(constToken*const ,constToken*const,constToken*,constbool ,constbool) | 4.14 | 672 | 29 | 643 | 20min | 13min | CheckIO.checkFormatString (constToken*const,constToken*const ,constToken*,constbool,constbool) |
simplifyTypedef() | 13.66 | 695 | 110 | 585 | 20min | 6min | Tokenizer.simplifyTypedef() |
testScanfArgument() | 1.57 | 440 | 7 | 433 | 20min | 14min | TestIO.testScanfArgument() |
createSymbolDatabaseFindAllScopes() | 17.92 | 458 | 100 | 358 | 20min | 3min 27s | SymbolDatabase .createSymbolDatabaseFindAllScopes() |
getcode(constToken*,std::list <constToken*>,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool ,unsignedint) | 14.37 | 417 | 70 | 347 | 20min | 5min | CheckMemoryLeakInFunction.getcode (constToken*,std::list<constToken*> ,constunsignedint ,CheckMemoryLeak::AllocType& ,CheckMemoryLeak::AllocType&,bool ,unsignedint) |
load(consttinyxml2::XMLDocument&) | 1.25 | 316 | 4 | 312 | 20min | 15min | Library.load(consttinyxml2::XMLDocument& ) |
ParseFromArgs(int,constchar*const*) | 16.89 | 379 | 77 | 302 | 20min | 4min 10s | CmdLineParser.ParseFromArgs(int ,constchar*const*) |
ParseFromArgs(int,constchar*const*) | 16.89 | 379 | 77 | 302 | 20min | 4min 10s | CmdLineParser.ParseFromArgs(int ,constchar*const*) |
valueFlowForward(Token*const ,constToken*const,constVariable*const ,constunsignedint,std::list <ValueFlow::Value>,constbool,constbool ,TokenList*const,ErrorLogger*const ,constSettings*const) | 9.26 | 333 | 34 | 299 | 20min | 9min | __Globals.valueFlowForward(Token*const ,constToken*const,constVariable*const ,constunsignedint,std::list <ValueFlow::Value>,constbool,constbool ,TokenList*const,ErrorLogger*const ,constSettings*const) |
setTokenValue(Token* ,constValueFlow::Value&,constSettings*) | 4.79 | 278 | 14 | 264 | 20min | 12min | __Globals.setTokenValue(Token* ,constValueFlow::Value&,constSettings*) |
preprocess(simplecpp::TokenList& ,constsimplecpp::TokenList&,std::vector <std::string>&,std::map<std::string ,TokenList*>&,constsimplecpp::DUI& ,OutputList*,std::list<MacroUsage>*) | 6.83 | 273 | 20 | 253 | 20min | 11min | simplecpp.__Globals.preprocess (simplecpp::TokenList& ,constsimplecpp::TokenList&,std::vector <std::string>&,std::map<std::string ,TokenList*>&,constsimplecpp::DUI& ,OutputList*,std::list<MacroUsage>*) |
checkFunctionVariableUsage_iterateScopes (constScope*const,Variables&,bool) | 15.62 | 308 | 57 | 251 | 20min | 5min | CheckUnusedVar .checkFunctionVariableUsage_iterateScope s(constScope*const,Variables&,bool) |
simplifyKnownVariablesSimplify(Token** ,Token*,unsignedint,conststd::string& ,std::string&,unsignedint,bool ,constToken*const,int) | 17.93 | 238 | 52 | 186 | 18min | 3min 26s | Tokenizer.simplifyKnownVariablesSimplify (Token**,Token*,unsignedint ,conststd::string&,std::string& ,unsignedint,bool,constToken*const,int) |
checkScopeForVariable(constToken* ,constVariable&,bool*const,bool*const ,CheckUninitVar::Alloc*const ,conststd::string&) | 18.21 | 229 | 51 | 178 | 17min | 3min 15s | CheckUninitVar.checkScopeForVariable (constToken*,constVariable&,bool*const ,bool*const,CheckUninitVar::Alloc*const ,conststd::string&) |
checkFileUsage() | 3.28 | 177 | 6 | 171 | 17min | 13min | CheckIO.checkFileUsage() |
simplifyVarDecl(Token*,constToken*const ,constbool) | 11.27 | 189 | 24 | 165 | 16min | 8min | Tokenizer.simplifyVarDecl(Token* ,constToken*const,constbool) |
checkScope(constToken*const,VarInfo* ,std::set<unsignedint>) | 15.25 | 200 | 36 | 164 | 16min | 5min | CheckLeakAutoVar.checkScope (constToken*const,VarInfo*,std::set <unsignedint>) |
ArgumentInfo(constToken*,constSettings* ,bool) | 5.56 | 170 | 10 | 160 | 16min | 12min | CheckIO+ArgumentInfo.ArgumentInfo (constToken*,constSettings*,bool) |
testPrintfArgument() | 13.33 | 182 | 28 | 154 | 15min | 6min | TestIO.testPrintfArgument() |
printOut(constchar*) | 0.65 | 153 | 1 | 152 | 15min | 15min | SymbolDatabase.printOut(constchar*) |
processFile(conststd::string& ,conststd::string&,std::istream&) | 15.77 | 187 | 35 | 152 | 15min | 4min 57s | CppCheck.processFile(conststd::string& ,conststd::string&,std::istream&) |
checkRedundantAssignment() | 11.34 | 172 | 22 | 150 | 15min | 8min | CheckOther.checkRedundantAssignment() |
loadFunction (consttinyxml2::XMLElement*const ,conststd::string&,std::set<std::string >&) | 3.27 | 148 | 5 | 143 | 14min | 13min | Library.loadFunction (consttinyxml2::XMLElement*const ,conststd::string&,std::set<std::string >&) |
setValueType(Token*,constValueType&,bool ,ValueType::Sign,constSettings*) | 3.31 | 146 | 5 | 141 | 14min | 13min | __Globals.setValueType(Token* ,constValueType&,bool,ValueType::Sign ,constSettings*) |
setVarIdPass1() | 13.66 | 158 | 25 | 133 | 13min | 6min | Tokenizer.setVarIdPass1() |
setValueTypeInTokenList(Token*,bool ,constSettings*) | 4.23 | 136 | 6 | 130 | 13min | 13min | SymbolDatabase.setValueTypeInTokenList (Token*,bool,constSettings*) |
valuetype() | 15.43 | 159 | 29 | 130 | 13min | 5min | TestSymbolDatabase.valuetype() |
createLinks() | 15.38 | 154 | 28 | 126 | 12min | 5min | TestTokenizer.createLinks() |
findFunction(constToken*,bool) | 16.2 | 150 | 29 | 121 | 12min | 4min 39s | Scope.findFunction(constToken*,bool) |
platform (cppcheck::Platform::PlatformType) | 3.12 | 124 | 4 | 120 | 12min | 13min | cppcheck.Platform.platform (cppcheck::Platform::PlatformType) |
uninitvar1() | 13.58 | 140 | 22 | 118 | 11min | 6min | TestUninitVar.uninitvar1() |
execute(constToken*,(anonymousnamespace )::ProgramMemory*const,MathLib::bigint* ,bool*) | 2.46 | 119 | 3 | 116 | 11min | 14min | __Globals.execute(constToken*, (anonymousnamespace )::ProgramMemory*const,MathLib::bigint* ,bool*) |
simplifyKnownVariables() | 15.48 | 142 | 26 | 116 | 11min | 5min | Tokenizer.simplifyKnownVariables() |
eraseDeadCode(Token*,constToken*) | 17.24 | 144 | 30 | 114 | 11min | 3min 55s | Tokenizer.eraseDeadCode(Token* ,constToken*) |
simplifySizeof() | 11.03 | 129 | 16 | 113 | 11min | 8min | Tokenizer.simplifySizeof() |
run() | 17.37 | 138 | 29 | 109 | 10min | 3min 50s | TestPreprocessor.run() |
string_c_str() | 9.16 | 119 | 12 | 107 | 10min | 9min | CheckStl.string_c_str() |
run() | 15.13 | 129 | 23 | 106 | 10min | 5min | TestOther.run() |
parseTokens(constTokenizer&,constchar* ,constSettings*,bool) | 12.77 | 123 | 18 | 105 | 10min | 7min | CheckUnusedFunctions.parseTokens (constTokenizer&,constchar* ,constSettings*,bool) |
readfile(std::istream&,conststd::string& ,OutputList*) | 8.06 | 114 | 10 | 104 | 10min | 10min | simplecpp.TokenList.readfile (std::istream&,conststd::string& ,OutputList*) |
valueFlowAfterCondition(TokenList* ,SymbolDatabase*,ErrorLogger* ,constSettings*) | 8.87 | 113 | 11 | 102 | 10min | 9min | __Globals.valueFlowAfterCondition (TokenList*,SymbolDatabase*,ErrorLogger* ,constSettings*) |
localvaralias1() | 4.5 | 106 | 5 | 101 | 10min | 12min | TestUnusedVar.localvaralias1() |
simplifyCalculations(Token*) | 14.29 | 120 | 20 | 100 | 10min | 6min | TemplateSimplifier.simplifyCalculations (Token*) |
testgetcode() | 18.75 | 130 | 30 | 100 | 10min | 2min 52s | TestMemleakInFunction.testgetcode() |
simplifyInitVar() | 1.92 | 102 | 2 | 100 | 10min | 14min | TestTokenizer.simplifyInitVar() |
uninitvar2() | 19.88 | 129 | 32 | 97 | 9min | 2min 5s | TestUninitVar.uninitvar2() |
isDecimalFloat() | 1.02 | 97 | 1 | 96 | 9min | 15min | TestMathLib.isDecimalFloat() |
localvar1() | 4.76 | 100 | 5 | 95 | 9min | 12min | TestUnusedVar.localvar1() |
checkGlobalAndLocalVariable() | 12.8 | 109 | 16 | 93 | 9min | 7min | CheckBufferOverrun .checkGlobalAndLocalVariable() |
calc(char,constMathLib::value& ,constMathLib::value&) | 0 | 92 | 0 | 92 | 9min | 16min | MathLib+value.calc(char ,constMathLib::value& ,constMathLib::value&) |
isDecimalFloat(conststd::string&) | 0 | 90 | 0 | 90 | 9min | 16min | MathLib.isDecimalFloat(conststd::string& ) |
setVarIdPass2() | 12.61 | 104 | 15 | 89 | 8min | 7min | Tokenizer.setVarIdPass2() |
simplifyConditions() | 10.62 | 101 | 12 | 89 | 8min | 8min | Tokenizer.simplifyConditions() |
addClassFunction(Scope**,constToken** ,constToken*) | 9.35 | 97 | 10 | 87 | 8min | 9min | SymbolDatabase.addClassFunction(Scope** ,constToken**,constToken*) |
checkIncorrectLogicOperator() | 17.29 | 110 | 23 | 87 | 8min | 3min 53s | CheckCondition .checkIncorrectLogicOperator() |
size1() | 2.22 | 88 | 2 | 86 | 8min | 14min | TestStl.size1() |
valueFlowCalculations() | 13.56 | 102 | 16 | 86 | 8min | 6min | TestValueFlow.valueFlowCalculations() |
simplifyStdType() | 5.26 | 90 | 5 | 85 | 8min | 12min | TestTokenizer.simplifyStdType() |
uninitvar2_structmembers() | 12.73 | 96 | 14 | 82 | 8min | 7min | TestUninitVar.uninitvar2_structmembers() |
valueFlowSetConstantValue(constToken* ,constSettings*,bool) | 3.49 | 83 | 3 | 80 | 8min | 13min | __Globals.valueFlowSetConstantValue (constToken*,constSettings*,bool) |
simplifyStructDecl() | 16.67 | 100 | 20 | 80 | 8min | 4min 20s | Tokenizer.simplifyStructDecl() |
isVariableUsage(constToken*,bool ,CheckUninitVar::Alloc) | 15.52 | 98 | 18 | 80 | 8min | 5min | CheckUninitVar.isVariableUsage (constToken*,bool,CheckUninitVar::Alloc) |
createAstAtToken(Token*,bool) | 3.53 | 82 | 3 | 79 | 7min | 13min | __Globals.createAstAtToken(Token*,bool) |
doublefree1() | 3.53 | 82 | 3 | 79 | 7min | 13min | TestLeakAutoVar.doublefree1() |
parsedecl(constToken*,ValueType*const ,ValueType::Sign,constSettings*) | 1.25 | 79 | 1 | 78 | 7min | 15min | __Globals.parsedecl(constToken* ,ValueType*const,ValueType::Sign ,constSettings*) |
valueFlowReverse(TokenList*,Token* ,constToken*const,ValueFlow::Value ,ValueFlow::Value,ErrorLogger* ,constSettings*) | 10.2 | 88 | 10 | 78 | 7min | 8min | __Globals.valueFlowReverse(TokenList* ,Token*,constToken*const ,ValueFlow::Value,ValueFlow::Value ,ErrorLogger*,constSettings*) |
checkPointerSizeof() | 4.65 | 82 | 4 | 78 | 7min | 12min | TestSizeof.checkPointerSizeof() |
run() | 12.62 | 90 | 13 | 77 | 7min | 7min | TestCmdlineParser.run() |
duplicateExpression1() | 11.11 | 88 | 11 | 77 | 7min | 8min | TestOther.duplicateExpression1() |
multiComparePercent(constToken* ,constchar*&,unsignedint) | 16.96 | 93 | 19 | 74 | 7min | 4min 7s | __Globals.multiComparePercent (constToken*,constchar*&,unsignedint) |
filterException(int,PEXCEPTION_POINTERS) | 3.8 | 76 | 3 | 73 | 7min | 13min | anonymous_namespace{cppcheckexecutor .cpp}.__Globals.filterException(int ,PEXCEPTION_POINTERS) |
simplifyPlatformTypes() | 9.89 | 82 | 9 | 73 | 7min | 9min | Tokenizer.simplifyPlatformTypes() |
checkScope_inner(constToken* ,constCheckBufferOverrun::ArrayInfo&) | 10.75 | 83 | 10 | 73 | 7min | 8min | CheckBufferOverrun.checkScope_inner (constToken* ,constCheckBufferOverrun::ArrayInfo&) |
checkPassByReference() | 7.06 | 79 | 6 | 73 | 7min | 11min | CheckOther.checkPassByReference() |
filterException(int,PEXCEPTION_POINTERS) | 3.8 | 76 | 3 | 73 | 7min | 13min | anonymous_namespace{cppcheckexecutor .cpp}.__Globals.filterException(int ,PEXCEPTION_POINTERS) |
normalizeCharacterLiteral (conststd::string&) | 10 | 81 | 9 | 72 | 7min | 9min | MathLib.normalizeCharacterLiteral (conststd::string&) |
isint() | 7.14 | 78 | 6 | 72 | 7min | 11min | TestMathLib.isint() |
expand(simplecpp::TokenList*const ,constsimplecpp::Location& ,constsimplecpp::Token*const ,conststd::map<TokenString,Macro>& ,std::set<TokenString>) | 9.2 | 79 | 8 | 71 | 7min | 9min | simplecpp.Macro.expand (simplecpp::TokenList*const ,constsimplecpp::Location& ,constsimplecpp::Token*const ,conststd::map<TokenString,Macro>& ,std::set<TokenString>) |
countSprintfLength() | 0 | 70 | 0 | 70 | 7min | 16min | TestBufferOverrun.countSprintfLength() |
checkConstFunc(constScope* ,constFunction*,bool&) | 14.43 | 83 | 14 | 69 | 6min | 5min | CheckClass.checkConstFunc(constScope* ,constFunction*,bool&) |
run() | 16 | 84 | 16 | 68 | 6min | 4min 48s | TestStl.run() |
simplifycode() | 17.48 | 85 | 18 | 67 | 6min | 3min 46s | TestMemleakInFunction.simplifycode() |
simplifyStructDecl1() | 2.82 | 69 | 2 | 67 | 6min | 14min | TestSimplifyTokens.simplifyStructDecl1() |
constructors() | 19.44 | 87 | 21 | 66 | 6min | 2min 23s | CheckClass.constructors() |
checkSizeofForPointerSize() | 16.33 | 82 | 16 | 66 | 6min | 4min 34s | CheckSizeof.checkSizeofForPointerSize() |
pointerDerefAndCheck() | 16.33 | 82 | 16 | 66 | 6min | 4min 34s | TestNullPointer.pointerDerefAndCheck() |
incorrectLogicOperator2() | 8.86 | 72 | 7 | 65 | 6min | 9min | TestCondition.incorrectLogicOperator2() |
enum4() | 5.48 | 69 | 4 | 65 | 6min | 12min | TestSymbolDatabase.enum4() |
isValidIntegerSuffix (std::string::const_iterator ,std::string::const_iterator) | 6.76 | 69 | 5 | 64 | 6min | 11min | MathLib.isValidIntegerSuffix (std::string::const_iterator ,std::string::const_iterator) |
printValueFlow(bool,std::ostream&) | 0 | 64 | 0 | 64 | 6min | 16min | Token.printValueFlow(bool,std::ostream&) |
countSprintfLength(conststd::string& ,conststd::list<constToken*>&) | 12.79 | 75 | 11 | 64 | 6min | 7min | CheckBufferOverrun.countSprintfLength (conststd::string&,conststd::list <constToken*>&) |
comparisonOfBoolExpressionWithInt1() | 1.52 | 65 | 1 | 64 | 6min | 14min | TestBool .comparisonOfBoolExpressionWithInt1() |
getcode(constsimplecpp::TokenList& ,conststd::string&,std::vector <std::string>&,constbool) | 4.35 | 66 | 3 | 63 | 6min | 12min | Preprocessor.getcode (constsimplecpp::TokenList& ,conststd::string&,std::vector <std::string>&,constbool) |
unreachableCode() | 15.38 | 77 | 14 | 63 | 6min | 5min | TestOther.unreachableCode() |
duplicateTypedef(Token**,constToken* ,constToken*) | 17.71 | 79 | 17 | 62 | 6min | 3min 36s | Tokenizer.duplicateTypedef(Token** ,constToken*,constToken*) |
isFunction(constToken*,constScope* ,constToken**,constToken**,constToken**) | 19 | 81 | 19 | 62 | 6min | 2min 42s | SymbolDatabase.isFunction(constToken* ,constScope*,constToken**,constToken** ,constToken**) |
checkSignOfPointer() | 0 | 62 | 0 | 62 | 6min | 16min | TestOther.checkSignOfPointer() |
isSameExpression(bool,bool,constToken* ,constToken*,constLibrary&,bool) | 8.22 | 67 | 6 | 61 | 6min | 10min | __Globals.isSameExpression(bool,bool ,constToken*,constToken*,constLibrary& ,bool) |
isFloatHex(conststd::string&) | 0 | 60 | 0 | 60 | 6min | 16min | MathLib.isFloatHex(conststd::string&) |
simplifyStructDecl3() | 0 | 60 | 0 | 60 | 6min | 16min | TestSimplifyTokens.simplifyStructDecl3() |
Rule Violated: Avoid types with poor cohesion |
• How to Fix Issues: To refactor a poorly cohesive type and increase code quality and maintainability, certainly you'll have to split the type into several smaller and more cohesive types that together, implement the same logic. The estimated Debt, which means the effort to fix such issue, varies linearly from 5 minutes for a type with a low poorCohesionScore, up to 4 hours for a type with high poorCohesionScore.
19 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
19 types | Lack of Cohesion Of Methods (LCOM) | # Methods | # Fields | poorCohesionScore | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
Settings | 0.99 | 14 | 42 | 55.16 | 4h 0min | 1h 20min | Settings |
Settings | 0.99 | 14 | 42 | 55.16 | 4h 0min | 1h 20min | Settings |
Library | 0.99 | 75 | 24 | 51.22 | 4h 0min | 1h 20min | Library |
Library | 0.99 | 75 | 24 | 51.22 | 4h 0min | 1h 20min | Library |
XMLPrinter | 0.99 | 38 | 11 | 50.43 | 4h 0min | 1h 20min | tinyxml2.XMLPrinter |
Scope | 0.99 | 30 | 21 | 42.86 | 3h 22min | 1h 7min | Scope |
XMLDocument | 0.98 | 40 | 14 | 34.21 | 2h 37min | 52min | tinyxml2.XMLDocument |
Platform | 0.98 | 12 | 18 | 31.03 | 2h 20min | 47min | cppcheck.Platform |
Platform | 0.98 | 12 | 18 | 31.03 | 2h 20min | 47min | cppcheck.Platform |
Token | 0.97 | 161 | 18 | 23.76 | 1h 42min | 34min | Token |
Token | 0.97 | 161 | 18 | 23.76 | 1h 42min | 34min | Token |
Function | 0.96 | 62 | 15 | 22.18 | 1h 34min | 31min | Function |
Library | 0.95 | 75 | 24 | 17.72 | 1h 11min | 24min | Library |
Function | 0.95 | 62 | 15 | 16.59 | 1h 5min | 22min | Function |
Settings | 0.92 | 14 | 42 | 10.64 | 34min | 11min | Settings |
Token | 0.91 | 161 | 18 | 10.03 | 31min | 10min | Token |
XMLDocument | 0.88 | 40 | 14 | 7.74 | 19min | 6min | tinyxml2.XMLDocument |
Scope | 0.84 | 30 | 21 | 5.95 | 9min | 3min 38s | Scope |
XMLPrinter | 0.84 | 39 | 11 | 5.89 | 9min | 3min 32s | tinyxml2.XMLPrinter |
Object Oriented Design | 2660 |
|
Rule Violated: Base class should not use derivatives |
• How to Fix Issues: Understand the need for using derivatives, then imagine a new design, and then refactor. Typically an algorithm in the base class needs to access something from derived classes. You can try to encapsulate this access behind an abstract or a virtual method. If you see in the base class some conditions on typeof(DerivedClass) not only urgent refactoring is needed. Such condition can easily be replaced through an abstract or a virtual method. Sometime you'll see a base class that creates instance of some derived classes. In such situation, certainly using the factory method pattern http://en.wikipedia.org/wiki/Factory_method_pattern or the abstract factory pattern http://en.wikipedia.org/wiki/Abstract_factory_pattern will improve the design. The estimated Debt, which means the effort to fix such issue, is equal to 3 minutes per derived class used by the base class + 3 minutes per member of a derived class used by the base class.
2 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
2 types | derivedClassesUsed | derivedClassesMemberUsed | Debt | Severity | Full Name |
---|---|---|---|---|---|
XMLNode | 6 types | 5 methods | 33min | High | tinyxml2.XMLNode |
XMLNode | 6 types | no member | 18min | High | tinyxml2.XMLNode |
Statistics
Stat | derivedClassesUsed | derivedClassesMemberUsed | Debt | Severity |
---|---|---|---|---|
Sum: | 12 | 5 | 51min | - |
Average: | 6 | 2.5 | 25min | - |
Minimum: | 6 | 0 | 18min | - |
Maximum: | 6 | 5 | 33min | - |
Standard deviation: | 0 | 2.5 | 7min | - |
Variance: | 0 | 6.25 | 7d 0h | - |
Rule Violated: Don't assign static fields from instance methods |
• How to Fix Issues: If the static field is just assigned once in the program lifetime, make sure to declare it as readonly and assign it inline, or from the static constructor. In Object-Oriented-Programming the natural artifact to hold states that can be modified is instance fields. Hence to fix violations of this rule, make sure to hold assignable states through instance fields, not through static fields.
13 fields matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
13 fields | assignedBy | Debt | Severity | Full Name |
---|---|---|---|---|
exename | 1 method | 5min | Medium | __Globals.exename |
missingIncludeFlag | 1 method | 5min | Medium | Preprocessor.missingIncludeFlag |
missingSystemIncludeFlag | 1 method | 5min | Medium | Preprocessor.missingSystemIncludeFlag |
BITAND | 1 method | 5min | Medium | __Globals.BITAND |
BITOR | 1 method | 5min | Medium | __Globals.BITOR |
XOR | 1 method | 5min | Medium | __Globals.XOR |
LF | 1 method | 5min | Medium | __Globals.LF |
macroChar | 2 methods | 5min | Medium | Preprocessor.macroChar |
missingIncludeFlag | 1 method | 5min | Medium | Preprocessor.missingIncludeFlag |
missingSystemIncludeFlag | 1 method | 5min | Medium | Preprocessor.missingSystemIncludeFlag |
macroChar | 1 method | 5min | Medium | Preprocessor.macroChar |
missingIncludeFlag | 2 methods | 5min | Medium | Preprocessor.missingIncludeFlag |
missingSystemIncludeFlag | 1 method | 5min | Medium | Preprocessor.missingSystemIncludeFlag |
Statistics
Stat | assignedBy | Debt | Severity |
---|---|---|---|
Sum: | 15 | 1h 5min | - |
Average: | 1.15 | 5min | - |
Minimum: | 1 | 5min | - |
Maximum: | 2 | 5min | - |
Standard deviation: | 0.36 | 0min 0s | - |
Variance: | 0.13 | 0min 0s | - |
Rule Violated: Avoid Abstract Classes with too many methods |
• How to Fix Issues: Typically to fix such issue, the interface must be refactored in a grape of smaller single-responsibility interfaces. A classic example is a ISession large interface, responsible for holding states, run commands and offer various accesses and facilities. The classic problem for a large public interface is that it has many clients that consume it. As a consequence splitting it in smaller interfaces has an important impact and it is not always feasible. The estimated Debt, which means the effort to fix such issue, varies linearly from 20 minutes for an interface with 10 methods, up to 7 hours for an interface with 100 or more methods. The Debt is divided by two if the interface is not publicly visible, because in such situation only the current project is impacted by the refactoring.
6 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
6 types | Methods | Debt | Annual Interest | Full Name |
---|---|---|---|---|
XMLNode | 54 methods | 3h 35min | 59min | tinyxml2.XMLNode |
XMLNode | 54 methods | 3h 35min | 59min | tinyxml2.XMLNode |
TestFixture | 22 methods | 1h 13min | 17min | TestFixture |
Check | 16 methods | 46min | 9min | Check |
Check | 16 methods | 46min | 9min | Check |
Check | 16 methods | 46min | 9min | Check |
Statistics
Stat | Methods | Debt | Annual Interest |
---|---|---|---|
Sum: | 178 | 1d 2h | 2h 46min |
Average: | 29.67 | 1h 47min | 27min |
Minimum: | 16 | 46min | 9min |
Maximum: | 54 | 3h 35min | 59min |
Standard deviation: | 17.34 | 1h 17min | 22min |
Variance: | 300.56 | 742d | 64d |
Rule Violated: Nested types should not be visible |
• How to Fix Issues: If you do not intend the nested type to be externally visible, change the type's accessibility. Otherwise, remove the nested type from its parent and make it non-nested. If the purpose of the nesting is to group some nested types, use a namespace to create the hierarchy instead. The estimated Debt, which means the effort to fix such issue, is 2 minutes per nested type plus 4 minutes per outter type using such nesting type.
146 types matched
- The following list of types is truncated and contains only the first 100 types of the 146 types matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
146 types | Visibility | typesUser | Debt | Severity | Full Name |
---|---|---|---|---|---|
MathLib+value | Public | no type | 2min 0s | Medium | MathLib+value |
Settings+Language | Public | no type | 2min 0s | Medium | Settings+Language |
Settings+Rule | Public | no type | 2min 0s | Medium | Settings+Rule |
Token+Type | Public | no type | 2min 0s | Medium | Token+Type |
Suppressions+SuppressionEntry | Public | no type | 2min 0s | Medium | Suppressions+SuppressionEntry |
InternalError+Type | Public | no type | 2min 0s | Medium | InternalError+Type |
Severity+SeverityType | Public | no type | 2min 0s | Medium | Severity+SeverityType |
ErrorLogger+ErrorMessage | Public | no type | 2min 0s | Medium | ErrorLogger+ErrorMessage |
ErrorLogger+ErrorMessage+FileLocation | Public | no type | 2min 0s | Medium | ErrorLogger+ErrorMessage+FileLocation |
ImportProject+FileSettings | Public | no type | 2min 0s | Medium | ImportProject+FileSettings |
Library+ErrorCode | Public | no type | 2min 0s | Medium | Library+ErrorCode |
Library+Error | Public | no type | 2min 0s | Medium | Library+Error |
Library+AllocFunc | Public | no type | 2min 0s | Medium | Library+AllocFunc |
Library+WarnInfo | Public | no type | 2min 0s | Medium | Library+WarnInfo |
Library+Container | Public | no type | 2min 0s | Medium | Library+Container |
Library+Container+Action | Public | no type | 2min 0s | Medium | Library+Container+Action |
Library+Container+Yield | Public | no type | 2min 0s | Medium | Library+Container+Yield |
Library+Container+Function | Public | no type | 2min 0s | Medium | Library+Container+Function |
Library+ArgumentChecks | Public | no type | 2min 0s | Medium | Library+ArgumentChecks |
Library+ArgumentChecks+IteratorInfo | Public | no type | 2min 0s | Medium | Library+ArgumentChecks+IteratorInfo |
Library+ArgumentChecks+MinSize | Public | no type | 2min 0s | Medium | Library+ArgumentChecks+MinSize |
Library+ArgumentChecks+MinSize+Type | Public | no type | 2min 0s | Medium | Library+ArgumentChecks+MinSize+Type |
Library+Function | Public | no type | 2min 0s | Medium | Library+Function |
Library+PodType | Public | no type | 2min 0s | Medium | Library+PodType |
Library+PlatformType | Public | no type | 2min 0s | Medium | Library+PlatformType |
Library+Platform | Public | no type | 2min 0s | Medium | Library+Platform |
Check+FileInfo | Public | no type | 2min 0s | Medium | Check+FileInfo |
Preprocessor+HeaderTypes | Public | no type | 2min 0s | Medium | Preprocessor+HeaderTypes |
Value+ValueType | Public | no type | 2min 0s | Medium | ValueFlow.Value+ValueType |
Value+MoveKind | Public | no type | 2min 0s | Medium | ValueFlow.Value+MoveKind |
Value+ValueKind | Public | no type | 2min 0s | Medium | ValueFlow.Value+ValueKind |
Platform+PlatformType | Public | no type | 2min 0s | Medium | cppcheck.Platform+PlatformType |
Output+Type | Public | no type | 2min 0s | Medium | simplecpp.Output+Type |
MathLib+value | Public | no type | 2min 0s | Medium | MathLib+value |
Token+Type | Public | no type | 2min 0s | Medium | Token+Type |
Suppressions+SuppressionEntry | Public | no type | 2min 0s | Medium | Suppressions+SuppressionEntry |
InternalError+Type | Public | no type | 2min 0s | Medium | InternalError+Type |
Severity+SeverityType | Public | no type | 2min 0s | Medium | Severity+SeverityType |
ErrorLogger+ErrorMessage | Public | no type | 2min 0s | Medium | ErrorLogger+ErrorMessage |
ErrorLogger+ErrorMessage+FileLocation | Public | no type | 2min 0s | Medium | ErrorLogger+ErrorMessage+FileLocation |
Library+ErrorCode | Public | no type | 2min 0s | Medium | Library+ErrorCode |
Library+Error | Public | no type | 2min 0s | Medium | Library+Error |
Library+AllocFunc | Public | no type | 2min 0s | Medium | Library+AllocFunc |
Library+WarnInfo | Public | no type | 2min 0s | Medium | Library+WarnInfo |
Library+Container | Public | no type | 2min 0s | Medium | Library+Container |
Library+Container+Action | Public | no type | 2min 0s | Medium | Library+Container+Action |
Library+Container+Yield | Public | no type | 2min 0s | Medium | Library+Container+Yield |
Library+Container+Function | Public | no type | 2min 0s | Medium | Library+Container+Function |
Library+ArgumentChecks | Public | no type | 2min 0s | Medium | Library+ArgumentChecks |
Library+ArgumentChecks+IteratorInfo | Public | no type | 2min 0s | Medium | Library+ArgumentChecks+IteratorInfo |
Library+ArgumentChecks+MinSize | Public | no type | 2min 0s | Medium | Library+ArgumentChecks+MinSize |
Library+ArgumentChecks+MinSize+Type | Public | no type | 2min 0s | Medium | Library+ArgumentChecks+MinSize+Type |
Library+Function | Public | no type | 2min 0s | Medium | Library+Function |
Library+PodType | Public | no type | 2min 0s | Medium | Library+PodType |
Library+PlatformType | Public | no type | 2min 0s | Medium | Library+PlatformType |
Library+Platform | Public | no type | 2min 0s | Medium | Library+Platform |
ImportProject+FileSettings | Public | no type | 2min 0s | Medium | ImportProject+FileSettings |
Settings+Language | Public | no type | 2min 0s | Medium | Settings+Language |
Settings+Rule | Public | no type | 2min 0s | Medium | Settings+Rule |
Check+FileInfo | Public | no type | 2min 0s | Medium | Check+FileInfo |
Type+NeedInitialization | Public | no type | 2min 0s | Medium | Type+NeedInitialization |
Type+BaseInfo | Public | no type | 2min 0s | Medium | Type+BaseInfo |
Type+FriendInfo | Public | no type | 2min 0s | Medium | Type+FriendInfo |
Function+Type | Public | no type | 2min 0s | Medium | Function+Type |
Scope+UsingInfo | Public | no type | 2min 0s | Medium | Scope+UsingInfo |
Scope+ScopeType | Public | no type | 2min 0s | Medium | Scope+ScopeType |
ValueType+Sign | Public | no type | 2min 0s | Medium | ValueType+Sign |
ValueType+Type | Public | no type | 2min 0s | Medium | ValueType+Type |
CheckBufferOverrun+ArrayInfo | Public | no type | 2min 0s | Medium | CheckBufferOverrun+ArrayInfo |
CheckBufferOverrun+MyFileInfo | Public | no type | 2min 0s | Medium | CheckBufferOverrun+MyFileInfo |
CheckBufferOverrun+MyFileInfo+ArrayUsage | Public | no type | 2min 0s | Medium | CheckBufferOverrun+MyFileInfo+ArrayUsage |
Filepointer+Operation | Public | no type | 2min 0s | Medium | Filepointer+Operation |
Filepointer+AppendMode | Public | no type | 2min 0s | Medium | Filepointer+AppendMode |
VarInfo+AllocStatus | Public | no type | 2min 0s | Medium | VarInfo+AllocStatus |
VarInfo+AllocInfo | Public | no type | 2min 0s | Medium | VarInfo+AllocInfo |
CheckMemoryLeak+AllocType | Public | no type | 2min 0s | Medium | CheckMemoryLeak+AllocType |
CheckUninitVar+Alloc | Public | no type | 2min 0s | Medium | CheckUninitVar+Alloc |
CheckUninitVar+MyFileInfo | Public | no type | 2min 0s | Medium | CheckUninitVar+MyFileInfo |
Variables+VariableType | Public | no type | 2min 0s | Medium | Variables+VariableType |
Variables+VariableUsage | Public | no type | 2min 0s | Medium | Variables+VariableUsage |
Variables+ScopeGuard | Public | no type | 2min 0s | Medium | Variables+ScopeGuard |
Preprocessor+HeaderTypes | Public | no type | 2min 0s | Medium | Preprocessor+HeaderTypes |
Output+Type | Public | no type | 2min 0s | Medium | simplecpp.Output+Type |
Macro+Error | Public | no type | 2min 0s | Medium | simplecpp.Macro+Error |
Macro+wrongNumberOfParameters | Public | no type | 2min 0s | Medium | simplecpp.Macro+wrongNumberOfParameters |
Macro+invalidHashHash | Public | no type | 2min 0s | Medium | simplecpp.Macro+invalidHashHash |
StrPair+AnonymousEnum | Public | no type | 2min 0s | Medium | tinyxml2.StrPair+AnonymousEnum |
MemPoolT<ITEM_SIZE>+AnonymousEnum | Public | no type | 2min 0s | Medium | tinyxml2.MemPoolT<ITEM_SIZE >+AnonymousEnum |
XMLElement+AnonymousEnum | Public | no type | 2min 0s | Medium | tinyxml2.XMLElement+AnonymousEnum |
Value+ValueType | Public | no type | 2min 0s | Medium | ValueFlow.Value+ValueType |
Value+MoveKind | Public | no type | 2min 0s | Medium | ValueFlow.Value+MoveKind |
Value+ValueKind | Public | no type | 2min 0s | Medium | ValueFlow.Value+ValueKind |
Platform+PlatformType | Public | no type | 2min 0s | Medium | cppcheck.Platform+PlatformType |
MathLib+value | Public | no type | 2min 0s | Medium | MathLib+value |
Suppressions+SuppressionEntry | Public | no type | 2min 0s | Medium | Suppressions+SuppressionEntry |
InternalError+Type | Public | no type | 2min 0s | Medium | InternalError+Type |
Severity+SeverityType | Public | no type | 2min 0s | Medium | Severity+SeverityType |
ErrorLogger+ErrorMessage | Public | no type | 2min 0s | Medium | ErrorLogger+ErrorMessage |
ErrorLogger+ErrorMessage+FileLocation | Public | no type | 2min 0s | Medium | ErrorLogger+ErrorMessage+FileLocation |
Library+ErrorCode | Public | no type | 2min 0s | Medium | Library+ErrorCode |
Statistics
Stat | Visibility | typesUser | Debt | Severity |
---|---|---|---|---|
Sum: | - | 0 | 4h 52min | - |
Average: | - | 0 | 2min 0s | - |
Minimum: | - | 0 | 2min 0s | - |
Maximum: | - | 0 | 2min 0s | - |
Standard deviation: | - | 0 | 0min 0s | - |
Variance: | - | 0 | 0min 0s | - |
Rule Violated: Projects with poor cohesion (RelationalCohesion) |
• How to Fix Issues: Matches of this present rule might reveal either assemblies with specific coding constraints (like code generated that have particular structure) either issues in design. In the second case, large refactoring can be planned not to respect this rule in particular, but to increase the overall design and code maintainability. The severity of issues of this rule is Low because the code metric Relational Cohesion is an information about the code structure state but is not actionable, it doesn't tell precisely what to do obtain a better score. Fixing actionable issues of others Architecture and Code Quality default rules will necessarily increase the Relational Cohesion scores.
1 project matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
1 project | ChildTypes | relationalCohesion | Relational cohesion | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
cppcheck | 220 types | 4.75 | 4.81 | 10min | Low | cppcheck |
Statistics
Stat | ChildTypes | relationalCohesion | Relational cohesion | Debt | Severity |
---|---|---|---|---|---|
Sum: | 220 | 4.75 | 4.81 | 10min | - |
Average: | 220 | 4.75 | 4.81 | 10min | - |
Minimum: | 220 | 4.75 | 4.81 | 10min | - |
Maximum: | 220 | 4.75 | 4.81 | 10min | - |
Standard deviation: | 0 | 0 | 0 | 0min 0s | - |
Variance: | 0 | 0 | 0 | 0min 0s | - |
Rule Violated: Constructors of abstract classes should be declared as protected or private |
// Constructors of an abstract class can only be accessed from this class and derived class.
// Declaring such a constructor with another visibility level is useless and potentially misleading.
warnif count > 0
from t in Application.Types where
t.IsClass &&
t.IsAbstract
let ctors = t.Constructors.Where(c => !c.IsProtected && !c.IsPrivate)
where ctors.Count() > 0
select new { t, ctors }
// Notice that if a constructor of an abstract class is declared as private,
// it can only be accessed from derived classes nested in the abstract class.
12 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
12 types | ctors | Full Name |
---|---|---|
TimerResultsIntf | 2 methods | TimerResultsIntf |
ErrorLogger | 2 methods | ErrorLogger |
Check | 2 methods | Check |
ErrorLogger | 2 methods | ErrorLogger |
TimerResultsIntf | 2 methods | TimerResultsIntf |
Check | 2 methods | Check |
MemPool | 2 methods | tinyxml2.MemPool |
ErrorLogger | 2 methods | ErrorLogger |
TimerResultsIntf | 2 methods | TimerResultsIntf |
Check | 2 methods | Check |
TestFixture | 2 methods | TestFixture |
MemPool | 1 method | tinyxml2.MemPool |
Statistics
Stat | ctors |
---|---|
Sum: | 23 |
Average: | 1.92 |
Minimum: | 1 |
Maximum: | 2 |
Standard deviation: | 0.28 |
Variance: | 0.076 |
CWE Rules | 1910 |
|
Rule Violated: Declaration of Catch for Generic Exception |
warnif count > 0
from m in Methods where !m.IsEntryPoint
&& m.IsUsing("Keywords.generic_catch") select m
127 methods matched
- The following list of methods is truncated and contains only the first 100 methods of the 127 methods matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
127 methods | Full Name |
---|---|
addSuppressionLine(conststd::string&) | Suppressions.addSuppressionLine (conststd::string&) |
DeserializeInvalidInput() | TestErrorLogger.DeserializeInvalidInput( ) |
wrong_syntax1() | TestGarbage.wrong_syntax1() |
wrong_syntax4() | TestGarbage.wrong_syntax4() |
wrong_syntax_if_macro() | TestGarbage.wrong_syntax_if_macro() |
syntax_case_default() | TestGarbage.syntax_case_default() |
garbageCode2() | TestGarbage.garbageCode2() |
garbageCode3() | TestGarbage.garbageCode3() |
garbageCode4() | TestGarbage.garbageCode4() |
garbageCode6() | TestGarbage.garbageCode6() |
garbageCode8() | TestGarbage.garbageCode8() |
garbageCode9() | TestGarbage.garbageCode9() |
garbageCode15() | TestGarbage.garbageCode15() |
garbageCode17() | TestGarbage.garbageCode17() |
garbageCode18() | TestGarbage.garbageCode18() |
garbageCode21() | TestGarbage.garbageCode21() |
garbageCode22() | TestGarbage.garbageCode22() |
garbageCode24() | TestGarbage.garbageCode24() |
garbageCode25() | TestGarbage.garbageCode25() |
garbageCode26() | TestGarbage.garbageCode26() |
garbageCode27() | TestGarbage.garbageCode27() |
garbageCode31() | TestGarbage.garbageCode31() |
garbageCode34() | TestGarbage.garbageCode34() |
garbageCode44() | TestGarbage.garbageCode44() |
garbageCode54() | TestGarbage.garbageCode54() |
garbageCode56() | TestGarbage.garbageCode56() |
garbageCode57() | TestGarbage.garbageCode57() |
garbageCode59() | TestGarbage.garbageCode59() |
garbageCode60() | TestGarbage.garbageCode60() |
garbageCode61() | TestGarbage.garbageCode61() |
garbageCode63() | TestGarbage.garbageCode63() |
garbageCode64() | TestGarbage.garbageCode64() |
garbageCode65() | TestGarbage.garbageCode65() |
garbageCode66() | TestGarbage.garbageCode66() |
garbageCode69() | TestGarbage.garbageCode69() |
garbageCode70() | TestGarbage.garbageCode70() |
garbageCode71() | TestGarbage.garbageCode71() |
garbageCode72() | TestGarbage.garbageCode72() |
garbageCode73() | TestGarbage.garbageCode73() |
garbageCode74() | TestGarbage.garbageCode74() |
garbageCode76() | TestGarbage.garbageCode76() |
garbageCode78() | TestGarbage.garbageCode78() |
garbageCode79() | TestGarbage.garbageCode79() |
garbageCode80() | TestGarbage.garbageCode80() |
garbageCode81() | TestGarbage.garbageCode81() |
garbageCode82() | TestGarbage.garbageCode82() |
garbageCode83() | TestGarbage.garbageCode83() |
garbageCode84() | TestGarbage.garbageCode84() |
garbageCode85() | TestGarbage.garbageCode85() |
garbageCode86() | TestGarbage.garbageCode86() |
garbageCode88() | TestGarbage.garbageCode88() |
garbageCode90() | TestGarbage.garbageCode90() |
garbageCode92() | TestGarbage.garbageCode92() |
garbageCode94() | TestGarbage.garbageCode94() |
garbageCode96() | TestGarbage.garbageCode96() |
garbageCode97() | TestGarbage.garbageCode97() |
garbageCode98() | TestGarbage.garbageCode98() |
garbageCode99() | TestGarbage.garbageCode99() |
garbageCode103() | TestGarbage.garbageCode103() |
garbageCode106() | TestGarbage.garbageCode106() |
garbageCode107() | TestGarbage.garbageCode107() |
garbageCode111() | TestGarbage.garbageCode111() |
garbageCode112() | TestGarbage.garbageCode112() |
garbageCode114() | TestGarbage.garbageCode114() |
garbageCode117() | TestGarbage.garbageCode117() |
garbageCode118() | TestGarbage.garbageCode118() |
garbageCode121() | TestGarbage.garbageCode121() |
garbageCode123() | TestGarbage.garbageCode123() |
garbageCode125() | TestGarbage.garbageCode125() |
garbageCode126() | TestGarbage.garbageCode126() |
garbageCode128() | TestGarbage.garbageCode128() |
garbageCode129() | TestGarbage.garbageCode129() |
garbageCode130() | TestGarbage.garbageCode130() |
garbageCode133() | TestGarbage.garbageCode133() |
garbageCode134() | TestGarbage.garbageCode134() |
garbageCode139() | TestGarbage.garbageCode139() |
garbageCode140() | TestGarbage.garbageCode140() |
garbageCode141() | TestGarbage.garbageCode141() |
garbageCode143() | TestGarbage.garbageCode143() |
garbageCode146() | TestGarbage.garbageCode146() |
garbageCode148() | TestGarbage.garbageCode148() |
garbageCode150() | TestGarbage.garbageCode150() |
garbageCode153() | TestGarbage.garbageCode153() |
garbageCode157() | TestGarbage.garbageCode157() |
garbageCode160() | TestGarbage.garbageCode160() |
garbageSymbolDatabase() | TestGarbage.garbageSymbolDatabase() |
garbageAST() | TestGarbage.garbageAST() |
garbageCode161() | TestGarbage.garbageCode161() |
garbageCode162() | TestGarbage.garbageCode162() |
garbageCode163() | TestGarbage.garbageCode163() |
garbageCode169() | TestGarbage.garbageCode169() |
garbageCode171() | TestGarbage.garbageCode171() |
garbageCode172() | TestGarbage.garbageCode172() |
garbageCode173() | TestGarbage.garbageCode173() |
garbageCode175() | TestGarbage.garbageCode175() |
garbageCode182() | TestGarbage.garbageCode182() |
garbageCode183() | TestGarbage.garbageCode183() |
syntaxErrorFirstToken() | TestGarbage.syntaxErrorFirstToken() |
syntaxErrorLastToken() | TestGarbage.syntaxErrorLastToken() |
calculate() | TestMathLib.calculate() |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Dead Code | 030 |
|
Rule Violated: Potentially dead Types |
warnif count > 0
let tt=Types.UsedByAny(Application.Methods).ToHashSet()
// Select types unused
let typesUnused =
from t in JustMyCode.Types where
t.NbTypesUsingMe == 0 && !t.IsGlobal select t
from t in typesUnused where !tt.Contains(t)
select new { t }
20 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
20 types | Full Name |
---|---|
MathLib | MathLib |
Timer | Timer |
Suppressions+FileMatcher | Suppressions+FileMatcher |
Severity | Severity |
DUI | simplecpp.DUI |
CheckUninitVar+MyFileInfo | CheckUninitVar+MyFileInfo |
LongFitsIntoSizeTMinusOne<false> | tinyxml2.LongFitsIntoSizeTMinusOne<false > |
Suppressions+FileMatcher | Suppressions+FileMatcher |
Severity | Severity |
Timer | Timer |
CheckBufferOverrun+MyFileInfo | CheckBufferOverrun+MyFileInfo |
CheckBufferOverrun+MyFileInfo+ArrayUsage | CheckBufferOverrun+MyFileInfo+ArrayUsage |
Scope+UsingInfo | Scope+UsingInfo |
CheckUninitVar+MyFileInfo | CheckUninitVar+MyFileInfo |
CheckUnusedFunctions+FunctionDecl | CheckUnusedFunctions+FunctionDecl |
StrPair+AnonymousEnum | tinyxml2.StrPair+AnonymousEnum |
XMLAttribute+AnonymousEnum | tinyxml2.XMLAttribute+AnonymousEnum |
XMLElement+AnonymousEnum | tinyxml2.XMLElement+AnonymousEnum |
XMLElement+AnonymousEnum | tinyxml2.XMLElement+AnonymousEnum |
XMLPrinter+AnonymousEnum | tinyxml2.XMLPrinter+AnonymousEnum |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Rule Violated: Potentially dead Methods |
warnif count > 0
// Filter procedure for methods that should'nt be considered as dead
let canMethodBeConsideredAsDeadProc = new Func<IMethod, bool>(
m => !m.IsPublic && // Public methods might be used by client applications of your Projects.
!m.IsEntryPoint && // Main() method is not used by-design.
!m.IsClassConstructor &&
!m.IsVirtual && // Only check for non virtual method that are not seen as used in IL.
!(m.IsConstructor && // Don't take account of protected ctor that might be call by a derived ctors.
m.IsProtected) &&
!m.NameLike (@"^On") && //Exclude Events like MFC ones
!m.IsGeneratedByCompiler
)
// Get methods unused
let methodsUnused =
from m in JustMyCode.Methods where
m.NbMethodsCallingMe == 0 &&
canMethodBeConsideredAsDeadProc(m)
select m
// Dead methods = methods used only by unused methods (recursive)
let deadMethodsMetric = methodsUnused.FillIterative(
methods => // Unique loop, just to let a chance to build the hashset.
from o in new[] { new object() }
// Use a hashet to make Intersect calls much faster!
let hashset = methods.ToHashSet()
from m in codeBase.Application.Methods.UsedByAny(methods).Except(methods)
where canMethodBeConsideredAsDeadProc(m) &&
// Select methods called only by methods already considered as dead
hashset.Intersect(m.MethodsCallingMe).Count() == m.NbMethodsCallingMe
select m)
from m in JustMyCode.Methods.Intersect(deadMethodsMetric.DefinitionDomain)
select new { m, m.MethodsCallingMe, depth = deadMethodsMetric[m] }
3,926 methods matched
- The following list of methods is truncated and contains only the first 100 methods of the 3926 methods matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
3 926 methods | MethodsCallingMe | depth | Full Name |
---|---|---|---|
normalizeCharacterLiteral (conststd::string&) | no method | 0 | MathLib.normalizeCharacterLiteral (conststd::string&) |
promote(constMathLib::value&) | no method | 0 | MathLib+value.promote (constMathLib::value&) |
operator=(constTimer&) | no method | 0 | Timer.operator=(constTimer&) |
Token() | no method | 0 | Token.Token() |
Token(constToken&) | no method | 0 | Token.Token(constToken&) |
operator=(constToken&) | no method | 0 | Token.operator=(constToken&) |
next(Token*) | no method | 0 | Token.next(Token*) |
previous(Token*) | no method | 0 | Token.previous(Token*) |
firstWordEquals(constchar*,constchar*) | no method | 0 | Token.firstWordEquals(constchar* ,constchar*) |
chrInFirstWord(constchar*,char) | no method | 0 | Token.chrInFirstWord(constchar*,char) |
update_property_isStandardType() | no method | 0 | Token.update_property_isStandardType() |
match(conststd::string& ,conststd::string&) | no method | 0 | Suppressions+FileMatcher.match (conststd::string&,conststd::string&) |
findAndReplace(std::string& ,conststd::string&,conststd::string&) | no method | 0 | ErrorLogger+ErrorMessage.findAndReplace (std::string&,conststd::string& ,conststd::string&) |
fixInvalidChars(conststd::string&) | no method | 0 | ErrorLogger+ErrorMessage.fixInvalidChars (conststd::string&) |
importCompileCommands(std::istream&) | no method | 0 | ImportProject.importCompileCommands (std::istream&) |
importSln(std::istream& ,conststd::string&) | no method | 0 | ImportProject.importSln(std::istream& ,conststd::string&) |
importVcxproj(conststd::string&,std::map <std::string,std::string> ,conststd::string&) | no method | 0 | ImportProject.importVcxproj (conststd::string&,std::map<std::string ,std::string>,conststd::string&) |
loadFunction (consttinyxml2::XMLElement*const ,conststd::string&,std::set<std::string >&) | no method | 0 | Library.loadFunction (consttinyxml2::XMLElement*const ,conststd::string&,std::set<std::string >&) |
getFunctionName(constToken*,bool*) | no method | 0 | Library.getFunctionName(constToken* ,bool*) |
getFunctionName(constToken*) | no method | 0 | Library.getFunctionName(constToken*) |
TokenList(constTokenList&) | no method | 0 | TokenList.TokenList(constTokenList&) |
operator=(constTokenList&) | no method | 0 | TokenList.operator=(constTokenList&) |
isFunctionHead(constToken* ,conststd::string&,bool) | no method | 0 | Tokenizer.isFunctionHead(constToken* ,conststd::string&,bool) |
simplifyWhile0() | no method | 0 | Tokenizer.simplifyWhile0() |
simplifyErrNoInWhile() | no method | 0 | Tokenizer.simplifyErrNoInWhile() |
simplifyFuncInWhile() | no method | 0 | Tokenizer.simplifyFuncInWhile() |
simplifyStd() | no method | 0 | Tokenizer.simplifyStd() |
simplifyPointerToStandardType() | no method | 0 | Tokenizer.simplifyPointerToStandardType( ) |
simplifyFunctionPointers() | no method | 0 | Tokenizer.simplifyFunctionPointers() |
cppcheckError(constToken*) | no method | 0 | Tokenizer.cppcheckError(constToken*) |
createLinks() | no method | 0 | Tokenizer.createLinks() |
createLinks2() | no method | 0 | Tokenizer.createLinks2() |
unhandled_macro_class_x_y(constToken*) | no method | 0 | Tokenizer.unhandled_macro_class_x_y (constToken*) |
validate() | no method | 0 | Tokenizer.validate() |
findGarbageCode() | no method | 0 | Tokenizer.findGarbageCode() |
isGarbageExpr(constToken*,constToken*) | no method | 0 | Tokenizer.isGarbageExpr(constToken* ,constToken*) |
simplifyDeclspec() | no method | 0 | Tokenizer.simplifyDeclspec() |
simplifyCallingConvention() | no method | 0 | Tokenizer.simplifyCallingConvention() |
simplifyAttribute() | no method | 0 | Tokenizer.simplifyAttribute() |
simplifyKeyword() | no method | 0 | Tokenizer.simplifyKeyword() |
simplifyAsm() | no method | 0 | Tokenizer.simplifyAsm() |
simplifyAsm2() | no method | 0 | Tokenizer.simplifyAsm2() |
simplifyBitfields() | no method | 0 | Tokenizer.simplifyBitfields() |
removeUnnecessaryQualification() | no method | 0 | Tokenizer.removeUnnecessaryQualification () |
simplifyNamespaceStd() | no method | 0 | Tokenizer.simplifyNamespaceStd() |
simplifyMicrosoftMemoryFunctions() | no method | 0 | Tokenizer .simplifyMicrosoftMemoryFunctions() |
simplifyMicrosoftStringFunctions() | no method | 0 | Tokenizer .simplifyMicrosoftStringFunctions() |
simplifyBorland() | no method | 0 | Tokenizer.simplifyBorland() |
simplifyQtSignalsSlots() | no method | 0 | Tokenizer.simplifyQtSignalsSlots() |
simplifyOperatorName() | no method | 0 | Tokenizer.simplifyOperatorName() |
simplifyDeprecated() | no method | 0 | Tokenizer.simplifyDeprecated() |
simplifyStrlen() | no method | 0 | Tokenizer.simplifyStrlen() |
prepareTernaryOpForAST() | no method | 0 | Tokenizer.prepareTernaryOpForAST() |
duplicateDefinition(Token**) | no method | 0 | Tokenizer.duplicateDefinition(Token**) |
reportError(constToken* ,constSeverity::SeverityType ,conststd::string&,conststd::string& ,bool) | no method | 0 | Tokenizer.reportError(constToken* ,constSeverity::SeverityType ,conststd::string&,conststd::string& ,bool) |
reportError(conststd::list<constToken*>& ,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) | no method | 0 | Tokenizer.reportError(conststd::list <constToken*>&,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) |
duplicateTypedef(Token**,constToken* ,constToken*) | no method | 0 | Tokenizer.duplicateTypedef(Token** ,constToken*,constToken*) |
unsupportedTypedef(constToken*) | no method | 0 | Tokenizer.unsupportedTypedef(constToken* ) |
setVarIdClassDeclaration (constToken*const,conststd::map <std::string,unsignedint>& ,constunsignedint,std::map<unsignedint ,std::map<std::string,unsignedint>>&) | no method | 0 | Tokenizer.setVarIdClassDeclaration (constToken*const,conststd::map <std::string,unsignedint>& ,constunsignedint,std::map<unsignedint ,std::map<std::string,unsignedint>>&) |
simplifyReturnStrncat() | no method | 0 | Tokenizer.simplifyReturnStrncat() |
printUnknownTypes() | no method | 0 | Tokenizer.printUnknownTypes() |
Tokenizer(constTokenizer&) | no method | 0 | Tokenizer.Tokenizer(constTokenizer&) |
operator=(constTokenizer&) | no method | 0 | Tokenizer.operator=(constTokenizer&) |
processFunc(Token*,bool) | no method | 0 | Tokenizer.processFunc(Token*,bool) |
setPodTypes() | no method | 0 | Tokenizer.setPodTypes() |
reportError<T,U>(constToken* ,constSeverity::SeverityType,constT ,constU) | no method | 0 | Check.reportError<T,U>(constToken* ,constSeverity::SeverityType,constT ,constU) |
reportError<T,U>(constToken* ,constSeverity::SeverityType,constT ,constU,constCWE&,bool) | no method | 0 | Check.reportError<T,U>(constToken* ,constSeverity::SeverityType,constT ,constU,constCWE&,bool) |
reportError<T,U>(conststd::list <constToken*>&,Severity::SeverityType ,constT,constU) | no method | 0 | Check.reportError<T,U>(conststd::list <constToken*>&,Severity::SeverityType ,constT,constU) |
reportError<T,U>(conststd::list <constToken*>&,Severity::SeverityType ,constT,constU,constCWE&,bool) | no method | 0 | Check.reportError<T,U>(conststd::list <constToken*>&,Severity::SeverityType ,constT,constU,constCWE&,bool) |
operator=(constCheck&) | no method | 0 | Check.operator=(constCheck&) |
Check(constCheck&) | no method | 0 | Check.Check(constCheck&) |
internalError(conststd::string& ,conststd::string&) | no method | 0 | CppCheck.internalError(conststd::string& ,conststd::string&) |
processFile(conststd::string& ,conststd::string&,std::istream&) | no method | 0 | CppCheck.processFile(conststd::string& ,conststd::string&,std::istream&) |
checkRawTokens(constTokenizer&) | no method | 0 | CppCheck.checkRawTokens(constTokenizer&) |
checkNormalTokens(constTokenizer&) | no method | 0 | CppCheck.checkNormalTokens (constTokenizer&) |
checkSimplifiedTokens(constTokenizer&) | no method | 0 | CppCheck.checkSimplifiedTokens (constTokenizer&) |
executeRules(conststd::string& ,constTokenizer&) | no method | 0 | CppCheck.executeRules(conststd::string& ,constTokenizer&) |
reportProgress(conststd::string& ,constchar*,conststd::size_t) | no method | 0 | CppCheck.reportProgress (conststd::string&,constchar* ,conststd::size_t) |
RemoveFilename(conststd::string&) | no method | 0 | PathMatch.RemoveFilename (conststd::string&) |
removeSpaceNearNL(conststd::string&) | no method | 0 | Preprocessor.removeSpaceNearNL (conststd::string&) |
missingInclude(conststd::string& ,unsignedint,conststd::string& ,Preprocessor::HeaderTypes) | no method | 0 | Preprocessor.missingInclude (conststd::string&,unsignedint ,conststd::string& ,Preprocessor::HeaderTypes) |
error(conststd::string&,unsignedint ,conststd::string&) | no method | 0 | Preprocessor.error(conststd::string& ,unsignedint,conststd::string&) |
ThreadExecutor(constThreadExecutor&) | no method | 0 | ThreadExecutor.ThreadExecutor (constThreadExecutor&) |
operator=(constThreadExecutor&) | no method | 0 | ThreadExecutor.operator= (constThreadExecutor&) |
combineOperators() | no method | 0 | simplecpp.TokenList.combineOperators() |
constFoldUnaryNotPosNeg (simplecpp::Token*) | no method | 0 | simplecpp.TokenList .constFoldUnaryNotPosNeg (simplecpp::Token*) |
constFoldMulDivRem(simplecpp::Token*) | no method | 0 | simplecpp.TokenList.constFoldMulDivRem (simplecpp::Token*) |
constFoldAddSub(simplecpp::Token*) | no method | 0 | simplecpp.TokenList.constFoldAddSub (simplecpp::Token*) |
constFoldComparison(simplecpp::Token*) | no method | 0 | simplecpp.TokenList.constFoldComparison (simplecpp::Token*) |
constFoldBitwise(simplecpp::Token*) | no method | 0 | simplecpp.TokenList.constFoldBitwise (simplecpp::Token*) |
constFoldLogicalOp(simplecpp::Token*) | no method | 0 | simplecpp.TokenList.constFoldLogicalOp (simplecpp::Token*) |
constFoldQuestionOp(simplecpp::Token**) | no method | 0 | simplecpp.TokenList.constFoldQuestionOp (simplecpp::Token**) |
readUntil(std::istream& ,constsimplecpp::Location&,constchar ,constchar,OutputList*) | no method | 0 | simplecpp.TokenList.readUntil (std::istream&,constsimplecpp::Location& ,constchar,constchar,OutputList*) |
lastLine(int) | no method | 0 | simplecpp.TokenList.lastLine(int) |
fileIndex(conststd::string&) | no method | 0 | simplecpp.TokenList.fileIndex (conststd::string&) |
Token() | no method | 0 | Token.Token() |
Token(constToken&) | no method | 0 | Token.Token(constToken&) |
operator=(constToken&) | no method | 0 | Token.operator=(constToken&) |
TokenList(constTokenList&) | no method | 0 | TokenList.TokenList(constTokenList&) |
operator=(constTokenList&) | no method | 0 | TokenList.operator=(constTokenList&) |
Statistics
Stat | MethodsCallingMe | depth |
---|---|---|
Sum: | 5 982 | 3 503 |
Average: | 1.52 | 0.89 |
Minimum: | 0 | 0 |
Maximum: | 293 | 3 |
Standard deviation: | 8.61 | 0.41 |
Variance: | 74.13 | 0.17 |
Rule Violated: Potentially dead Fields |
warnif count > 0
from f in JustMyCode.Fields where
f.NbMethodsUsingMe == 0 &&
!f.IsPublic && // Although not recommended, public fields might be used by client applications of your Projects.
!f.IsEnumValue
// If you don't want to link CppDepend.API.dll, you can use your own IsNotDeadCodeAttribute and adapt this rule.
select f
113 fields matched
- The following list of fields is truncated and contains only the first 100 fields of the 113 fields matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
113 fields | Full Name |
---|---|
isUnsigned | MathLib+value.isUnsigned |
_results | TimerResults._results |
_str | Timer._str |
_timerResults | Timer._timerResults |
_start | Timer._start |
_showtimeMode | Timer._showtimeMode |
_stopped | Timer._stopped |
_append | Settings._append |
tokensBack | Token.tokensBack |
_suppressions | Suppressions._suppressions |
_files | Suppressions+FileMatcher._files |
_globs | Suppressions+FileMatcher._globs |
fout | AnalyzerInformation.fout |
analyzerInfoFile | AnalyzerInformation.analyzerInfoFile |
allocid | Library.allocid |
_files | Library._files |
_returnValue | Library._returnValue |
_returnValueType | Library._returnValueType |
_returnValueContainer | Library._returnValueContainer |
_reporterrors | Library._reporterrors |
_processAfterCode | Library._processAfterCode |
_keywords | Library._keywords |
_executableblocks | Library._executableblocks |
_importers | Library._importers |
_errorLogger | Tokenizer._errorLogger |
_configuration | Tokenizer._configuration |
_typeSize | Tokenizer._typeSize |
_errorList | CppCheck._errorList |
_errorLogger | CppCheck._errorLogger |
cfg | CppCheck.cfg |
exitcode | CppCheck.exitcode |
_useGlobalSuppressions | CppCheck._useGlobalSuppressions |
tooManyConfigs | CppCheck.tooManyConfigs |
fileInfo | CppCheck.fileInfo |
analyzerInformation | CppCheck.analyzerInformation |
_excludedPaths | PathMatch._excludedPaths |
_caseSensitive | PathMatch._caseSensitive |
_workingDirectory | PathMatch._workingDirectory |
_settings | Preprocessor._settings |
_errorLogger | Preprocessor._errorLogger |
tokenlists | Preprocessor.tokenlists |
files | simplecpp.TokenList.files |
isUnsigned | MathLib+value.isUnsigned |
_suppressions | Suppressions._suppressions |
_files | Suppressions+FileMatcher._files |
_globs | Suppressions+FileMatcher._globs |
allocid | Library.allocid |
_files | Library._files |
_returnValue | Library._returnValue |
_returnValueType | Library._returnValueType |
_returnValueContainer | Library._returnValueContainer |
_reporterrors | Library._reporterrors |
_processAfterCode | Library._processAfterCode |
_keywords | Library._keywords |
_executableblocks | Library._executableblocks |
_importers | Library._importers |
_results | TimerResults._results |
_str | Timer._str |
_timerResults | Timer._timerResults |
_start | Timer._start |
_showtimeMode | Timer._showtimeMode |
_stopped | Timer._stopped |
_append | Settings._append |
tokensBack | Token.tokensBack |
_errorLogger | Tokenizer._errorLogger |
_configuration | Tokenizer._configuration |
_typeSize | Tokenizer._typeSize |
fout | AnalyzerInformation.fout |
analyzerInfoFile | AnalyzerInformation.analyzerInfoFile |
_errorList | CppCheck._errorList |
_errorLogger | CppCheck._errorLogger |
cfg | CppCheck.cfg |
exitcode | CppCheck.exitcode |
_useGlobalSuppressions | CppCheck._useGlobalSuppressions |
tooManyConfigs | CppCheck.tooManyConfigs |
fileInfo | CppCheck.fileInfo |
analyzerInformation | CppCheck.analyzerInformation |
_excludedPaths | PathMatch._excludedPaths |
_caseSensitive | PathMatch._caseSensitive |
_workingDirectory | PathMatch._workingDirectory |
_settings | Preprocessor._settings |
_errorLogger | Preprocessor._errorLogger |
tokenlists | Preprocessor.tokenlists |
_tokenizer | SymbolDatabase._tokenizer |
_settings | SymbolDatabase._settings |
_errorLogger | SymbolDatabase._errorLogger |
_blankTypes | SymbolDatabase._blankTypes |
_functions | CheckUnusedFunctions._functions |
_functionDecl | CheckUnusedFunctions._functionDecl |
_functionCalls | CheckUnusedFunctions._functionCalls |
isRecordTypeWithoutSideEffectsMap | CheckUnusedVar .isRecordTypeWithoutSideEffectsMap |
isEmptyTypeMap | CheckUnusedVar.isEmptyTypeMap |
files | simplecpp.TokenList.files |
_value | tinyxml2.XMLNode._value |
_memPool | tinyxml2.XMLNode._memPool |
_name | tinyxml2.XMLAttribute._name |
_value | tinyxml2.XMLAttribute._value |
_charBuffer | tinyxml2.XMLDocument._charBuffer |
_parseCurLineNum | tinyxml2.XMLDocument._parseCurLineNum |
_elementPool | tinyxml2.XMLDocument._elementPool |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Naming Conventions | 350 |
Rule Violated: Instance fields should be prefixed with a 'm_' |
warnif count > 0 (from f in Fields where
!f.NameLike (@"^m_") &&
!f.IsStatic
// Don't hesitate to customize the regex of NameLike to your preference.
&& !f.IsGlobal && !f.IsEnumValue && !f.IsThirdParty
select new { f }).Take(10)
10 fields matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
10 fields | Full Name |
---|---|
_pathnames | CmdLineParser._pathnames |
_ignoredPaths | CmdLineParser._ignoredPaths |
_settings | CmdLineParser._settings |
_showHelp | CmdLineParser._showHelp |
_showVersion | CmdLineParser._showVersion |
_showErrorMessages | CmdLineParser._showErrorMessages |
_exitAfterPrint | CmdLineParser._exitAfterPrint |
intValue | MathLib+value.intValue |
doubleValue | MathLib+value.doubleValue |
type | MathLib+value.type |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Rule Violated: Static fields should be prefixed with a 's_' |
warnif count > 0 (from f in Fields where
!f.NameLike (@"^s_") &&
f.IsStatic && !f.IsThirdParty
select new { f }).Take(10)
// Don't hesitate to customize the regex of NameLike to your preference.
10 fields matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
10 fields | Full Name |
---|---|
emptyString | __Globals.emptyString |
exename | __Globals.exename |
_terminated | Settings._terminated |
exceptionOutput | CppCheckExecutor.exceptionOutput |
macroChar | Preprocessor.macroChar |
missingIncludeFlag | Preprocessor.missingIncludeFlag |
missingSystemIncludeFlag | Preprocessor.missingSystemIncludeFlag |
NOT | __Globals.NOT |
NOTEQ | __Globals.NOTEQ |
BITAND | __Globals.BITAND |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Rule Violated: Exception class name should be suffixed with 'Exception' |
warnif count > 0 (from t in Types where t.IsExceptionClass && !t.NameLike (@"Exception$") && !t.IsThirdParty
select new { t, t.NbLinesOfCode }).Take(10)
6 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
6 types | # lines of code (LOC) | Full Name |
---|---|---|
InternalError | 0 | InternalError |
InternalError | 9 | InternalError |
Macro+Error | 2 | simplecpp.Macro+Error |
Macro+wrongNumberOfParameters | 0 | simplecpp.Macro+wrongNumberOfParameters |
Macro+invalidHashHash | 0 | simplecpp.Macro+invalidHashHash |
InternalError | 0 | InternalError |
Statistics
Stat | # lines of code (LOC) |
---|---|
Sum: | 11 |
Average: | 1.83 |
Minimum: | 0 |
Maximum: | 9 |
Standard deviation: | 3.29 |
Variance: | 10.81 |
Rule Violated: Types name should begin with an Upper character |
warnif count > 0 (from t in Types where
!t.NameLike (@"^[A-Z]") // The name of a type should begin with an Upper letter.
&& // Except if it is generated by compiler or ...
!t.IsThirdParty && !t.IsGlobal
select new { t, t.NbLinesOfCode }).Take(10)
5 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
5 types | # lines of code (LOC) | Full Name |
---|---|---|
make_container<Cont> | 10 | make_container<Cont> |
make_container<Cont> | 10 | make_container<Cont> |
triplet | 2 | anonymous_namespace{tokenize.cpp} .triplet |
make_container<Cont> | 10 | make_container<Cont> |
options | 8 | options |
Statistics
Stat | # lines of code (LOC) |
---|---|
Sum: | 40 |
Average: | 8 |
Minimum: | 2 |
Maximum: | 10 |
Standard deviation: | 3.1 |
Variance: | 9.6 |
Rule Violated: Avoid methods with name too long |
warnif count > 0 from m in Application.Methods where
!m.IsGeneratedByCompiler
&& m.SimpleName.Length > 35 && !m.IsThirdParty
select new { m, m.SimpleName }
// The regex matches methods with name longer
// than 35 characters.
// Method Name doesn't contain the type and namespace
// prefix, FullName does.
// The regex computes the method name length from
// the beginning until the first open parenthesis
// or first lower than (for generic methods).
129 methods matched
- The following list of methods is truncated and contains only the first 100 methods of the 129 methods matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
129 methods | SimpleName | Full Name |
---|---|---|
concatenateNegativeNumberAndAnyPositive( ) | concatenateNegativeNumberAndAnyPositive | Tokenizer .concatenateNegativeNumberAndAnyPositive () |
findComplicatedSyntaxErrorsInTemplates() | findComplicatedSyntaxErrorsInTemplates | Tokenizer .findComplicatedSyntaxErrorsInTemplates( ) |
checkNullpointerFunctionCallPlausibility (constFunction*,unsignedint) | checkNullpointerFunctionCallPlausibility | __Globals .checkNullpointerFunctionCallPlausibilit y(constFunction*,unsignedint) |
findVariableTypeIncludingUsedNamespaces (constSymbolDatabase*,constScope* ,constToken*) | findVariableTypeIncludingUsedNamespaces | __Globals .findVariableTypeIncludingUsedNamespaces (constSymbolDatabase*,constScope* ,constToken*) |
isOpenParenthesisMemberFunctionCallOfVar Id(constToken*,unsignedint) | isOpenParenthesisMemberFunctionCallOfVarId | __Globals .isOpenParenthesisMemberFunctionCallOfVa rId(constToken*,unsignedint) |
concatenateNegativeNumberAndAnyPositive( ) | concatenateNegativeNumberAndAnyPositive | Tokenizer .concatenateNegativeNumberAndAnyPositive () |
findComplicatedSyntaxErrorsInTemplates() | findComplicatedSyntaxErrorsInTemplates | Tokenizer .findComplicatedSyntaxErrorsInTemplates( ) |
createSymbolDatabaseClassAndStructScopes () | createSymbolDatabaseClassAndStructScopes | SymbolDatabase .createSymbolDatabaseClassAndStructScope s() |
createSymbolDatabaseFunctionReturnTypes( ) | createSymbolDatabaseFunctionReturnTypes | SymbolDatabase .createSymbolDatabaseFunctionReturnTypes () |
createSymbolDatabaseNeedInitialization() | createSymbolDatabaseNeedInitialization | SymbolDatabase .createSymbolDatabaseNeedInitialization( ) |
createSymbolDatabaseVariableSymbolTable( ) | createSymbolDatabaseVariableSymbolTable | SymbolDatabase .createSymbolDatabaseVariableSymbolTable () |
createSymbolDatabaseSetScopePointers() | createSymbolDatabaseSetScopePointers | SymbolDatabase .createSymbolDatabaseSetScopePointers() |
createSymbolDatabaseSetFunctionPointers( ) | createSymbolDatabaseSetFunctionPointers | SymbolDatabase .createSymbolDatabaseSetFunctionPointers () |
createSymbolDatabaseSetVariablePointers( ) | createSymbolDatabaseSetVariablePointers | SymbolDatabase .createSymbolDatabaseSetVariablePointers () |
createSymbolDatabaseUnknownArrayDimensio ns() | createSymbolDatabaseUnknownArrayDimensions | SymbolDatabase .createSymbolDatabaseUnknownArrayDimensi ons() |
errorReturnAddressOfFunctionParameter (constToken*,conststd::string&) | errorReturnAddressOfFunctionParameter | CheckAutoVariables .errorReturnAddressOfFunctionParameter (constToken*,conststd::string&) |
checkComparisonOfBoolExpressionWithInt() | checkComparisonOfBoolExpressionWithInt | CheckBool .checkComparisonOfBoolExpressionWithInt( ) |
comparisonOfTwoFuncsReturningBoolError (constToken*,conststd::string& ,conststd::string&) | comparisonOfTwoFuncsReturningBoolError | CheckBool .comparisonOfTwoFuncsReturningBoolError (constToken*,conststd::string& ,conststd::string&) |
comparisonOfBoolWithInvalidComparator (constToken*,conststd::string&) | comparisonOfBoolWithInvalidComparator | CheckBool .comparisonOfBoolWithInvalidComparator (constToken*,conststd::string&) |
comparisonOfBoolExpressionWithIntError (constToken*,bool) | comparisonOfBoolExpressionWithIntError | CheckBool .comparisonOfBoolExpressionWithIntError (constToken*,bool) |
operatorEqShouldBeLeftUnimplementedError (constToken*) | operatorEqShouldBeLeftUnimplementedError | CheckClass .operatorEqShouldBeLeftUnimplementedErro r(constToken*) |
operatorEqMissingReturnStatementError (constToken*,bool) | operatorEqMissingReturnStatementError | CheckClass .operatorEqMissingReturnStatementError (constToken*,bool) |
getFirstPureVirtualFunctionCallStack (std::map<constFunction*,std::list <constToken*>>&,constToken&,std::list <constToken*>&) | getFirstPureVirtualFunctionCallStack | CheckClass .getFirstPureVirtualFunctionCallStack (std::map<constFunction*,std::list <constToken*>>&,constToken&,std::list <constToken*>&) |
checkComparisonFunctionIsAlwaysTrueOrFal se() | checkComparisonFunctionIsAlwaysTrueOrFalse | CheckOther .checkComparisonFunctionIsAlwaysTrueOrFa lse() |
checkComparisonFunctionIsAlwaysTrueOrFal seError(constToken*,conststd::string& ,conststd::string&,constbool) | checkComparisonFunctionIsAlwaysTrueOrFalseError | CheckOther .checkComparisonFunctionIsAlwaysTrueOrFa lseError(constToken*,conststd::string& ,conststd::string&,constbool) |
redundantBitwiseOperationInSwitchError (constToken*,conststd::string&) | redundantBitwiseOperationInSwitchError | CheckOther .redundantBitwiseOperationInSwitchError (constToken*,conststd::string&) |
isMovedParameterAllowedForInconclusiveFu nction(constToken*) | isMovedParameterAllowedForInconclusiveFunction | CheckOther .isMovedParameterAllowedForInconclusiveF unction(constToken*) |
alwaysTrueStringVariableCompareError (constToken*,conststd::string& ,conststd::string&) | alwaysTrueStringVariableCompareError | CheckString .alwaysTrueStringVariableCompareError (constToken*,conststd::string& ,conststd::string&) |
unhandledExceptionSpecificationError (constToken*const,constToken*const ,conststd::string&) | unhandledExceptionSpecificationError | CheckExceptionSafety .unhandledExceptionSpecificationError (constToken*const,constToken*const ,conststd::string&) |
wrongPrintfScanfPosixParameterPositionEr ror(constToken*,conststd::string& ,unsignedint,unsignedint) | wrongPrintfScanfPosixParameterPositionError | CheckIO .wrongPrintfScanfPosixParameterPositionE rror(constToken*,conststd::string& ,unsignedint,unsignedint) |
checkFunctionVariableUsage_iterateScopes (constScope*const,Variables&,bool) | checkFunctionVariableUsage_iterateScopes | CheckUnusedVar .checkFunctionVariableUsage_iterateScope s(constScope*const,Variables&,bool) |
checkComplicatedSyntaxErrorsInTemplates (constToken*) | checkComplicatedSyntaxErrorsInTemplates | TemplateSimplifier .checkComplicatedSyntaxErrorsInTemplates (constToken*) |
concatenateNegativeNumberAndAnyPositive( ) | concatenateNegativeNumberAndAnyPositive | Tokenizer .concatenateNegativeNumberAndAnyPositive () |
findComplicatedSyntaxErrorsInTemplates() | findComplicatedSyntaxErrorsInTemplates | Tokenizer .findComplicatedSyntaxErrorsInTemplates( ) |
errorReturnAddressOfFunctionParameter (constToken*,conststd::string&) | errorReturnAddressOfFunctionParameter | CheckAutoVariables .errorReturnAddressOfFunctionParameter (constToken*,conststd::string&) |
checkComparisonOfBoolExpressionWithInt() | checkComparisonOfBoolExpressionWithInt | CheckBool .checkComparisonOfBoolExpressionWithInt( ) |
comparisonOfTwoFuncsReturningBoolError (constToken*,conststd::string& ,conststd::string&) | comparisonOfTwoFuncsReturningBoolError | CheckBool .comparisonOfTwoFuncsReturningBoolError (constToken*,conststd::string& ,conststd::string&) |
comparisonOfBoolWithInvalidComparator (constToken*,conststd::string&) | comparisonOfBoolWithInvalidComparator | CheckBool .comparisonOfBoolWithInvalidComparator (constToken*,conststd::string&) |
comparisonOfBoolExpressionWithIntError (constToken*,bool) | comparisonOfBoolExpressionWithIntError | CheckBool .comparisonOfBoolExpressionWithIntError (constToken*,bool) |
array_index_same_struct_and_var_name() | array_index_same_struct_and_var_name | TestBufferOverrun .array_index_same_struct_and_var_name() |
buffer_overrun_function_array_argument() | buffer_overrun_function_array_argument | TestBufferOverrun .buffer_overrun_function_array_argument( ) |
checkComparisonFunctionIsAlwaysTrueOrFal se() | checkComparisonFunctionIsAlwaysTrueOrFalse | CheckOther .checkComparisonFunctionIsAlwaysTrueOrFa lse() |
checkComparisonFunctionIsAlwaysTrueOrFal seError(constToken*,conststd::string& ,conststd::string&,constbool) | checkComparisonFunctionIsAlwaysTrueOrFalseError | CheckOther .checkComparisonFunctionIsAlwaysTrueOrFa lseError(constToken*,conststd::string& ,conststd::string&,constbool) |
redundantBitwiseOperationInSwitchError (constToken*,conststd::string&) | redundantBitwiseOperationInSwitchError | CheckOther .redundantBitwiseOperationInSwitchError (constToken*,conststd::string&) |
isMovedParameterAllowedForInconclusiveFu nction(constToken*) | isMovedParameterAllowedForInconclusiveFunction | CheckOther .isMovedParameterAllowedForInconclusiveF unction(constToken*) |
operatorEqShouldBeLeftUnimplementedError (constToken*) | operatorEqShouldBeLeftUnimplementedError | CheckClass .operatorEqShouldBeLeftUnimplementedErro r(constToken*) |
operatorEqMissingReturnStatementError (constToken*,bool) | operatorEqMissingReturnStatementError | CheckClass .operatorEqMissingReturnStatementError (constToken*,bool) |
getFirstPureVirtualFunctionCallStack (std::map<constFunction*,std::list <constToken*>>&,constToken&,std::list <constToken*>&) | getFirstPureVirtualFunctionCallStack | CheckClass .getFirstPureVirtualFunctionCallStack (std::map<constFunction*,std::list <constToken*>>&,constToken&,std::list <constToken*>&) |
assigningPointerToPointerIsNotAConstOper ation() | assigningPointerToPointerIsNotAConstOperation | TestClass .assigningPointerToPointerIsNotAConstOpe ration() |
assigningArrayElementIsNotAConstOperatio n() | assigningArrayElementIsNotAConstOperation | TestClass .assigningArrayElementIsNotAConstOperati on() |
secondAlwaysTrueFalseWhenFirstTrueError( ) | secondAlwaysTrueFalseWhenFirstTrueError | TestCondition .secondAlwaysTrueFalseWhenFirstTrueError () |
unhandledExceptionSpecificationError (constToken*const,constToken*const ,conststd::string&) | unhandledExceptionSpecificationError | CheckExceptionSafety .unhandledExceptionSpecificationError (constToken*const,constToken*const ,conststd::string&) |
wrongPrintfScanfPosixParameterPositionEr ror(constToken*,conststd::string& ,unsignedint,unsignedint) | wrongPrintfScanfPosixParameterPositionError | CheckIO .wrongPrintfScanfPosixParameterPositionE rror(constToken*,conststd::string& ,unsignedint,unsignedint) |
testPosixPrintfScanfParameterPosition() | testPosixPrintfScanfParameterPosition | TestIO .testPosixPrintfScanfParameterPosition() |
createSymbolDatabaseClassAndStructScopes () | createSymbolDatabaseClassAndStructScopes | SymbolDatabase .createSymbolDatabaseClassAndStructScope s() |
createSymbolDatabaseFunctionReturnTypes( ) | createSymbolDatabaseFunctionReturnTypes | SymbolDatabase .createSymbolDatabaseFunctionReturnTypes () |
createSymbolDatabaseNeedInitialization() | createSymbolDatabaseNeedInitialization | SymbolDatabase .createSymbolDatabaseNeedInitialization( ) |
createSymbolDatabaseVariableSymbolTable( ) | createSymbolDatabaseVariableSymbolTable | SymbolDatabase .createSymbolDatabaseVariableSymbolTable () |
createSymbolDatabaseSetScopePointers() | createSymbolDatabaseSetScopePointers | SymbolDatabase .createSymbolDatabaseSetScopePointers() |
createSymbolDatabaseSetFunctionPointers( ) | createSymbolDatabaseSetFunctionPointers | SymbolDatabase .createSymbolDatabaseSetFunctionPointers () |
createSymbolDatabaseSetVariablePointers( ) | createSymbolDatabaseSetVariablePointers | SymbolDatabase .createSymbolDatabaseSetVariablePointers () |
createSymbolDatabaseUnknownArrayDimensio ns() | createSymbolDatabaseUnknownArrayDimensions | SymbolDatabase .createSymbolDatabaseUnknownArrayDimensi ons() |
prohibitedFunctions_declaredFunction() | prohibitedFunctions_declaredFunction | TestFunctions .prohibitedFunctions_declaredFunction() |
prohibitedFunctions_functionWithBody() | prohibitedFunctions_functionWithBody | TestFunctions .prohibitedFunctions_functionWithBody() |
prohibitedFunctions_namespaceHandling() | prohibitedFunctions_namespaceHandling | TestFunctions .prohibitedFunctions_namespaceHandling() |
testMisusedScopeObjectDoesNotPickFunctio n1() | testMisusedScopeObjectDoesNotPickFunction1 | TestOther .testMisusedScopeObjectDoesNotPickFuncti on1() |
testMisusedScopeObjectDoesNotPickFunctio n2() | testMisusedScopeObjectDoesNotPickFunction2 | TestOther .testMisusedScopeObjectDoesNotPickFuncti on2() |
testMisusedScopeObjectDoesNotPickConstru ctorDeclaration() | testMisusedScopeObjectDoesNotPickConstructorDeclaration | TestOther .testMisusedScopeObjectDoesNotPickConstr uctorDeclaration() |
testMisusedScopeObjectDoesNotPickFunctor () | testMisusedScopeObjectDoesNotPickFunctor | TestOther .testMisusedScopeObjectDoesNotPickFuncto r() |
testMisusedScopeObjectDoesNotPickLocalCl assConstructors() | testMisusedScopeObjectDoesNotPickLocalClassConstructors | TestOther .testMisusedScopeObjectDoesNotPickLocalC lassConstructors() |
testMisusedScopeObjectDoesNotPickUsedObj ect() | testMisusedScopeObjectDoesNotPickUsedObject | TestOther .testMisusedScopeObjectDoesNotPickUsedOb ject() |
testMisusedScopeObjectDoesNotPickPureC() | testMisusedScopeObjectDoesNotPickPureC | TestOther .testMisusedScopeObjectDoesNotPickPureC( ) |
testMisusedScopeObjectDoesNotPickNestedC lass() | testMisusedScopeObjectDoesNotPickNestedClass | TestOther .testMisusedScopeObjectDoesNotPickNested Class() |
checkComparisonFunctionIsAlwaysTrueOrFal se() | checkComparisonFunctionIsAlwaysTrueOrFalse | TestOther .checkComparisonFunctionIsAlwaysTrueOrFa lse() |
testEvaluationOrderSequencePointsFunctio nCall() | testEvaluationOrderSequencePointsFunctionCall | TestOther .testEvaluationOrderSequencePointsFuncti onCall() |
testEvaluationOrderSequencePointsComma() | testEvaluationOrderSequencePointsComma | TestOther .testEvaluationOrderSequencePointsComma( ) |
moveAndFunctionParameterConstReference() | moveAndFunctionParameterConstReference | TestOther .moveAndFunctionParameterConstReference( ) |
inline_suppression_for_missing_include() | inline_suppression_for_missing_include | TestPreprocessor .inline_suppression_for_missing_include( ) |
checkComplicatedSyntaxErrorsInTemplates (constToken*) | checkComplicatedSyntaxErrorsInTemplates | TemplateSimplifier .checkComplicatedSyntaxErrorsInTemplates (constToken*) |
alwaysTrueStringVariableCompareError (constToken*,conststd::string& ,conststd::string&) | alwaysTrueStringVariableCompareError | CheckString .alwaysTrueStringVariableCompareError (constToken*,conststd::string& ,conststd::string&) |
test_isVariableDeclarationCanHandleNull( ) | test_isVariableDeclarationCanHandleNull | TestSymbolDatabase .test_isVariableDeclarationCanHandleNull () |
test_isVariableDeclarationIdentifiesSimp leDeclaration() | test_isVariableDeclarationIdentifiesSimpleDeclaration | TestSymbolDatabase .test_isVariableDeclarationIdentifiesSim pleDeclaration() |
test_isVariableDeclarationIdentifiesInit ialization() | test_isVariableDeclarationIdentifiesInitialization | TestSymbolDatabase .test_isVariableDeclarationIdentifiesIni tialization() |
test_isVariableDeclarationIdentifiesCpp1 1Initialization() | test_isVariableDeclarationIdentifiesCpp11Initialization | TestSymbolDatabase .test_isVariableDeclarationIdentifiesCpp 11Initialization() |
test_isVariableDeclarationIdentifiesScop edDeclaration() | test_isVariableDeclarationIdentifiesScopedDeclaration | TestSymbolDatabase .test_isVariableDeclarationIdentifiesSco pedDeclaration() |
test_isVariableDeclarationIdentifiesStdD eclaration() | test_isVariableDeclarationIdentifiesStdDeclaration | TestSymbolDatabase .test_isVariableDeclarationIdentifiesStd Declaration() |
test_isVariableDeclarationIdentifiesScop edStdDeclaration() | test_isVariableDeclarationIdentifiesScopedStdDeclaration | TestSymbolDatabase .test_isVariableDeclarationIdentifiesSco pedStdDeclaration() |
test_isVariableDeclarationIdentifiesMany Scopes() | test_isVariableDeclarationIdentifiesManyScopes | TestSymbolDatabase .test_isVariableDeclarationIdentifiesMan yScopes() |
test_isVariableDeclarationIdentifiesPoin ters() | test_isVariableDeclarationIdentifiesPointers | TestSymbolDatabase .test_isVariableDeclarationIdentifiesPoi nters() |
test_isVariableDeclarationDoesNotIdentif yConstness() | test_isVariableDeclarationDoesNotIdentifyConstness | TestSymbolDatabase .test_isVariableDeclarationDoesNotIdenti fyConstness() |
test_isVariableDeclarationIdentifiesFirs tOfManyVariables() | test_isVariableDeclarationIdentifiesFirstOfManyVariables | TestSymbolDatabase .test_isVariableDeclarationIdentifiesFir stOfManyVariables() |
test_isVariableDeclarationIdentifiesScop edPointerDeclaration() | test_isVariableDeclarationIdentifiesScopedPointerDeclaration | TestSymbolDatabase .test_isVariableDeclarationIdentifiesSco pedPointerDeclaration() |
test_isVariableDeclarationIdentifiesDecl arationWithIndirection() | test_isVariableDeclarationIdentifiesDeclarationWithIndirection | TestSymbolDatabase .test_isVariableDeclarationIdentifiesDec larationWithIndirection() |
test_isVariableDeclarationIdentifiesDecl arationWithMultipleIndirection() | test_isVariableDeclarationIdentifiesDeclarationWithMultipleIndirection | TestSymbolDatabase .test_isVariableDeclarationIdentifiesDec larationWithMultipleIndirection() |
test_isVariableDeclarationIdentifiesArra y() | test_isVariableDeclarationIdentifiesArray | TestSymbolDatabase .test_isVariableDeclarationIdentifiesArr ay() |
test_isVariableDeclarationIdentifiesPoin terArray() | test_isVariableDeclarationIdentifiesPointerArray | TestSymbolDatabase .test_isVariableDeclarationIdentifiesPoi nterArray() |
test_isVariableDeclarationIdentifiesOfAr rayPointers() | test_isVariableDeclarationIdentifiesOfArrayPointers | TestSymbolDatabase .test_isVariableDeclarationIdentifiesOfA rrayPointers() |
isVariableDeclarationIdentifiesTemplated PointerVariable() | isVariableDeclarationIdentifiesTemplatedPointerVariable | TestSymbolDatabase .isVariableDeclarationIdentifiesTemplate dPointerVariable() |
isVariableDeclarationIdentifiesTemplated PointerToPointerVariable() | isVariableDeclarationIdentifiesTemplatedPointerToPointerVariable | TestSymbolDatabase .isVariableDeclarationIdentifiesTemplate dPointerToPointerVariable() |
isVariableDeclarationIdentifiesTemplated ArrayVariable() | isVariableDeclarationIdentifiesTemplatedArrayVariable | TestSymbolDatabase .isVariableDeclarationIdentifiesTemplate dArrayVariable() |
Statistics
Stat | SimpleName |
---|---|
Sum: | - |
Average: | - |
Minimum: | - |
Maximum: | - |
Standard deviation: | - |
Variance: | - |
Quality Gates
|
Code Query: Quality Gates Evolution |
8 quality gates matched
8 quality gates | Evolution | BaselineStatus | Status | BaselineValue | Value | Full Name |
---|---|---|---|---|---|---|
Blocker Issues | Pass | Pass | 0 issues | 0 issues | Quality Gate | |
Critical Issues | Warn | Warn | 5 issues | 5 issues | Quality Gate | |
New Blocker / Critical / High Issues | N/A | N/A | Pass | null | 0 issues | Quality Gate |
Critical Rules Violated | Fail | Fail | 3 rules | 3 rules | Quality Gate | |
Percentage Debt | Pass | Pass | 13.6 % | 13.6 % | Quality Gate | |
New Debt since Baseline | N/A | N/A | Pass | null | 0 man-days | Quality Gate |
Debt Rating per Namespace | Fail | Fail | 3 namespaces | 3 namespaces | Quality Gate | |
New Annual Interest since Baseline | N/A | N/A | Pass | null | 0 man-days | Quality Gate |
Statistics
Stat | Evolution | BaselineStatus | Status | BaselineValue | Value |
---|---|---|---|---|---|
Sum: | - | - | - | - | - |
Average: | - | - | - | - | - |
Minimum: | - | - | - | - | - |
Maximum: | - | - | - | - | - |
Standard deviation: | - | - | - | - | - |
Variance: | - | - | - | - | - |
Quality Gate Pass: Percentage Code Coverage |
Scalar Result: N/A %
Quality Gate Pass: Percentage Coverage on New Code |
Scalar Result: N/A %
Quality Gate Pass: Percentage Coverage on Refactored Code |
Scalar Result: N/A %
Quality Gate Pass: Blocker Issues |
No issue matched
Quality Gate Warn: Critical Issues |
5 issues matched
5 issues | Severity | Debt | Annual Interest | Full Name |
---|---|---|---|---|
Critical issue on: Tokenizer | Critical | 1d 2h | 2h 0min | Rule violated: Avoid types too big |
Critical issue on: TestTokenizer | Critical | 1d 2h | 2h 0min | Rule violated: Avoid types too big |
Critical issue on: TestSymbolDatabase | Critical | 1d 2h | 2h 0min | Rule violated: Avoid types too big |
Critical issue on: TestTokenizer | Critical | 1d 2h | 2h 0min | Rule violated: Avoid types with too many methods |
Critical issue on: Tokenizer.simplifyTypedef() | Critical | 6h 0min | 2h 0min | Rule violated: Avoid methods with too many local variables |
Statistics
Stat | Severity | Debt | Annual Interest |
---|---|---|---|
Sum: | - | 5d 6h | 1d 2h |
Average: | - | 1d 1h | 2h 0min |
Minimum: | - | 6h 0min | 2h 0min |
Maximum: | - | 1d 2h | 2h 0min |
Standard deviation: | - | 1h 36min | 0min 0s |
Variance: | - | 1 152d | 0min 0s |
Quality Gate Pass: New Blocker / Critical / High Issues |
No issue matched
Quality Gate Fail: Critical Rules Violated |
3 rules matched
3 rules | issues | Full Name |
---|---|---|
Avoid types too big | 66 issues | Rule |
Avoid methods too big, too complex | 433 issues | Rule |
Avoid methods with too many parameters | 32 issues | Rule |
Statistics
Stat | issues |
---|---|
Sum: | 531 |
Average: | 177 |
Minimum: | 32 |
Maximum: | 433 |
Standard deviation: | 181.55 |
Variance: | 32 961 |
Quality Gate Pass: Percentage Debt |
Scalar Result: 13.6 %
Quality Gate Pass: New Debt since Baseline |
Scalar Result: 0 man-days
Quality Gate Fail: Debt Rating per Namespace |
3 namespaces matched
3 namespaces | debtRating | debtRatio | devTimeInManDay | debtInManDay | issues | Full Name |
---|---|---|---|---|---|---|
cppcheck | D | 39.52 | 1d 0h | 3h 31min | 3 issues | cppcheck |
cppcheck | D | 39.52 | 1d 0h | 3h 31min | 3 issues | cppcheck |
tinyxml2 | D | 20.22 | 14d 7h | 3d 0h | 129 issues | tinyxml2 |
Statistics
Stat | debtRating | debtRatio | devTimeInManDay | debtInManDay | issues |
---|---|---|---|---|---|
Sum: | - | 99.26 | 17d 1h | 3d 7h | 135 |
Average: | - | 33.09 | 5d 5h | 1d 2h | 45 |
Minimum: | - | 20.22 | 1d 0h | 3h 31min | 3 |
Maximum: | - | 39.52 | 14d 7h | 3d 0h | 129 |
Standard deviation: | - | 9.1 | 6d 4h | 1d 1h | 59.4 |
Variance: | - | 82.82 | 1 232 632d | 42 944d | 3 528 |
Quality Gate Pass: New Annual Interest since Baseline |
Scalar Result: 0 man-days
Object Oriented Design
Rule Violated: Base class should not use derivatives |
• How to Fix Issues: Understand the need for using derivatives, then imagine a new design, and then refactor. Typically an algorithm in the base class needs to access something from derived classes. You can try to encapsulate this access behind an abstract or a virtual method. If you see in the base class some conditions on typeof(DerivedClass) not only urgent refactoring is needed. Such condition can easily be replaced through an abstract or a virtual method. Sometime you'll see a base class that creates instance of some derived classes. In such situation, certainly using the factory method pattern http://en.wikipedia.org/wiki/Factory_method_pattern or the abstract factory pattern http://en.wikipedia.org/wiki/Abstract_factory_pattern will improve the design. The estimated Debt, which means the effort to fix such issue, is equal to 3 minutes per derived class used by the base class + 3 minutes per member of a derived class used by the base class.
2 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
2 types | derivedClassesUsed | derivedClassesMemberUsed | Debt | Severity | Full Name |
---|---|---|---|---|---|
XMLNode | 6 types | 5 methods | 33min | High | tinyxml2.XMLNode |
XMLNode | 6 types | no member | 18min | High | tinyxml2.XMLNode |
Statistics
Stat | derivedClassesUsed | derivedClassesMemberUsed | Debt | Severity |
---|---|---|---|---|
Sum: | 12 | 5 | 51min | - |
Average: | 6 | 2.5 | 25min | - |
Minimum: | 6 | 0 | 18min | - |
Maximum: | 6 | 5 | 33min | - |
Standard deviation: | 0 | 2.5 | 7min | - |
Variance: | 0 | 6.25 | 7d 0h | - |
Validated Rule: Class shouldn't be too deep in inheritance tree |
• How to Fix Issues: In Object-Oriented Programming, a well-known motto is Favor Composition over Inheritance. This is because inheritance comes with pitfalls. In general, the implementation of a derived class is very bound up with the base class implementation. Also a base class exposes implementation details to its derived classes, that's why it's often said that inheritance breaks encapsulation. On the other hands, Composition favors binding with interfaces over binding with implementations. Hence, not only the encapsulation is preserved, but the design is clearer, because interfaces make it explicit and less coupled. Hence, to break a long inheritance chain, Composition is often a powerful way to enhance the design of the refactored underlying logic. You can also read: http://en.wikipedia.org/wiki/Composition_over_inheritance and http://stackoverflow.com/questions/49002/prefer-composition-over-inheritance The estimated Debt, which means the effort to fix such issue, depends linearly upon the depth of inheritance.
No type matched
Validated Rule: Constructor should not call a virtual methods |
• How to Fix Issues: Violations reported can be solved by re-designing object initialisation or by declaring the parent class as sealed, if possible.
No method matched
Rule Violated: Don't assign static fields from instance methods |
• How to Fix Issues: If the static field is just assigned once in the program lifetime, make sure to declare it as readonly and assign it inline, or from the static constructor. In Object-Oriented-Programming the natural artifact to hold states that can be modified is instance fields. Hence to fix violations of this rule, make sure to hold assignable states through instance fields, not through static fields.
13 fields matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
13 fields | assignedBy | Debt | Severity | Full Name |
---|---|---|---|---|
exename | 1 method | 5min | Medium | __Globals.exename |
missingIncludeFlag | 1 method | 5min | Medium | Preprocessor.missingIncludeFlag |
missingSystemIncludeFlag | 1 method | 5min | Medium | Preprocessor.missingSystemIncludeFlag |
BITAND | 1 method | 5min | Medium | __Globals.BITAND |
BITOR | 1 method | 5min | Medium | __Globals.BITOR |
XOR | 1 method | 5min | Medium | __Globals.XOR |
LF | 1 method | 5min | Medium | __Globals.LF |
macroChar | 2 methods | 5min | Medium | Preprocessor.macroChar |
missingIncludeFlag | 1 method | 5min | Medium | Preprocessor.missingIncludeFlag |
missingSystemIncludeFlag | 1 method | 5min | Medium | Preprocessor.missingSystemIncludeFlag |
macroChar | 1 method | 5min | Medium | Preprocessor.macroChar |
missingIncludeFlag | 2 methods | 5min | Medium | Preprocessor.missingIncludeFlag |
missingSystemIncludeFlag | 1 method | 5min | Medium | Preprocessor.missingSystemIncludeFlag |
Statistics
Stat | assignedBy | Debt | Severity |
---|---|---|---|
Sum: | 15 | 1h 5min | - |
Average: | 1.15 | 5min | - |
Minimum: | 1 | 5min | - |
Maximum: | 2 | 5min | - |
Standard deviation: | 0.36 | 0min 0s | - |
Variance: | 0.13 | 0min 0s | - |
Rule Violated: Avoid Abstract Classes with too many methods |
• How to Fix Issues: Typically to fix such issue, the interface must be refactored in a grape of smaller single-responsibility interfaces. A classic example is a ISession large interface, responsible for holding states, run commands and offer various accesses and facilities. The classic problem for a large public interface is that it has many clients that consume it. As a consequence splitting it in smaller interfaces has an important impact and it is not always feasible. The estimated Debt, which means the effort to fix such issue, varies linearly from 20 minutes for an interface with 10 methods, up to 7 hours for an interface with 100 or more methods. The Debt is divided by two if the interface is not publicly visible, because in such situation only the current project is impacted by the refactoring.
6 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
6 types | Methods | Debt | Annual Interest | Full Name |
---|---|---|---|---|
XMLNode | 54 methods | 3h 35min | 59min | tinyxml2.XMLNode |
XMLNode | 54 methods | 3h 35min | 59min | tinyxml2.XMLNode |
TestFixture | 22 methods | 1h 13min | 17min | TestFixture |
Check | 16 methods | 46min | 9min | Check |
Check | 16 methods | 46min | 9min | Check |
Check | 16 methods | 46min | 9min | Check |
Statistics
Stat | Methods | Debt | Annual Interest |
---|---|---|---|
Sum: | 178 | 1d 2h | 2h 46min |
Average: | 29.67 | 1h 47min | 27min |
Minimum: | 16 | 46min | 9min |
Maximum: | 54 | 3h 35min | 59min |
Standard deviation: | 17.34 | 1h 17min | 22min |
Variance: | 300.56 | 742d | 64d |
Validated Rule: Type should not have too many responsibilities |
// Types using more than 8 different application namespaces
// are considered as having too many responsabilities.
warnif count > 0
from t in JustMyCode.Types
let applicationTypesUsed = t.TypesUsed.ExceptThirdParty().ToList()
let applicationNamespacesUsed = applicationTypesUsed.ParentNamespaces().ToList()
where applicationNamespacesUsed.Count > 8
// Use an empiric formula to sort by degree of responsabilities
let responsabilitiesMetric = (10 * applicationNamespacesUsed.Count + applicationTypesUsed.Count)/10
orderby responsabilitiesMetric descending
select new { t, applicationNamespacesUsed, applicationTypesUsed, responsabilitiesMetric }
No type matched
Rule Violated: Nested types should not be visible |
• How to Fix Issues: If you do not intend the nested type to be externally visible, change the type's accessibility. Otherwise, remove the nested type from its parent and make it non-nested. If the purpose of the nesting is to group some nested types, use a namespace to create the hierarchy instead. The estimated Debt, which means the effort to fix such issue, is 2 minutes per nested type plus 4 minutes per outter type using such nesting type.
146 types matched
- The following list of types is truncated and contains only the first 100 types of the 146 types matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
146 types | Visibility | typesUser | Debt | Severity | Full Name |
---|---|---|---|---|---|
MathLib+value | Public | no type | 2min 0s | Medium | MathLib+value |
Settings+Language | Public | no type | 2min 0s | Medium | Settings+Language |
Settings+Rule | Public | no type | 2min 0s | Medium | Settings+Rule |
Token+Type | Public | no type | 2min 0s | Medium | Token+Type |
Suppressions+SuppressionEntry | Public | no type | 2min 0s | Medium | Suppressions+SuppressionEntry |
InternalError+Type | Public | no type | 2min 0s | Medium | InternalError+Type |
Severity+SeverityType | Public | no type | 2min 0s | Medium | Severity+SeverityType |
ErrorLogger+ErrorMessage | Public | no type | 2min 0s | Medium | ErrorLogger+ErrorMessage |
ErrorLogger+ErrorMessage+FileLocation | Public | no type | 2min 0s | Medium | ErrorLogger+ErrorMessage+FileLocation |
ImportProject+FileSettings | Public | no type | 2min 0s | Medium | ImportProject+FileSettings |
Library+ErrorCode | Public | no type | 2min 0s | Medium | Library+ErrorCode |
Library+Error | Public | no type | 2min 0s | Medium | Library+Error |
Library+AllocFunc | Public | no type | 2min 0s | Medium | Library+AllocFunc |
Library+WarnInfo | Public | no type | 2min 0s | Medium | Library+WarnInfo |
Library+Container | Public | no type | 2min 0s | Medium | Library+Container |
Library+Container+Action | Public | no type | 2min 0s | Medium | Library+Container+Action |
Library+Container+Yield | Public | no type | 2min 0s | Medium | Library+Container+Yield |
Library+Container+Function | Public | no type | 2min 0s | Medium | Library+Container+Function |
Library+ArgumentChecks | Public | no type | 2min 0s | Medium | Library+ArgumentChecks |
Library+ArgumentChecks+IteratorInfo | Public | no type | 2min 0s | Medium | Library+ArgumentChecks+IteratorInfo |
Library+ArgumentChecks+MinSize | Public | no type | 2min 0s | Medium | Library+ArgumentChecks+MinSize |
Library+ArgumentChecks+MinSize+Type | Public | no type | 2min 0s | Medium | Library+ArgumentChecks+MinSize+Type |
Library+Function | Public | no type | 2min 0s | Medium | Library+Function |
Library+PodType | Public | no type | 2min 0s | Medium | Library+PodType |
Library+PlatformType | Public | no type | 2min 0s | Medium | Library+PlatformType |
Library+Platform | Public | no type | 2min 0s | Medium | Library+Platform |
Check+FileInfo | Public | no type | 2min 0s | Medium | Check+FileInfo |
Preprocessor+HeaderTypes | Public | no type | 2min 0s | Medium | Preprocessor+HeaderTypes |
Value+ValueType | Public | no type | 2min 0s | Medium | ValueFlow.Value+ValueType |
Value+MoveKind | Public | no type | 2min 0s | Medium | ValueFlow.Value+MoveKind |
Value+ValueKind | Public | no type | 2min 0s | Medium | ValueFlow.Value+ValueKind |
Platform+PlatformType | Public | no type | 2min 0s | Medium | cppcheck.Platform+PlatformType |
Output+Type | Public | no type | 2min 0s | Medium | simplecpp.Output+Type |
MathLib+value | Public | no type | 2min 0s | Medium | MathLib+value |
Token+Type | Public | no type | 2min 0s | Medium | Token+Type |
Suppressions+SuppressionEntry | Public | no type | 2min 0s | Medium | Suppressions+SuppressionEntry |
InternalError+Type | Public | no type | 2min 0s | Medium | InternalError+Type |
Severity+SeverityType | Public | no type | 2min 0s | Medium | Severity+SeverityType |
ErrorLogger+ErrorMessage | Public | no type | 2min 0s | Medium | ErrorLogger+ErrorMessage |
ErrorLogger+ErrorMessage+FileLocation | Public | no type | 2min 0s | Medium | ErrorLogger+ErrorMessage+FileLocation |
Library+ErrorCode | Public | no type | 2min 0s | Medium | Library+ErrorCode |
Library+Error | Public | no type | 2min 0s | Medium | Library+Error |
Library+AllocFunc | Public | no type | 2min 0s | Medium | Library+AllocFunc |
Library+WarnInfo | Public | no type | 2min 0s | Medium | Library+WarnInfo |
Library+Container | Public | no type | 2min 0s | Medium | Library+Container |
Library+Container+Action | Public | no type | 2min 0s | Medium | Library+Container+Action |
Library+Container+Yield | Public | no type | 2min 0s | Medium | Library+Container+Yield |
Library+Container+Function | Public | no type | 2min 0s | Medium | Library+Container+Function |
Library+ArgumentChecks | Public | no type | 2min 0s | Medium | Library+ArgumentChecks |
Library+ArgumentChecks+IteratorInfo | Public | no type | 2min 0s | Medium | Library+ArgumentChecks+IteratorInfo |
Library+ArgumentChecks+MinSize | Public | no type | 2min 0s | Medium | Library+ArgumentChecks+MinSize |
Library+ArgumentChecks+MinSize+Type | Public | no type | 2min 0s | Medium | Library+ArgumentChecks+MinSize+Type |
Library+Function | Public | no type | 2min 0s | Medium | Library+Function |
Library+PodType | Public | no type | 2min 0s | Medium | Library+PodType |
Library+PlatformType | Public | no type | 2min 0s | Medium | Library+PlatformType |
Library+Platform | Public | no type | 2min 0s | Medium | Library+Platform |
ImportProject+FileSettings | Public | no type | 2min 0s | Medium | ImportProject+FileSettings |
Settings+Language | Public | no type | 2min 0s | Medium | Settings+Language |
Settings+Rule | Public | no type | 2min 0s | Medium | Settings+Rule |
Check+FileInfo | Public | no type | 2min 0s | Medium | Check+FileInfo |
Type+NeedInitialization | Public | no type | 2min 0s | Medium | Type+NeedInitialization |
Type+BaseInfo | Public | no type | 2min 0s | Medium | Type+BaseInfo |
Type+FriendInfo | Public | no type | 2min 0s | Medium | Type+FriendInfo |
Function+Type | Public | no type | 2min 0s | Medium | Function+Type |
Scope+UsingInfo | Public | no type | 2min 0s | Medium | Scope+UsingInfo |
Scope+ScopeType | Public | no type | 2min 0s | Medium | Scope+ScopeType |
ValueType+Sign | Public | no type | 2min 0s | Medium | ValueType+Sign |
ValueType+Type | Public | no type | 2min 0s | Medium | ValueType+Type |
CheckBufferOverrun+ArrayInfo | Public | no type | 2min 0s | Medium | CheckBufferOverrun+ArrayInfo |
CheckBufferOverrun+MyFileInfo | Public | no type | 2min 0s | Medium | CheckBufferOverrun+MyFileInfo |
CheckBufferOverrun+MyFileInfo+ArrayUsage | Public | no type | 2min 0s | Medium | CheckBufferOverrun+MyFileInfo+ArrayUsage |
Filepointer+Operation | Public | no type | 2min 0s | Medium | Filepointer+Operation |
Filepointer+AppendMode | Public | no type | 2min 0s | Medium | Filepointer+AppendMode |
VarInfo+AllocStatus | Public | no type | 2min 0s | Medium | VarInfo+AllocStatus |
VarInfo+AllocInfo | Public | no type | 2min 0s | Medium | VarInfo+AllocInfo |
CheckMemoryLeak+AllocType | Public | no type | 2min 0s | Medium | CheckMemoryLeak+AllocType |
CheckUninitVar+Alloc | Public | no type | 2min 0s | Medium | CheckUninitVar+Alloc |
CheckUninitVar+MyFileInfo | Public | no type | 2min 0s | Medium | CheckUninitVar+MyFileInfo |
Variables+VariableType | Public | no type | 2min 0s | Medium | Variables+VariableType |
Variables+VariableUsage | Public | no type | 2min 0s | Medium | Variables+VariableUsage |
Variables+ScopeGuard | Public | no type | 2min 0s | Medium | Variables+ScopeGuard |
Preprocessor+HeaderTypes | Public | no type | 2min 0s | Medium | Preprocessor+HeaderTypes |
Output+Type | Public | no type | 2min 0s | Medium | simplecpp.Output+Type |
Macro+Error | Public | no type | 2min 0s | Medium | simplecpp.Macro+Error |
Macro+wrongNumberOfParameters | Public | no type | 2min 0s | Medium | simplecpp.Macro+wrongNumberOfParameters |
Macro+invalidHashHash | Public | no type | 2min 0s | Medium | simplecpp.Macro+invalidHashHash |
StrPair+AnonymousEnum | Public | no type | 2min 0s | Medium | tinyxml2.StrPair+AnonymousEnum |
MemPoolT<ITEM_SIZE>+AnonymousEnum | Public | no type | 2min 0s | Medium | tinyxml2.MemPoolT<ITEM_SIZE >+AnonymousEnum |
XMLElement+AnonymousEnum | Public | no type | 2min 0s | Medium | tinyxml2.XMLElement+AnonymousEnum |
Value+ValueType | Public | no type | 2min 0s | Medium | ValueFlow.Value+ValueType |
Value+MoveKind | Public | no type | 2min 0s | Medium | ValueFlow.Value+MoveKind |
Value+ValueKind | Public | no type | 2min 0s | Medium | ValueFlow.Value+ValueKind |
Platform+PlatformType | Public | no type | 2min 0s | Medium | cppcheck.Platform+PlatformType |
MathLib+value | Public | no type | 2min 0s | Medium | MathLib+value |
Suppressions+SuppressionEntry | Public | no type | 2min 0s | Medium | Suppressions+SuppressionEntry |
InternalError+Type | Public | no type | 2min 0s | Medium | InternalError+Type |
Severity+SeverityType | Public | no type | 2min 0s | Medium | Severity+SeverityType |
ErrorLogger+ErrorMessage | Public | no type | 2min 0s | Medium | ErrorLogger+ErrorMessage |
ErrorLogger+ErrorMessage+FileLocation | Public | no type | 2min 0s | Medium | ErrorLogger+ErrorMessage+FileLocation |
Library+ErrorCode | Public | no type | 2min 0s | Medium | Library+ErrorCode |
Statistics
Stat | Visibility | typesUser | Debt | Severity |
---|---|---|---|---|
Sum: | - | 0 | 4h 52min | - |
Average: | - | 0 | 2min 0s | - |
Minimum: | - | 0 | 2min 0s | - |
Maximum: | - | 0 | 2min 0s | - |
Standard deviation: | - | 0 | 0min 0s | - |
Variance: | - | 0 | 0min 0s | - |
Rule Violated: Projects with poor cohesion (RelationalCohesion) |
• How to Fix Issues: Matches of this present rule might reveal either assemblies with specific coding constraints (like code generated that have particular structure) either issues in design. In the second case, large refactoring can be planned not to respect this rule in particular, but to increase the overall design and code maintainability. The severity of issues of this rule is Low because the code metric Relational Cohesion is an information about the code structure state but is not actionable, it doesn't tell precisely what to do obtain a better score. Fixing actionable issues of others Architecture and Code Quality default rules will necessarily increase the Relational Cohesion scores.
1 project matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
1 project | ChildTypes | relationalCohesion | Relational cohesion | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
cppcheck | 220 types | 4.75 | 4.81 | 10min | Low | cppcheck |
Statistics
Stat | ChildTypes | relationalCohesion | Relational cohesion | Debt | Severity |
---|---|---|---|---|---|
Sum: | 220 | 4.75 | 4.81 | 10min | - |
Average: | 220 | 4.75 | 4.81 | 10min | - |
Minimum: | 220 | 4.75 | 4.81 | 10min | - |
Maximum: | 220 | 4.75 | 4.81 | 10min | - |
Standard deviation: | 0 | 0 | 0 | 0min 0s | - |
Variance: | 0 | 0 | 0 | 0min 0s | - |
Validated Rule: Projects that don't satisfy the Abstractness/Instability principle |
• How to Fix Issues: Violations of this rule indicate assemblies with an improper abstractness / stability balance. • Either the assembly is potentially painful to maintain (i.e is massively used and contains mostly concrete types). This can be fixed by creating abstractions to avoid too high coupling with concrete implementations. • Either the assembly is potentially useless (i.e contains mostly abstractions and is not used enough). In such situation, the design must be reviewed to see if it can be enhanced. The severity of issues of this rule is Low because the Abstractness/Instability principle is an information about the code structure state but is not actionable, it doesn't tell precisely what to do obtain a better score. Fixing actionable issues of others Architecture and Code Quality default rules will necessarily push the Abstractness/Instability principle scores in the right direction.
No project matched
Code Query: Higher cohesion - lower coupling |
// It is deemed as a good software architecture practice to clearly separate
// 'abstract' namespaces containing only abstractions (interfaces, enumerations, delegates)
// from other 'concrete' namespaces, that contains classes and structures.
//
// Typically, the more concrete namespaces rely on abstract namespaces *only*,
// the more Decoupled is the architecture, and the more Cohesive are
// classes inside concrete namespaces.
//
// The following code query, define sets of abstract and concrete namespaces
// and shows for each concrete namespaces, which concrete and abstract namespaces are used.
//
// This query can be adapted to a rule, depending on how much you want
// your code architecture being decoupled.
//
let abstractNamespaces = JustMyCode.Namespaces.Where(
n => n.ChildTypes.Where(t => !t.IsInterface && !t.IsEnumeration ).Count() == 0
).ToHashSet()
let concreteNamespaces = JustMyCode.Namespaces.Except(abstractNamespaces).ToHashSet()
from n in concreteNamespaces
let namespacesUsed = n.NamespacesUsed.ExceptThirdParty()
let concreteNamespacesUsed = namespacesUsed.Except(abstractNamespaces)
let abstractNamespacesUsed = namespacesUsed.Except(concreteNamespaces)
select new { n, concreteNamespacesUsed , abstractNamespacesUsed }
99 namespaces matched
99 namespaces | concreteNamespacesUsed | abstractNamespacesUsed | Full Name |
---|---|---|---|
3 namespaces | no namespace | ||
ValueFlow | 1 namespace | no namespace | ValueFlow |
cppcheck | no namespace | no namespace | cppcheck |
simplecpp | no namespace | no namespace | simplecpp |
anonymous_namespace{cppcheckexecutor .cpp} | no namespace | no namespace | anonymous_namespace{cppcheckexecutor .cpp} |
9 namespaces | no namespace | ||
simplecpp | no namespace | no namespace | simplecpp |
anonymous_namespace{simplecpp.cpp} | 1 namespace | no namespace | anonymous_namespace{simplecpp.cpp} |
tinyxml2 | no namespace | no namespace | tinyxml2 |
ValueFlow | 1 namespace | no namespace | ValueFlow |
cppcheck | 1 namespace | no namespace | cppcheck |
anonymous_namespace{check64bit.cpp} | 1 namespace | no namespace | anonymous_namespace{check64bit.cpp} |
anonymous_namespace{checkassert.cpp} | 1 namespace | no namespace | anonymous_namespace{checkassert.cpp} |
anonymous_namespace{checkautovariables .cpp} | 1 namespace | no namespace | anonymous_namespace{checkautovariables .cpp} |
anonymous_namespace{checkbool.cpp} | 1 namespace | no namespace | anonymous_namespace{checkbool.cpp} |
anonymous_namespace{checkboost.cpp} | 1 namespace | no namespace | anonymous_namespace{checkboost.cpp} |
anonymous_namespace{checkbufferoverrun .cpp} | 1 namespace | no namespace | anonymous_namespace{checkbufferoverrun .cpp} |
anonymous_namespace{checkclass.cpp} | 1 namespace | no namespace | anonymous_namespace{checkclass.cpp} |
anonymous_namespace{checkcondition.cpp} | 1 namespace | no namespace | anonymous_namespace{checkcondition.cpp} |
anonymous_namespace{checkfunctions.cpp} | 1 namespace | no namespace | anonymous_namespace{checkfunctions.cpp} |
anonymous_namespace{checkstring.cpp} | 1 namespace | no namespace | anonymous_namespace{checkstring.cpp} |
anonymous_namespace{checkexceptionsafety .cpp} | 1 namespace | no namespace | anonymous_namespace{checkexceptionsafety .cpp} |
anonymous_namespace{checkio.cpp} | 1 namespace | no namespace | anonymous_namespace{checkio.cpp} |
anonymous_namespace{checkleakautovar .cpp} | 1 namespace | no namespace | anonymous_namespace{checkleakautovar .cpp} |
anonymous_namespace{checkmemoryleak.cpp} | 1 namespace | no namespace | anonymous_namespace{checkmemoryleak.cpp} |
anonymous_namespace{checknullpointer .cpp} | 1 namespace | no namespace | anonymous_namespace{checknullpointer .cpp} |
anonymous_namespace{checkother.cpp} | 1 namespace | no namespace | anonymous_namespace{checkother.cpp} |
anonymous_namespace{checkpostfixoperator .cpp} | 1 namespace | no namespace | anonymous_namespace{checkpostfixoperator .cpp} |
anonymous_namespace{checksizeof.cpp} | 1 namespace | no namespace | anonymous_namespace{checksizeof.cpp} |
anonymous_namespace{checkstl.cpp} | 1 namespace | no namespace | anonymous_namespace{checkstl.cpp} |
anonymous_namespace{checktype.cpp} | 1 namespace | no namespace | anonymous_namespace{checktype.cpp} |
anonymous_namespace{checkuninitvar.cpp} | 1 namespace | no namespace | anonymous_namespace{checkuninitvar.cpp} |
anonymous_namespace{checkunusedfunctions .cpp} | no namespace | no namespace | anonymous_namespace{checkunusedfunctions .cpp} |
anonymous_namespace{checkunusedvar.cpp} | 1 namespace | no namespace | anonymous_namespace{checkunusedvar.cpp} |
anonymous_namespace{checkvaarg.cpp} | 1 namespace | no namespace | anonymous_namespace{checkvaarg.cpp} |
anonymous_namespace{importproject.cpp} | 2 namespaces | no namespace | anonymous_namespace{importproject.cpp} |
anonymous_namespace{settings.cpp} | no namespace | no namespace | anonymous_namespace{settings.cpp} |
anonymous_namespace{symboldatabase.cpp} | 1 namespace | no namespace | anonymous_namespace{symboldatabase.cpp} |
anonymous_namespace{timer.cpp} | 1 namespace | no namespace | anonymous_namespace{timer.cpp} |
anonymous_namespace{tokenize.cpp} | 1 namespace | no namespace | anonymous_namespace{tokenize.cpp} |
anonymous_namespace{valueflow.cpp} | 2 namespaces | no namespace | anonymous_namespace{valueflow.cpp} |
4 namespaces | no namespace | ||
cppcheck | no namespace | no namespace | cppcheck |
ValueFlow | 1 namespace | no namespace | ValueFlow |
simplecpp | no namespace | no namespace | simplecpp |
anonymous_namespace{cppcheckexecutor .cpp} | no namespace | no namespace | anonymous_namespace{cppcheckexecutor .cpp} |
anonymous_namespace{test64bit.cpp} | 1 namespace | no namespace | anonymous_namespace{test64bit.cpp} |
anonymous_namespace{testassert.cpp} | 1 namespace | no namespace | anonymous_namespace{testassert.cpp} |
anonymous_namespace{testautovariables .cpp} | 1 namespace | no namespace | anonymous_namespace{testautovariables .cpp} |
anonymous_namespace{testbool.cpp} | 1 namespace | no namespace | anonymous_namespace{testbool.cpp} |
anonymous_namespace{testboost.cpp} | 1 namespace | no namespace | anonymous_namespace{testboost.cpp} |
tinyxml2 | no namespace | no namespace | tinyxml2 |
anonymous_namespace{testbufferoverrun .cpp} | 1 namespace | no namespace | anonymous_namespace{testbufferoverrun .cpp} |
anonymous_namespace{testcharvar.cpp} | 1 namespace | no namespace | anonymous_namespace{testcharvar.cpp} |
anonymous_namespace{testclass.cpp} | 1 namespace | no namespace | anonymous_namespace{testclass.cpp} |
anonymous_namespace{testcmdlineparser .cpp} | 1 namespace | no namespace | anonymous_namespace{testcmdlineparser .cpp} |
anonymous_namespace{testcondition.cpp} | 1 namespace | no namespace | anonymous_namespace{testcondition.cpp} |
anonymous_namespace{testconstructors .cpp} | 1 namespace | no namespace | anonymous_namespace{testconstructors .cpp} |
anonymous_namespace{testcppcheck.cpp} | 1 namespace | no namespace | anonymous_namespace{testcppcheck.cpp} |
anonymous_namespace{testerrorlogger.cpp} | 1 namespace | no namespace | anonymous_namespace{testerrorlogger.cpp} |
anonymous_namespace{testexceptionsafety .cpp} | 1 namespace | no namespace | anonymous_namespace{testexceptionsafety .cpp} |
anonymous_namespace{testfilelister.cpp} | 1 namespace | no namespace | anonymous_namespace{testfilelister.cpp} |
anonymous_namespace{testgarbage.cpp} | 1 namespace | no namespace | anonymous_namespace{testgarbage.cpp} |
anonymous_namespace{testincompletestatem ent.cpp} | 1 namespace | no namespace | anonymous_namespace{testincompletestatem ent.cpp} |
anonymous_namespace{testio.cpp} | 1 namespace | no namespace | anonymous_namespace{testio.cpp} |
anonymous_namespace{testleakautovar.cpp} | 1 namespace | no namespace | anonymous_namespace{testleakautovar.cpp} |
anonymous_namespace{testlibrary.cpp} | 1 namespace | no namespace | anonymous_namespace{testlibrary.cpp} |
anonymous_namespace{testmathlib.cpp} | 1 namespace | no namespace | anonymous_namespace{testmathlib.cpp} |
anonymous_namespace{testmemleak.cpp} | 1 namespace | no namespace | anonymous_namespace{testmemleak.cpp} |
anonymous_namespace{testnullpointer.cpp} | 1 namespace | no namespace | anonymous_namespace{testnullpointer.cpp} |
anonymous_namespace{testfunctions.cpp} | 1 namespace | no namespace | anonymous_namespace{testfunctions.cpp} |
anonymous_namespace{testoptions.cpp} | 1 namespace | no namespace | anonymous_namespace{testoptions.cpp} |
anonymous_namespace{testother.cpp} | 1 namespace | no namespace | anonymous_namespace{testother.cpp} |
anonymous_namespace{testpath.cpp} | 1 namespace | no namespace | anonymous_namespace{testpath.cpp} |
anonymous_namespace{testpathmatch.cpp} | 1 namespace | no namespace | anonymous_namespace{testpathmatch.cpp} |
anonymous_namespace{testpostfixoperator .cpp} | 1 namespace | no namespace | anonymous_namespace{testpostfixoperator .cpp} |
anonymous_namespace{testpreprocessor .cpp} | 1 namespace | no namespace | anonymous_namespace{testpreprocessor .cpp} |
anonymous_namespace{testsamples.cpp} | 1 namespace | no namespace | anonymous_namespace{testsamples.cpp} |
anonymous_namespace{testsimplifytemplate .cpp} | 1 namespace | no namespace | anonymous_namespace{testsimplifytemplate .cpp} |
anonymous_namespace{testsimplifytokens .cpp} | 1 namespace | no namespace | anonymous_namespace{testsimplifytokens .cpp} |
anonymous_namespace{testsimplifytypedef .cpp} | 1 namespace | no namespace | anonymous_namespace{testsimplifytypedef .cpp} |
anonymous_namespace{testsizeof.cpp} | 1 namespace | no namespace | anonymous_namespace{testsizeof.cpp} |
anonymous_namespace{teststl.cpp} | 1 namespace | no namespace | anonymous_namespace{teststl.cpp} |
anonymous_namespace{teststring.cpp} | 1 namespace | no namespace | anonymous_namespace{teststring.cpp} |
anonymous_namespace{testsuppressions .cpp} | 1 namespace | no namespace | anonymous_namespace{testsuppressions .cpp} |
anonymous_namespace{testsymboldatabase .cpp} | 1 namespace | no namespace | anonymous_namespace{testsymboldatabase .cpp} |
anonymous_namespace{testthreadexecutor .cpp} | 1 namespace | no namespace | anonymous_namespace{testthreadexecutor .cpp} |
anonymous_namespace{testtimer.cpp} | 1 namespace | no namespace | anonymous_namespace{testtimer.cpp} |
anonymous_namespace{testtoken.cpp} | 1 namespace | no namespace | anonymous_namespace{testtoken.cpp} |
anonymous_namespace{testtokenize.cpp} | 1 namespace | no namespace | anonymous_namespace{testtokenize.cpp} |
anonymous_namespace{testtokenlist.cpp} | 1 namespace | no namespace | anonymous_namespace{testtokenlist.cpp} |
anonymous_namespace{testtype.cpp} | 1 namespace | no namespace | anonymous_namespace{testtype.cpp} |
anonymous_namespace{testuninitvar.cpp} | 1 namespace | no namespace | anonymous_namespace{testuninitvar.cpp} |
anonymous_namespace{testunusedfunctions .cpp} | 1 namespace | no namespace | anonymous_namespace{testunusedfunctions .cpp} |
anonymous_namespace{testunusedprivfunc .cpp} | 1 namespace | no namespace | anonymous_namespace{testunusedprivfunc .cpp} |
anonymous_namespace{testunusedvar.cpp} | 1 namespace | no namespace | anonymous_namespace{testunusedvar.cpp} |
anonymous_namespace{testvaarg.cpp} | 1 namespace | no namespace | anonymous_namespace{testvaarg.cpp} |
anonymous_namespace{testvalueflow.cpp} | 1 namespace | no namespace | anonymous_namespace{testvalueflow.cpp} |
anonymous_namespace{testvarid.cpp} | 1 namespace | no namespace | anonymous_namespace{testvarid.cpp} |
Statistics
Stat | concreteNamespacesUsed | abstractNamespacesUsed |
---|---|---|
Sum: | 103 | 0 |
Average: | 1.04 | 0 |
Minimum: | 0 | 0 |
Maximum: | 9 | 0 |
Standard deviation: | 0.95 | 0 |
Variance: | 0.91 | 0 |
Rule Violated: Constructors of abstract classes should be declared as protected or private |
// Constructors of an abstract class can only be accessed from this class and derived class.
// Declaring such a constructor with another visibility level is useless and potentially misleading.
warnif count > 0
from t in Application.Types where
t.IsClass &&
t.IsAbstract
let ctors = t.Constructors.Where(c => !c.IsProtected && !c.IsPrivate)
where ctors.Count() > 0
select new { t, ctors }
// Notice that if a constructor of an abstract class is declared as private,
// it can only be accessed from derived classes nested in the abstract class.
12 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
12 types | ctors | Full Name |
---|---|---|
TimerResultsIntf | 2 methods | TimerResultsIntf |
ErrorLogger | 2 methods | ErrorLogger |
Check | 2 methods | Check |
ErrorLogger | 2 methods | ErrorLogger |
TimerResultsIntf | 2 methods | TimerResultsIntf |
Check | 2 methods | Check |
MemPool | 2 methods | tinyxml2.MemPool |
ErrorLogger | 2 methods | ErrorLogger |
TimerResultsIntf | 2 methods | TimerResultsIntf |
Check | 2 methods | Check |
TestFixture | 2 methods | TestFixture |
MemPool | 1 method | tinyxml2.MemPool |
Statistics
Stat | ctors |
---|---|
Sum: | 23 |
Average: | 1.92 |
Minimum: | 1 |
Maximum: | 2 |
Standard deviation: | 0.28 |
Variance: | 0.076 |
Validated Rule: The class does not have a constructor. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="noConstructor"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.Medium
}
No field matched
Validated Rule: Class has a constructor with 1 argument that is not explicit. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="noExplicitConstructor"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.Medium
}
No field matched
Validated Rule: Value of pointer var, which points to allocated memory, is copied in copy constructor instead of allocating new memory. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="copyCtorPointerCopying"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.Medium
}
No field matched
Validated Rule: class class does not have a copy constructor which is recommended since the class contains a pointer to allocated memory. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="noCopyConstructor"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.Medium
}
No field matched
Validated Rule: Member variable is not initialized in the constructor. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="uninitMemberVar"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: Member variable is not assigned a value in classname::operator=. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="operatorEqVarError"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: Unused private function: classname::funcname |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="unusedPrivateFunction"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.Medium
}
No field matched
Validated Rule: Using memfunc on class that contains a classname. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="memsetClass"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 10.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: Using memfunc on class that contains a reference. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="memsetClassReference"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 10.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: Using memset() on class which contains a floating point number. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="memsetClassFloat"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: Memory for class instance allocated with malloc(), but class provides constructors. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="mallocOnClassWarning"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: Memory for class instance allocated with malloc(), but class contains a std::string. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="mallocOnClassError"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 10.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: class::operator= should return class &. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="operatorEq"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: Class Base which is inherited by class Derived does not have a virtual destructor. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="virtualDestructor"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 10.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: Suspicious pointer subtraction. Did you intend to write ->? |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="thisSubtraction"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: operator= should return reference to this instance. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="operatorEqRetRefThis"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: No return statement in non-void function causes undefined behavior. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="operatorEqMissingReturnStatement"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 10.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: operator= should either return reference to this instance or be declared private and left unimplemented. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="operatorEqShouldBeLeftUnimplemented"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: operator= should check for assignment to self to avoid problems with dynamic memory. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="operatorEqToSelf"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: Variable is assigned in constructor body. Consider performing initialization in initialization list. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="useInitializationList"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: Member variable is initialized by itself. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="selfInitialization"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 10.ToMinutes().ToDebt(),
Severity =Severity.High
}
No field matched
Validated Rule: The class class defines member variable with name variable also defined in its parent class class. |
warnif count > 0 from issue in ImportedIssues where issue.ToolName=="CppCheck" && issue.Type=="duplInheritedMember"
select new { issue, issue.FilePath, Line = issue.BeginLine ,
Debt = 2.ToMinutes().ToDebt(),
Severity =Severity.Low
}
No field matched
API Breaking Changes
Validated Rule: API Breaking Changes: Types |
// This rule warns if a publicly visible type is
// not publicly visible anymore or if it has been removed.
// Such type can break the code of your clients.
warnif count > 0 from t in codeBase.OlderVersion().Application.Types
where t.IsPublic &&
// The type has been removed and its parent project hasn't been removed ...
( (t.WasRemoved() && !t.ParentProject.WasRemoved()) ||
// ... or the type is not publicly visible anymore
!t.WasRemoved() && !t.NewerVersion().IsPublic)
select new { t,
NewVisibility = (t.WasRemoved() ? " " : t.NewerVersion().Visibility.ToString()) }
No type matched
Validated Rule: API Breaking Changes: Methods |
// This rule warns if a publicly visible method is
// not publicly visible anymore or if it has been removed.
// Such method can break the code of your clients.
warnif count > 0 from m in codeBase.OlderVersion().Application.Methods
where m.IsPublic &&
// The method has been removed and its parent type hasn't been removed ...
( (m.WasRemoved() && !m.ParentType.WasRemoved()) ||
// ... or the method is not publicly visible anymore
!m.WasRemoved() && !m.NewerVersion().IsPublic)
select new { m,
NewVisibility = (m.WasRemoved() ? " " : m.NewerVersion().Visibility.ToString()) }
No method matched
Validated Rule: API Breaking Changes: Fields |
// This rule warns if a publicly visible field is
// not publicly visible anymore or if it has been removed.
// Such field can break the code of your clients.
warnif count > 0 from f in codeBase.OlderVersion().Application.Fields
where f.IsPublic &&
// The field has been removed and its parent type hasn't been removed ...
( (f.WasRemoved() && !f.ParentType.WasRemoved()) ||
// ... or the field is not publicly visible anymore
!f.WasRemoved() && !f.NewerVersion().IsPublic)
select new { f,
NewVisibility = (f.WasRemoved() ? " " : f.NewerVersion().Visibility.ToString()) }
No field matched
Validated Rule: API Breaking Changes: Interfaces and Abstract Classes |
// This rule warns if a publicly visible interface or abstract class
// has been changed and contains new abstract methods or
// if some abstract methods have been removed.
// This can break the code of clients
// that implement such interface or derive from such abstract class.
warnif count > 0 from tNewer in Application.Types where
(tNewer.IsInterface || tNewer.IsClass && tNewer.IsAbstract) &&
tNewer.IsPublic &&
tNewer.IsPresentInBothBuilds()
let tOlder = tNewer.OlderVersion() where tOlder.IsPublic
let methodsRemoved = tOlder.Methods.Where(m => m.IsAbstract && m.WasRemoved())
let methodsAdded = tNewer.Methods.Where(m => m.IsAbstract && m.WasAdded())
where methodsAdded.Count() > 0 || methodsRemoved.Count() > 0
select new { tNewer, methodsAdded, methodsRemoved }
No type matched
Validated Rule: Avoid transforming immutable types into mutable types |
// Immutability is a strong property on a type.
// Breaking immutability can result in serious problem for an algorithm consummer
// that has been written taking account of the type immutability.
// To visualize changes in code, right-click a matched type and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
warnif count > 0
from t in Application.Types where
t.IsPresentInBothBuilds() &&
!t.IsStatic &&
!t.IsImmutable &&
t.OlderVersion().IsImmutable
let mutableFields = from f in t.InstanceFields where !f.IsImmutable select f
select new { t, mutableFields }
No type matched
Code Diff Summary
Code Query: New Projects |
from a in Application.Projects where a.WasAdded()
select new { a, a.NbLinesOfCode }
No project matched
Code Query: Projects removed |
from a in codeBase.OlderVersion().Application.Projects where a.WasRemoved()
select new { a, a.NbLinesOfCode }
No project matched
Code Query: Projects where code was changed |
from a in Application.Projects where a.CodeWasChanged()
select new { a, a.NbLinesOfCode,
oldNbLinesOfCode = a.OlderVersion().NbLinesOfCode ,
delta = (int) a.NbLinesOfCode - a.OlderVersion().NbLinesOfCode }
No project matched
Code Query: New namespaces |
from n in Application.Namespaces where
!n.ParentProject.WasAdded() &&
n.WasAdded()
select new { n, n.NbLinesOfCode }
No namespace matched
Code Query: Namespaces removed |
from n in codeBase.OlderVersion().Application.Namespaces where
!n.ParentProject.WasRemoved() &&
n.WasRemoved()
select new { n, n.NbLinesOfCode }
No namespace matched
Code Query: Namespaces where code was changed |
from n in Application.Namespaces where n.CodeWasChanged()
select new { n, n.NbLinesOfCode,
oldNbLinesOfCode = n.OlderVersion().NbLinesOfCode ,
delta = (int) n.NbLinesOfCode - n.OlderVersion().NbLinesOfCode }
No namespace matched
Code Query: New types |
from t in Application.Types where
!t.ParentNamespace.WasAdded() &&
t.WasAdded()
select new { t, t.NbLinesOfCode }
No type matched
Code Query: Types removed |
from t in codeBase.OlderVersion().Application.Types where
!t.ParentNamespace.WasRemoved() &&
t.WasRemoved()
select new { t, t.NbLinesOfCode }
No type matched
Code Query: Types where code was changed |
// To visualize changes in code, right-click a matched type and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
from t in Application.Types where t.CodeWasChanged()
//select new { t, t.NbLinesOfCode }
select new { t, t.NbLinesOfCode,
oldNbLinesOfCode = t.OlderVersion().NbLinesOfCode ,
delta = (int?) t.NbLinesOfCode - t.OlderVersion().NbLinesOfCode }
/*from t in Application.Types where t.CodeWasChanged() && t.IsPresentInBothBuild
select new { t, t.NbLinesOfCode,
oldNbLinesOfCode = t.OlderVersion().NbLinesOfCode ,
delta = (int) t.NbLinesOfCode - t.OlderVersion().NbLinesOfCode }*/
No type matched
Code Query: Heuristic to find types moved from one namespace or project to another |
let typesRemoved = codeBase.OlderVersion().Types.Where(t => t.WasRemoved())
let typesAdded = Types.Where(t => t.WasAdded())
from tMoved in typesAdded.Join(
typesRemoved,
t => t.Name,
t => t.Name,
(tNewer, tOlder) => new { tNewer,
OlderParentNamespace = tOlder.ParentNamespace,
OlderParentproject = tOlder.ParentProject } )
select tMoved
No type matched
Code Query: Types directly using one or several types changed |
let typesChanged = Application.Types.Where(t => t.CodeWasChanged()).ToHashSet()
from t in JustMyCode.Types.UsingAny(typesChanged) where
!t.CodeWasChanged() &&
!t.WasAdded()
let typesChangedUsed = t.TypesUsed.Intersect(typesChanged)
select new { t, typesChangedUsed }
No type matched
Code Query: Types indirectly using one or several types changed |
let typesChanged = Application.Types.Where(t => t.CodeWasChanged()).ToHashSet()
// 'depth' represents a code metric defined on types using
// directly or indirectly any type where code was changed.
let depth = JustMyCode.Types.DepthOfIsUsingAny(typesChanged)
from t in depth.DefinitionDomain where
!t.CodeWasChanged() &&
!t.WasAdded()
let typesChangedDirectlyUsed = t.TypesUsed.Intersect(typesChanged)
let depthOfUsingTypesChanged = depth[t]
orderby depthOfUsingTypesChanged
select new { t, depthOfUsingTypesChanged, typesChangedDirectlyUsed }
No type matched
Code Query: New methods |
from m in Application.Methods where
!m.ParentType.WasAdded() &&
m.WasAdded()
select new { m, m.NbLinesOfCode }
No method matched
Code Query: Methods removed |
from m in codeBase.OlderVersion().Application.Methods where
!m.ParentType.WasRemoved() &&
m.WasRemoved()
select new { m, m.NbLinesOfCode }
No method matched
Code Query: Methods where code was changed |
// To visualize changes in code, right-click a matched method and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
from m in Application.Methods where m.CodeWasChanged()
select new { m, m.NbLinesOfCode,
oldNbLinesOfCode = m.OlderVersion().NbLinesOfCode ,
delta = (int?) m.NbLinesOfCode - m.OlderVersion().NbLinesOfCode }
No method matched
Code Query: Methods directly calling one or several methods changed |
let methodsChanged = Application.Methods.Where(m => m.CodeWasChanged()).ToHashSet()
from m in JustMyCode.Methods.UsingAny(methodsChanged ) where
!m.CodeWasChanged() &&
!m.WasAdded()
let methodsChangedCalled = m.MethodsCalled.Intersect(methodsChanged)
select new { m, methodsChangedCalled }
No method matched
Code Query: Methods indirectly calling one or several methods changed |
let methodsChanged = Application.Methods.Where(m => m.CodeWasChanged()).ToHashSet()
// 'depth' represents a code metric defined on methods using
// directly or indirectly any method where code was changed.
let depth = JustMyCode.Methods.DepthOfIsUsingAny(methodsChanged)
from m in depth.DefinitionDomain where
!m.CodeWasChanged() &&
!m.WasAdded()
let methodsChangedDirectlyUsed = m.MethodsCalled.Intersect(methodsChanged)
let depthOfUsingMethodsChanged = depth[m]
orderby depthOfUsingMethodsChanged
select new { m, depthOfUsingMethodsChanged, methodsChangedDirectlyUsed }
No method matched
Code Query: New fields |
from f in Application.Fields where
!f.ParentType.WasAdded() &&
f.WasAdded()
select new { f }
No field matched
Code Query: Fields removed |
from f in codeBase.OlderVersion().Application.Fields where
!f.ParentType.WasRemoved() &&
f.WasRemoved()
select new { f }
No field matched
Code Query: Third party types that were not used and that are now used |
from t in ThirdParty.Types where t.IsUsedRecently()
select new { t, t.Methods, t.Fields }
No type matched
Code Query: Third party types that were used and that are not used anymore |
from t in codeBase.OlderVersion().Types where t.IsNotUsedAnymore()
select new { t, t.Methods, t.Fields }
No type matched
Code Query: Third party methods that were not used and that are now used |
from m in ThirdParty.Methods where
m.IsUsedRecently() &&
!m.ParentType.IsUsedRecently()
select m
No method matched
Code Query: Third party methods that were used and that are not used anymore |
from m in codeBase.OlderVersion().Methods where
m.IsNotUsedAnymore() &&
!m.ParentType.IsNotUsedAnymore()
select m
No method matched
Code Query: Third party fields that were not used and that are now used |
from f in ThirdParty.Fields where
f.IsUsedRecently() &&
!f.ParentType.IsUsedRecently()
select f
No field matched
Code Query: Third party fields that were used and that are not used anymore |
from f in codeBase.OlderVersion().Fields where
f.IsNotUsedAnymore() &&
!f.ParentType.IsNotUsedAnymore()
select f
No field matched
Code Coverage
Validated Rule: Code should be tested |
• How to Fix Issues: Write unit tests to test and cover the methods and their parent classes matched by this rule.
No method matched
Validated Rule: New Methods should be tested |
• How to Fix Issues: Write unit-tests to cover the code of most methods and classes added.
No method matched
Validated Rule: Methods refactored should be tested |
• How to Fix Issues: Write unit-tests to cover the code of most methods and classes refactored.
No method matched
Validated Rule: Types almost 100% tested should be 100% tested |
• How to Fix Issues: Write more unit-tests dedicated to cover code not covered yet. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring.
No type matched
Validated Rule: Namespaces almost 100% tested should be 100% tested |
• How to Fix Issues: Write more unit-tests dedicated to cover code not covered yet in the namespace. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring.
No namespace matched
Validated Rule: Types that used to be 100% covered by tests should still be 100% covered |
• How to Fix Issues: Write more unit-tests dedicated to cover code not covered anymore. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring. You'll find code impossible to cover by unit-tests, like calls to MessageBox.Show(). An infrastructure must be defined to be able to mock such code at test-time.
No method matched
Validated Rule: Types tagged with FullCoveredAttribute should be 100% covered |
• How to Fix Issues: Write more unit-tests dedicated to cover code of matched classes not covered yet. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring.
No method matched
Validated Rule: Types 100% covered should be tagged with FullCoveredAttribute |
• How to Fix Issues: Just tag types 100% covered by tests with the FullCoveredAttribute that can be found in NDepend.API.dll, or by an attribute of yours defined in your own code (in which case this rule must be adapted).
No type matched
Validated Rule: Methods should have a low C.R.A.P score |
• How to Fix Issues: In such situation, it is recommended to both refactor the complex method logic into several smaller and less complex methods (that might belong to some new types especially created), and also write unit-tests to full cover the refactored logic. You'll find code impossible to cover by unit-tests, like calls to MessageBox.Show(). An infrastructure must be defined to be able to mock such code at test-time.
No method matched
Dead Code
|
Rule Violated: Potentially dead Types |
warnif count > 0
let tt=Types.UsedByAny(Application.Methods).ToHashSet()
// Select types unused
let typesUnused =
from t in JustMyCode.Types where
t.NbTypesUsingMe == 0 && !t.IsGlobal select t
from t in typesUnused where !tt.Contains(t)
select new { t }
20 types matched
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
20 types | Full Name |
---|---|
MathLib | MathLib |
Timer | Timer |
Suppressions+FileMatcher | Suppressions+FileMatcher |
Severity | Severity |
DUI | simplecpp.DUI |
CheckUninitVar+MyFileInfo | CheckUninitVar+MyFileInfo |
LongFitsIntoSizeTMinusOne<false> | tinyxml2.LongFitsIntoSizeTMinusOne<false > |
Suppressions+FileMatcher | Suppressions+FileMatcher |
Severity | Severity |
Timer | Timer |
CheckBufferOverrun+MyFileInfo | CheckBufferOverrun+MyFileInfo |
CheckBufferOverrun+MyFileInfo+ArrayUsage | CheckBufferOverrun+MyFileInfo+ArrayUsage |
Scope+UsingInfo | Scope+UsingInfo |
CheckUninitVar+MyFileInfo | CheckUninitVar+MyFileInfo |
CheckUnusedFunctions+FunctionDecl | CheckUnusedFunctions+FunctionDecl |
StrPair+AnonymousEnum | tinyxml2.StrPair+AnonymousEnum |
XMLAttribute+AnonymousEnum | tinyxml2.XMLAttribute+AnonymousEnum |
XMLElement+AnonymousEnum | tinyxml2.XMLElement+AnonymousEnum |
XMLElement+AnonymousEnum | tinyxml2.XMLElement+AnonymousEnum |
XMLPrinter+AnonymousEnum | tinyxml2.XMLPrinter+AnonymousEnum |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Rule Violated: Potentially dead Methods |
warnif count > 0
// Filter procedure for methods that should'nt be considered as dead
let canMethodBeConsideredAsDeadProc = new Func<IMethod, bool>(
m => !m.IsPublic && // Public methods might be used by client applications of your Projects.
!m.IsEntryPoint && // Main() method is not used by-design.
!m.IsClassConstructor &&
!m.IsVirtual && // Only check for non virtual method that are not seen as used in IL.
!(m.IsConstructor && // Don't take account of protected ctor that might be call by a derived ctors.
m.IsProtected) &&
!m.NameLike (@"^On") && //Exclude Events like MFC ones
!m.IsGeneratedByCompiler
)
// Get methods unused
let methodsUnused =
from m in JustMyCode.Methods where
m.NbMethodsCallingMe == 0 &&
canMethodBeConsideredAsDeadProc(m)
select m
// Dead methods = methods used only by unused methods (recursive)
let deadMethodsMetric = methodsUnused.FillIterative(
methods => // Unique loop, just to let a chance to build the hashset.
from o in new[] { new object() }
// Use a hashet to make Intersect calls much faster!
let hashset = methods.ToHashSet()
from m in codeBase.Application.Methods.UsedByAny(methods).Except(methods)
where canMethodBeConsideredAsDeadProc(m) &&
// Select methods called only by methods already considered as dead
hashset.Intersect(m.MethodsCallingMe).Count() == m.NbMethodsCallingMe
select m)
from m in JustMyCode.Methods.Intersect(deadMethodsMetric.DefinitionDomain)
select new { m, m.MethodsCallingMe, depth = deadMethodsMetric[m] }
3,926 methods matched
- The following list of methods is truncated and contains only the first 100 methods of the 3926 methods matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
3 926 methods | MethodsCallingMe | depth | Full Name |
---|---|---|---|
normalizeCharacterLiteral (conststd::string&) | no method | 0 | MathLib.normalizeCharacterLiteral (conststd::string&) |
promote(constMathLib::value&) | no method | 0 | MathLib+value.promote (constMathLib::value&) |
operator=(constTimer&) | no method | 0 | Timer.operator=(constTimer&) |
Token() | no method | 0 | Token.Token() |
Token(constToken&) | no method | 0 | Token.Token(constToken&) |
operator=(constToken&) | no method | 0 | Token.operator=(constToken&) |
next(Token*) | no method | 0 | Token.next(Token*) |
previous(Token*) | no method | 0 | Token.previous(Token*) |
firstWordEquals(constchar*,constchar*) | no method | 0 | Token.firstWordEquals(constchar* ,constchar*) |
chrInFirstWord(constchar*,char) | no method | 0 | Token.chrInFirstWord(constchar*,char) |
update_property_isStandardType() | no method | 0 | Token.update_property_isStandardType() |
match(conststd::string& ,conststd::string&) | no method | 0 | Suppressions+FileMatcher.match (conststd::string&,conststd::string&) |
findAndReplace(std::string& ,conststd::string&,conststd::string&) | no method | 0 | ErrorLogger+ErrorMessage.findAndReplace (std::string&,conststd::string& ,conststd::string&) |
fixInvalidChars(conststd::string&) | no method | 0 | ErrorLogger+ErrorMessage.fixInvalidChars (conststd::string&) |
importCompileCommands(std::istream&) | no method | 0 | ImportProject.importCompileCommands (std::istream&) |
importSln(std::istream& ,conststd::string&) | no method | 0 | ImportProject.importSln(std::istream& ,conststd::string&) |
importVcxproj(conststd::string&,std::map <std::string,std::string> ,conststd::string&) | no method | 0 | ImportProject.importVcxproj (conststd::string&,std::map<std::string ,std::string>,conststd::string&) |
loadFunction (consttinyxml2::XMLElement*const ,conststd::string&,std::set<std::string >&) | no method | 0 | Library.loadFunction (consttinyxml2::XMLElement*const ,conststd::string&,std::set<std::string >&) |
getFunctionName(constToken*,bool*) | no method | 0 | Library.getFunctionName(constToken* ,bool*) |
getFunctionName(constToken*) | no method | 0 | Library.getFunctionName(constToken*) |
TokenList(constTokenList&) | no method | 0 | TokenList.TokenList(constTokenList&) |
operator=(constTokenList&) | no method | 0 | TokenList.operator=(constTokenList&) |
isFunctionHead(constToken* ,conststd::string&,bool) | no method | 0 | Tokenizer.isFunctionHead(constToken* ,conststd::string&,bool) |
simplifyWhile0() | no method | 0 | Tokenizer.simplifyWhile0() |
simplifyErrNoInWhile() | no method | 0 | Tokenizer.simplifyErrNoInWhile() |
simplifyFuncInWhile() | no method | 0 | Tokenizer.simplifyFuncInWhile() |
simplifyStd() | no method | 0 | Tokenizer.simplifyStd() |
simplifyPointerToStandardType() | no method | 0 | Tokenizer.simplifyPointerToStandardType( ) |
simplifyFunctionPointers() | no method | 0 | Tokenizer.simplifyFunctionPointers() |
cppcheckError(constToken*) | no method | 0 | Tokenizer.cppcheckError(constToken*) |
createLinks() | no method | 0 | Tokenizer.createLinks() |
createLinks2() | no method | 0 | Tokenizer.createLinks2() |
unhandled_macro_class_x_y(constToken*) | no method | 0 | Tokenizer.unhandled_macro_class_x_y (constToken*) |
validate() | no method | 0 | Tokenizer.validate() |
findGarbageCode() | no method | 0 | Tokenizer.findGarbageCode() |
isGarbageExpr(constToken*,constToken*) | no method | 0 | Tokenizer.isGarbageExpr(constToken* ,constToken*) |
simplifyDeclspec() | no method | 0 | Tokenizer.simplifyDeclspec() |
simplifyCallingConvention() | no method | 0 | Tokenizer.simplifyCallingConvention() |
simplifyAttribute() | no method | 0 | Tokenizer.simplifyAttribute() |
simplifyKeyword() | no method | 0 | Tokenizer.simplifyKeyword() |
simplifyAsm() | no method | 0 | Tokenizer.simplifyAsm() |
simplifyAsm2() | no method | 0 | Tokenizer.simplifyAsm2() |
simplifyBitfields() | no method | 0 | Tokenizer.simplifyBitfields() |
removeUnnecessaryQualification() | no method | 0 | Tokenizer.removeUnnecessaryQualification () |
simplifyNamespaceStd() | no method | 0 | Tokenizer.simplifyNamespaceStd() |
simplifyMicrosoftMemoryFunctions() | no method | 0 | Tokenizer .simplifyMicrosoftMemoryFunctions() |
simplifyMicrosoftStringFunctions() | no method | 0 | Tokenizer .simplifyMicrosoftStringFunctions() |
simplifyBorland() | no method | 0 | Tokenizer.simplifyBorland() |
simplifyQtSignalsSlots() | no method | 0 | Tokenizer.simplifyQtSignalsSlots() |
simplifyOperatorName() | no method | 0 | Tokenizer.simplifyOperatorName() |
simplifyDeprecated() | no method | 0 | Tokenizer.simplifyDeprecated() |
simplifyStrlen() | no method | 0 | Tokenizer.simplifyStrlen() |
prepareTernaryOpForAST() | no method | 0 | Tokenizer.prepareTernaryOpForAST() |
duplicateDefinition(Token**) | no method | 0 | Tokenizer.duplicateDefinition(Token**) |
reportError(constToken* ,constSeverity::SeverityType ,conststd::string&,conststd::string& ,bool) | no method | 0 | Tokenizer.reportError(constToken* ,constSeverity::SeverityType ,conststd::string&,conststd::string& ,bool) |
reportError(conststd::list<constToken*>& ,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) | no method | 0 | Tokenizer.reportError(conststd::list <constToken*>&,Severity::SeverityType ,conststd::string&,conststd::string& ,bool) |
duplicateTypedef(Token**,constToken* ,constToken*) | no method | 0 | Tokenizer.duplicateTypedef(Token** ,constToken*,constToken*) |
unsupportedTypedef(constToken*) | no method | 0 | Tokenizer.unsupportedTypedef(constToken* ) |
setVarIdClassDeclaration (constToken*const,conststd::map <std::string,unsignedint>& ,constunsignedint,std::map<unsignedint ,std::map<std::string,unsignedint>>&) | no method | 0 | Tokenizer.setVarIdClassDeclaration (constToken*const,conststd::map <std::string,unsignedint>& ,constunsignedint,std::map<unsignedint ,std::map<std::string,unsignedint>>&) |
simplifyReturnStrncat() | no method | 0 | Tokenizer.simplifyReturnStrncat() |
printUnknownTypes() | no method | 0 | Tokenizer.printUnknownTypes() |
Tokenizer(constTokenizer&) | no method | 0 | Tokenizer.Tokenizer(constTokenizer&) |
operator=(constTokenizer&) | no method | 0 | Tokenizer.operator=(constTokenizer&) |
processFunc(Token*,bool) | no method | 0 | Tokenizer.processFunc(Token*,bool) |
setPodTypes() | no method | 0 | Tokenizer.setPodTypes() |
reportError<T,U>(constToken* ,constSeverity::SeverityType,constT ,constU) | no method | 0 | Check.reportError<T,U>(constToken* ,constSeverity::SeverityType,constT ,constU) |
reportError<T,U>(constToken* ,constSeverity::SeverityType,constT ,constU,constCWE&,bool) | no method | 0 | Check.reportError<T,U>(constToken* ,constSeverity::SeverityType,constT ,constU,constCWE&,bool) |
reportError<T,U>(conststd::list <constToken*>&,Severity::SeverityType ,constT,constU) | no method | 0 | Check.reportError<T,U>(conststd::list <constToken*>&,Severity::SeverityType ,constT,constU) |
reportError<T,U>(conststd::list <constToken*>&,Severity::SeverityType ,constT,constU,constCWE&,bool) | no method | 0 | Check.reportError<T,U>(conststd::list <constToken*>&,Severity::SeverityType ,constT,constU,constCWE&,bool) |
operator=(constCheck&) | no method | 0 | Check.operator=(constCheck&) |
Check(constCheck&) | no method | 0 | Check.Check(constCheck&) |
internalError(conststd::string& ,conststd::string&) | no method | 0 | CppCheck.internalError(conststd::string& ,conststd::string&) |
processFile(conststd::string& ,conststd::string&,std::istream&) | no method | 0 | CppCheck.processFile(conststd::string& ,conststd::string&,std::istream&) |
checkRawTokens(constTokenizer&) | no method | 0 | CppCheck.checkRawTokens(constTokenizer&) |
checkNormalTokens(constTokenizer&) | no method | 0 | CppCheck.checkNormalTokens (constTokenizer&) |
checkSimplifiedTokens(constTokenizer&) | no method | 0 | CppCheck.checkSimplifiedTokens (constTokenizer&) |
executeRules(conststd::string& ,constTokenizer&) | no method | 0 | CppCheck.executeRules(conststd::string& ,constTokenizer&) |
reportProgress(conststd::string& ,constchar*,conststd::size_t) | no method | 0 | CppCheck.reportProgress (conststd::string&,constchar* ,conststd::size_t) |
RemoveFilename(conststd::string&) | no method | 0 | PathMatch.RemoveFilename (conststd::string&) |
removeSpaceNearNL(conststd::string&) | no method | 0 | Preprocessor.removeSpaceNearNL (conststd::string&) |
missingInclude(conststd::string& ,unsignedint,conststd::string& ,Preprocessor::HeaderTypes) | no method | 0 | Preprocessor.missingInclude (conststd::string&,unsignedint ,conststd::string& ,Preprocessor::HeaderTypes) |
error(conststd::string&,unsignedint ,conststd::string&) | no method | 0 | Preprocessor.error(conststd::string& ,unsignedint,conststd::string&) |
ThreadExecutor(constThreadExecutor&) | no method | 0 | ThreadExecutor.ThreadExecutor (constThreadExecutor&) |
operator=(constThreadExecutor&) | no method | 0 | ThreadExecutor.operator= (constThreadExecutor&) |
combineOperators() | no method | 0 | simplecpp.TokenList.combineOperators() |
constFoldUnaryNotPosNeg (simplecpp::Token*) | no method | 0 | simplecpp.TokenList .constFoldUnaryNotPosNeg (simplecpp::Token*) |
constFoldMulDivRem(simplecpp::Token*) | no method | 0 | simplecpp.TokenList.constFoldMulDivRem (simplecpp::Token*) |
constFoldAddSub(simplecpp::Token*) | no method | 0 | simplecpp.TokenList.constFoldAddSub (simplecpp::Token*) |
constFoldComparison(simplecpp::Token*) | no method | 0 | simplecpp.TokenList.constFoldComparison (simplecpp::Token*) |
constFoldBitwise(simplecpp::Token*) | no method | 0 | simplecpp.TokenList.constFoldBitwise (simplecpp::Token*) |
constFoldLogicalOp(simplecpp::Token*) | no method | 0 | simplecpp.TokenList.constFoldLogicalOp (simplecpp::Token*) |
constFoldQuestionOp(simplecpp::Token**) | no method | 0 | simplecpp.TokenList.constFoldQuestionOp (simplecpp::Token**) |
readUntil(std::istream& ,constsimplecpp::Location&,constchar ,constchar,OutputList*) | no method | 0 | simplecpp.TokenList.readUntil (std::istream&,constsimplecpp::Location& ,constchar,constchar,OutputList*) |
lastLine(int) | no method | 0 | simplecpp.TokenList.lastLine(int) |
fileIndex(conststd::string&) | no method | 0 | simplecpp.TokenList.fileIndex (conststd::string&) |
Token() | no method | 0 | Token.Token() |
Token(constToken&) | no method | 0 | Token.Token(constToken&) |
operator=(constToken&) | no method | 0 | Token.operator=(constToken&) |
TokenList(constTokenList&) | no method | 0 | TokenList.TokenList(constTokenList&) |
operator=(constTokenList&) | no method | 0 | TokenList.operator=(constTokenList&) |
Statistics
Stat | MethodsCallingMe | depth |
---|---|---|
Sum: | 5 982 | 3 503 |
Average: | 1.52 | 0.89 |
Minimum: | 0 | 0 |
Maximum: | 293 | 3 |
Standard deviation: | 8.61 | 0.41 |
Variance: | 74.13 | 0.17 |
Rule Violated: Potentially dead Fields |
warnif count > 0
from f in JustMyCode.Fields where
f.NbMethodsUsingMe == 0 &&
!f.IsPublic && // Although not recommended, public fields might be used by client applications of your Projects.
!f.IsEnumValue
// If you don't want to link CppDepend.API.dll, you can use your own IsNotDeadCodeAttribute and adapt this rule.
select f
113 fields matched
- The following list of fields is truncated and contains only the first 100 fields of the 113 fields matched.
-
Formatting: bold means added, underlined means code was changed,
strike-boldmeans removed (since baseline)
113 fields | Full Name |
---|---|
isUnsigned | MathLib+value.isUnsigned |
_results | TimerResults._results |
_str | Timer._str |
_timerResults | Timer._timerResults |
_start | Timer._start |
_showtimeMode | Timer._showtimeMode |
_stopped | Timer._stopped |
_append | Settings._append |
tokensBack | Token.tokensBack |
_suppressions | Suppressions._suppressions |
_files | Suppressions+FileMatcher._files |
_globs | Suppressions+FileMatcher._globs |
fout | AnalyzerInformation.fout |
analyzerInfoFile | AnalyzerInformation.analyzerInfoFile |
allocid | Library.allocid |
_files | Library._files |
_returnValue | Library._returnValue |
_returnValueType | Library._returnValueType |
_returnValueContainer | Library._returnValueContainer |
_reporterrors | Library._reporterrors |
_processAfterCode | Library._processAfterCode |
_keywords | Library._keywords |
_executableblocks | Library._executableblocks |
_importers | Library._importers |
_errorLogger | Tokenizer._errorLogger |
_configuration | Tokenizer._configuration |
_typeSize | Tokenizer._typeSize |
_errorList | CppCheck._errorList |
_errorLogger | CppCheck._errorLogger |
cfg | CppCheck.cfg |
exitcode | CppCheck.exitcode |
_useGlobalSuppressions | CppCheck._useGlobalSuppressions |
tooManyConfigs | CppCheck.tooManyConfigs |
fileInfo | CppCheck.fileInfo |
analyzerInformation | CppCheck.analyzerInformation |
_excludedPaths | PathMatch._excludedPaths |
_caseSensitive | PathMatch._caseSensitive |
_workingDirectory | PathMatch._workingDirectory |
_settings | Preprocessor._settings |
_errorLogger | Preprocessor._errorLogger |
tokenlists | Preprocessor.tokenlists |
files | simplecpp.TokenList.files |
isUnsigned | MathLib+value.isUnsigned |
_suppressions | Suppressions._suppressions |
_files | Suppressions+FileMatcher._files |
_globs | Suppressions+FileMatcher._globs |
allocid | Library.allocid |
_files | Library._files |
_returnValue | Library._returnValue |
_returnValueType | Library._returnValueType |
_returnValueContainer | Library._returnValueContainer |
_reporterrors | Library._reporterrors |
_processAfterCode | Library._processAfterCode |
_keywords | Library._keywords |
_executableblocks | Library._executableblocks |
_importers | Library._importers |
_results | TimerResults._results |
_str | Timer._str |
_timerResults | Timer._timerResults |
_start | Timer._start |
_showtimeMode | Timer._showtimeMode |
_stopped | Timer._stopped |
_append | Settings._append |
tokensBack | Token.tokensBack |
_errorLogger | Tokenizer._errorLogger |
_configuration | Tokenizer._configuration |
_typeSize | Tokenizer._typeSize |
fout | AnalyzerInformation.fout |
analyzerInfoFile | AnalyzerInformation.analyzerInfoFile |
_errorList | CppCheck._errorList |
_errorLogger | CppCheck._errorLogger |
cfg | CppCheck.cfg |
exitcode | CppCheck.exitcode |
_useGlobalSuppressions | CppCheck._useGlobalSuppressions |
tooManyConfigs | CppCheck.tooManyConfigs |
fileInfo | CppCheck.fileInfo |
analyzerInformation | CppCheck.analyzerInformation |
_excludedPaths | PathMatch._excludedPaths |
_caseSensitive | PathMatch._caseSensitive |
_workingDirectory | PathMatch._workingDirectory |
_settings | Preprocessor._settings |
_errorLogger | Preprocessor._errorLogger |
tokenlists | Preprocessor.tokenlists |
_tokenizer | SymbolDatabase._tokenizer |
_settings | SymbolDatabase._settings |
_errorLogger | SymbolDatabase._errorLogger |
_blankTypes | SymbolDatabase._blankTypes |
_functions | CheckUnusedFunctions._functions |
_functionDecl | CheckUnusedFunctions._functionDecl |
_functionCalls | CheckUnusedFunctions._functionCalls |
isRecordTypeWithoutSideEffectsMap | CheckUnusedVar .isRecordTypeWithoutSideEffectsMap |
isEmptyTypeMap | CheckUnusedVar.isEmptyTypeMap |
files | simplecpp.TokenList.files |
_value | tinyxml2.XMLNode._value |
_memPool | tinyxml2.XMLNode._memPool |
_name | tinyxml2.XMLAttribute._name |
_value | tinyxml2.XMLAttribute._value |
_charBuffer | tinyxml2.XMLDocument._charBuffer |
_parseCurLineNum | tinyxml2.XMLDocument._parseCurLineNum |
_elementPool | tinyxml2.XMLDocument._elementPool |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Hot Spots
Code Query: Types Hot Spots |
302 types matched
302 types | Debt | Issues | Annual Interest | Breaking Point | # lines of code (LOC) | DebtRating | DebtRatio | Full Name |
---|---|---|---|---|---|---|---|---|
Tokenizer | 16d 7h | 116 issues | 3d 0h | 2 058d | 5 459 | C | 16.77 | Tokenizer |
TestTokenizer | 6d 4h | 403 issues | 1d 3h | 1 671d | 2 750 | C | 11.62 | TestTokenizer |
SymbolDatabase | 6d 0h | 45 issues | 1d 1h | 1 962d | 1 704 | C | 19.21 | SymbolDatabase |
CheckOther | 5d 4h | 48 issues | 1d 0h | 1 906d | 1 496 | C | 19.37 | CheckOther |
TestSymbolDatabase | 4d 3h | 263 issues | 1d 1h | 1 382d | 2 472 | B | 9.23 | TestSymbolDatabase |
TestSimplifyTokens | 4d 1h | 137 issues | 7h 43min | 1 559d | 1 179 | C | 17.61 | TestSimplifyTokens |
CheckMemoryLeakInFunction | 4d 0h | 17 issues | 4h 27min | 2 661d | 1 006 | D | 21.97 | CheckMemoryLeakInFunction |
CheckClass | 3d 7h | 27 issues | 5h 1min | 2 262d | 1 102 | C | 18.38 | CheckClass |
CheckStl | 3d 6h | 30 issues | 5h 37min | 1 975d | 845 | D | 23.45 | CheckStl |
CheckBufferOverrun | 3d 6h |