CppDepend Report Build Summary
|
[ For beginners: Where to start ]
[ Quick tips ]
[ CppDepend site ]
The present HTML report is a summary of data gathered by the analysis. It is recommended to use the CppDepend interactive UI capabilities to make the most of CppDepend by mastering all aspects of your code. |
Not Defined. To define a Baseline for Comparison, please read this online documentation. |
Diagrams |
Application Metrics |
Third Party Usage | Percentage … |
CQL Rules summary |
|
» Number of CQL Rules or Queries that did not compile : 0» Number of CQL Rules violated : 33
Summary of CQL Rules violated
| |||||
Application Statistics
Stat | # Occurences | Avg | StdDev | Max |
---|---|---|---|---|
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 | 276 Classes | 0.05 | 0.9 | 15 public properties on CppDependencyGlobalMembers |
Public methods on classes | 276 classes | 42.87 | 84.41 | 826 public methods on CppDependencyGlobalMembers |
Arguments on public methods on classes | 11,831 methods | 0.53 | 0.96 | 13 arguments on MemberDef.MemberDef(constchar*,int,constchar*,constchar*,constchar*,constchar*,Protection,Specifier,bool,Relationship,MemberDef::MemberType,constArgumentList*,constArgumentList*) |
Cyclomatic complexity on non abstract Methods | 12,433 Methods | 0.98 | 1.89 | CC = 73 for CppDependencyGlobalMembers.scanYYlex() |
Projects Metrics
If you wish to define thresholds on projects Code Metrics, consider writing some CQL Rules.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Projects | # lines of code | # Types | # Abstract Types | # lines of comment | % Comment | Afferent Coupling | Efferent Coupling | Relational Cohesion | Instability | Abstractness | Distance |
---|---|---|---|---|---|---|---|---|---|---|---|
Projects | # lines of code | # Types | # Abstract Types | # lines of comment | % Comment | Afferent Coupling | Efferent Coupling | Relational Cohesion | Instability | Abstractness | Distance |
qtools v1.0.0.0 | 12103 | 144 | 12 | 9808 | 44 | 146 | 6 | 3.44 | 0.04 | 0.08 | 0.62 |
CppDependency v1.0.0.0 | 43952 | 240 | 14 | 25700 | 36 | 0 | 35 | 3.17 | 1 | 0.06 | 0.04 |
Types Metrics : Code Quality
For a particular Code Metric defined for types, values in red represent the 15% highest values.
If you wish to define thresholds on types' Code Metrics, consider writing some CQL Rule.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
If you wish to define thresholds on types' Code Metrics, consider writing some CQL Rule.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Type Name | Type Rank | # Lines Of Code | # Lines Of Comment | % Comment | Cyclomatic Complexity | Afferent Coupling | Efferent Coupling | Type Namespace |
---|---|---|---|---|---|---|---|---|
Type Name | Type Rank | # Lines Of Code | # Lines Of Comment | Percentage Comment | Cyclomatic Complexity | Afferent Coupling | Efferent Coupling | Type Namespace |
qtoolsGlobalMembers | 50.43 | 1137 | 532 | 31.88 | 479 | 150 | 41 | |
QString | 25.3 | 1174 | 1226 | 51.08 | 455 | 58 | 15 | |
QCString | 23.09 | 399 | 53 | 11.73 | 171 | 125 | 3 | |
CppDependencyGlobalMembers | 10.59 | 23035 | 6514 | 22.04 | 6648 | 71 | 168 | |
QCollection | 10.58 | 7 | 119 | 94.44 | 11 | 36 | 1 | |
QList<type> | 9.61 | 40 | 0 | 0 | 42 | 50 | 4 | |
QChar | 6.78 | 101 | 310 | 75.43 | 57 | 24 | 7 | |
QGList | 6.45 | 398 | 414 | 50.99 | 139 | 7 | 6 | |
QShared | 5.87 | 3 | 0 | 0 | 4 | 6 | 0 | |
ClassDef+CompoundType | 5.36 | - | 0 | - | 0 | 38 | 0 | |
Config | 5.29 | 794 | 192 | 19.47 | 99 | 45 | 27 | |
Translator | 5.01 | 50 | 160 | 76.19 | 237 | 32 | 5 | |
QGArray | 4.76 | 248 | 283 | 53.3 | 98 | 2 | 4 | |
QArray<type> | 4.59 | 32 | 0 | 0 | 36 | 12 | 1 | |
QDict<type> | 4.5 | 16 | 0 | 0 | 18 | 21 | 4 | |
Definition | 4.28 | 340 | 218 | 39.07 | 136 | 24 | 27 | |
QListIterator<type> | 4.21 | 16 | 5 | 23.81 | 17 | 29 | 3 | |
QLNode | 4.18 | 2 | 3 | 60 | 3 | 3 | 0 | |
QBaseBucket | 3.89 | 4 | 0 | 0 | 6 | 6 | 0 | |
FileDef | 3.83 | 457 | 104 | 18.54 | 188 | 19 | 41 | |
MemberDef | 3.82 | 778 | 236 | 23.27 | 288 | 22 | 33 | |
QTextStream | 3.47 | 867 | 512 | 37.13 | 260 | 22 | 17 | |
SDict<T> | 3.36 | 36 | 46 | 56.1 | 23 | 19 | 4 | |
QChar+Decomposition | 3.31 | - | 0 | - | 0 | 4 | 0 | |
QTextCodec | 3.12 | 96 | 301 | 75.82 | 47 | 11 | 16 | |
ClassDef | 3.11 | 1179 | 362 | 23.49 | 420 | 19 | 51 | |
QGDict | 3.08 | 529 | 187 | 26.12 | 168 | 9 | 14 | |
QChar+Direction | 2.94 | - | 0 | - | 0 | 3 | 0 | |
QValueListNode<T> | 2.78 | 0 | 0 | - | 2 | 3 | 0 | |
TranslatorEnglish | 2.54 | 495 | 544 | 52.36 | 310 | 12 | 6 | |
QMapNodeBase | 2.53 | 8 | 0 | 0 | 6 | 5 | 0 | |
QGListIterator | 2.5 | 47 | 85 | 64.39 | 32 | 2 | 3 | |
QCharRef | 2.46 | 40 | 3 | 6.98 | 35 | 7 | 6 | |
QDataStream | 2.36 | 281 | 292 | 50.96 | 82 | 5 | 6 | |
QGDict+KeyType | 2.1 | - | 0 | - | 0 | 4 | 0 | |
QRegExp | 1.98 | 209 | 165 | 44.12 | 72 | 5 | 3 | |
QStack<type> | 1.85 | 16 | 0 | 0 | 18 | 3 | 2 | |
TranslatorAdapterBase | 1.82 | 1 | 17 | 94.44 | 6 | 9 | 3 | |
DefinitionIntf+DefType | 1.8 | - | 0 | - | 0 | 8 | 0 | |
QStringData | 1.77 | 6 | 1 | 14.29 | 7 | 2 | 2 | |
QIODevice | 1.76 | 74 | 407 | 84.62 | 54 | 8 | 2 | |
QTextDecoder | 1.67 | 0 | 0 | - | 5 | 9 | 1 | |
QGVector | 1.66 | 210 | 226 | 51.83 | 89 | 2 | 5 | |
QBidiState | 1.62 | 0 | 1 | 100 | 3 | 1 | 0 | |
QLigature | 1.62 | 30 | 1 | 3.23 | 18 | 1 | 5 | |
QValueListIterator<T> | 1.6 | 14 | 5 | 26.32 | 11 | 5 | 1 | |
Protection | 1.51 | - | 0 | - | 0 | 8 | 0 | |
QGArray+array_data | 1.5 | 2 | 2 | 50 | 2 | 2 | 1 | |
OutputGenerator+OutputType | 1.5 | - | 0 | - | 0 | 12 | 0 | |
QChar+Joining | 1.47 | - | 0 | - | 0 | 2 | 0 | |
QChar+Category | 1.47 | - | 0 | - | 0 | 2 | 0 | |
ConfigOption+OptionType | 1.45 | - | 0 | - | 0 | 9 | 0 | |
QGDictIterator | 1.45 | 65 | 50 | 43.48 | 34 | 5 | 10 | |
QValueList<T> | 1.45 | 76 | 6 | 7.32 | 46 | 6 | 3 | |
LockableObj | 1.44 | 1 | 15 | 93.75 | 7 | 3 | 0 | |
Specifier | 1.4 | - | 0 | - | 0 | 7 | 0 | |
TranslatorAdapter_1_4_6 | 1.26 | 3 | 0 | 0 | 7 | 10 | 5 | |
ConfigOption | 1.23 | 57 | 9 | 13.64 | 32 | 8 | 7 | |
QFile | 1.15 | 380 | 451 | 54.27 | 137 | 9 | 7 | |
CodeOutputInterface | 1.15 | 0 | 15 | 100 | 15 | 6 | 1 | |
Store | 1.13 | 154 | 78 | 33.62 | 43 | 2 | 5 | |
QMapNode<K,T> | 1.11 | 5 | 0 | 0 | 4 | 4 | 1 | |
QMapNodeBase+Color | 1.1 | - | 0 | - | 0 | 4 | 0 | |
SIntDict<T> | 1.08 | 29 | 45 | 60.81 | 19 | 2 | 2 | |
QStrList | 1.08 | 17 | 0 | 0 | 11 | 8 | 4 | |
QXmlSimpleReader | 1.07 | 2792 | 1014 | 26.64 | 1007 | 1 | 29 | |
QCacheItem | 1.07 | 0 | 12 | 100 | 3 | 5 | 0 | |
NamespaceDef | 1.06 | 251 | 25 | 9.06 | 113 | 7 | 26 | |
QChar+AnonymousEnum | 1.04 | - | 0 | - | 0 | 1 | 0 | |
Doxygen | 1.03 | 0 | 4 | 100 | 0 | 10 | 0 | |
Debug | 1.01 | 9 | 0 | 0 | 6 | 3 | 3 | |
QValueListConstIterator<T> | 0.97 | 13 | 5 | 27.78 | 11 | 4 | 2 | |
StorageIntf | 0.97 | 0 | 4 | 100 | 6 | 3 | 0 | |
FileName | 0.97 | 47 | 13 | 21.67 | 22 | 4 | 7 | |
TranslatorAdapter_1_5_4 | 0.96 | 23 | 0 | 0 | 27 | 6 | 5 | |
QBuffer | 0.92 | 147 | 174 | 54.21 | 58 | 4 | 6 | |
OutputList | 0.91 | 201 | 10 | 4.74 | 208 | 10 | 14 | |
SectionInfo+SectionType | 0.89 | - | 0 | - | 0 | 3 | 0 | |
BaseOutputDocInterface | 0.86 | 0 | 74 | 100 | 62 | 4 | 6 | |
Debug+DebugMask | 0.86 | - | 0 | - | 0 | 4 | 0 | |
FileList | 0.85 | 4 | 0 | 0 | 6 | 4 | 4 | |
MemberList+ListType | 0.84 | - | 0 | - | 0 | 6 | 0 | |
QTextEncoder | 0.79 | 0 | 0 | - | 5 | 4 | 2 | |
QMapIterator<K,T> | 0.77 | 47 | 5 | 9.62 | 24 | 4 | 3 | |
QIntDict<type> | 0.76 | 16 | 0 | 0 | 18 | 3 | 3 | |
UsesClassDef | 0.75 | 5 | 2 | 28.57 | 5 | 3 | 3 | |
QXmlInputSource | 0.72 | 57 | 41 | 41.84 | 20 | 4 | 11 | |
DirDef | 0.72 | 199 | 65 | 24.62 | 75 | 5 | 23 | |
MemberNameInfo | 0.66 | 15 | 0 | 0 | 8 | 3 | 9 | |
QXmlParseException | 0.64 | 5 | 34 | 87.18 | 8 | 3 | 1 | |
ParserInterface | 0.64 | 0 | 45 | 100 | 8 | 4 | 6 | |
ConfigOption+AnonymousEnum | 0.63 | - | 0 | - | 0 | 5 | 0 | |
MemberDef+MemberType | 0.63 | - | 0 | - | 0 | 7 | 0 | |
ListItemInfo | 0.62 | 0 | 0 | - | 2 | 5 | 0 | |
LockingPtr<T> | 0.62 | 27 | 20 | 42.55 | 16 | 5 | 1 | |
QVector<type> | 0.62 | 24 | 0 | 0 | 27 | 2 | 2 | |
Argument | 0.59 | 13 | 10 | 43.48 | 6 | 5 | 1 | |
BaseClassDef | 0.58 | 0 | 2 | 100 | 3 | 3 | 3 | |
DefinitionIntf | 0.57 | 0 | 2 | 100 | 5 | 4 | 1 | |
QDataStream+ByteOrder | 0.57 | - | 0 | - | 0 | 1 | 0 | |
QMapConstIterator<K,T> | 0.56 | 45 | 5 | 10 | 23 | 3 | 4 | |
MemberInfo | 0.55 | 0 | 0 | - | 3 | 3 | 3 | |
QStringBucket | 0.54 | 1 | 0 | 0 | 3 | 2 | 2 | |
QAsciiBucket | 0.54 | 1 | 0 | 0 | 3 | 2 | 1 | |
QPtrBucket | 0.54 | 1 | 0 | 0 | 3 | 2 | 1 | |
QIntBucket | 0.54 | 1 | 0 | 0 | 3 | 2 | 1 | |
MemberName | 0.54 | 15 | 0 | 0 | 8 | 3 | 8 | |
SDict<T>+Iterator | 0.54 | 7 | 21 | 75 | 7 | 6 | 1 | |
QGCache | 0.52 | 197 | 103 | 34.33 | 67 | 2 | 9 | |
TextGeneratorIntf | 0.51 | 0 | 9 | 100 | 7 | 2 | 0 | |
DefinitionList | 0.51 | 2 | 0 | 0 | 6 | 2 | 6 | |
QXmlAttributes | 0.51 | 22 | 100 | 81.97 | 20 | 3 | 3 | |
QXmlLocator | 0.51 | 3 | 33 | 91.67 | 7 | 3 | 1 | |
QTextStream+Encoding | 0.51 | - | 0 | - | 0 | 3 | 0 | |
BaseOutputDocInterface+SectionTypes | 0.51 | - | 0 | - | 0 | 3 | 0 | |
TranslatorAdapter_1_4_1 | 0.51 | 2 | 0 | 0 | 6 | 3 | 5 | |
Define | 0.5 | 9 | 1 | 10 | 4 | 2 | 3 | |
QCList | 0.5 | 27 | 5 | 15.62 | 18 | 2 | 5 | |
FilePair | 0.5 | 2 | 0 | 0 | 5 | 4 | 1 | |
QTextCodecFromIOD | 0.48 | 164 | 6 | 3.53 | 65 | 2 | 12 | |
ClassList | 0.48 | 1 | 0 | 0 | 5 | 2 | 3 | |
QGCache+KeyType | 0.47 | - | 0 | - | 0 | 2 | 0 | |
MemberList | 0.47 | 233 | 64 | 21.55 | 97 | 4 | 15 | |
QGCacheIterator | 0.46 | 31 | 79 | 71.82 | 29 | 1 | 6 | |
QCache<type> | 0.46 | 17 | 0 | 0 | 19 | 1 | 4 | |
QTextOStream | 0.46 | 0 | 0 | - | 5 | 1 | 3 | |
SectionInfo | 0.46 | 7 | 0 | 0 | 4 | 1 | 2 | |
Entry | 0.46 | 131 | 35 | 21.08 | 28 | 3 | 20 | |
NamespaceList | 0.45 | 1 | 0 | 0 | 4 | 2 | 4 | |
BaseOutputDocInterface+ParamListTypes | 0.44 | - | 0 | - | 0 | 2 | 0 | |
Store+State | 0.44 | - | 0 | - | 0 | 1 | 0 | |
Store+Node | 0.44 | 0 | 0 | - | 2 | 1 | 1 | |
BaseClassList | 0.44 | 6 | 4 | 40 | 6 | 2 | 6 | |
ConfigString+WidgetType | 0.43 | - | 0 | - | 0 | 2 | 0 | |
ArgumentList | 0.42 | 7 | 12 | 63.16 | 6 | 4 | 5 | |
QDictIterator<type> | 0.42 | 9 | 0 | 0 | 11 | 2 | 3 | |
QDir | 0.42 | 401 | 573 | 58.83 | 154 | 2 | 20 | |
ConfigList+WidgetType | 0.41 | - | 0 | - | 0 | 2 | 0 | |
TranslatorAdapter_1_3_3 | 0.4 | 5 | 0 | 0 | 9 | 2 | 5 | |
Entry+Sections | 0.4 | - | 0 | - | 0 | 3 | 0 | |
OutputDocInterface | 0.4 | 0 | 34 | 100 | 11 | 2 | 2 | |
ParserManager | 0.39 | 9 | 21 | 70 | 6 | 2 | 5 | |
ObjCache+HashNode | 0.39 | 0 | 0 | - | 2 | 1 | 0 | |
ObjCache+CacheNode | 0.39 | 0 | 0 | - | 2 | 1 | 0 | |
QFileInfo | 0.38 | 151 | 289 | 65.68 | 71 | 2 | 10 | |
QMultiByteUnicodeTable | 0.36 | 2 | 2 | 50 | 4 | 2 | 0 | |
ClassSDict | 0.36 | 54 | 6 | 10 | 20 | 3 | 14 | |
HighlightedItem | 0.36 | - | 0 | - | 0 | 3 | 0 | |
QStrVec | 0.36 | 10 | 0 | 0 | 12 | 1 | 3 | |
QPtrDict<type> | 0.36 | 16 | 0 | 0 | 18 | 1 | 3 | |
FileNameList | 0.36 | 7 | 2 | 22.22 | 7 | 1 | 4 | |
CPPValue+Type | 0.36 | - | 0 | - | 0 | 1 | 0 | |
DefineName | 0.36 | 3 | 0 | 0 | 5 | 1 | 4 | |
CPPValue+Anonymous | 0.36 | 0 | 0 | - | 0 | 1 | 0 | |
QStringBuffer | 0.35 | 90 | 17 | 15.89 | 40 | 1 | 4 | |
QTextStreamPrivate+SourceType | 0.35 | - | 0 | - | 0 | 1 | 0 | |
QTextStream+AnonymousEnum | 0.35 | - | 0 | - | 0 | 1 | 0 | |
QTextStreamPrivate | 0.35 | 1 | 0 | 0 | 3 | 1 | 0 | |
IncludeInfo | 0.35 | 2 | 0 | 0 | 3 | 3 | 1 | |
QTextStatelessDecoder | 0.35 | 1 | 0 | 0 | 5 | 1 | 3 | |
QTextStatelessEncoder | 0.35 | 1 | 0 | 0 | 5 | 1 | 4 | |
QWindowsLocalCodec | 0.35 | 22 | 2 | 8.33 | 13 | 1 | 4 | |
ConfigList | 0.33 | 16 | 3 | 15.79 | 12 | 1 | 10 | |
ConfigEnum | 0.33 | 16 | 3 | 15.79 | 11 | 1 | 9 | |
ConfigString | 0.33 | 16 | 3 | 15.79 | 12 | 1 | 8 | |
ConfigObsolete | 0.33 | 0 | 3 | 100 | 6 | 1 | 3 | |
ConfigBool | 0.33 | 27 | 3 | 10 | 17 | 1 | 7 | |
ConfigInt | 0.33 | 28 | 3 | 9.68 | 16 | 1 | 7 | |
ConfigInfo | 0.33 | 7 | 3 | 30 | 7 | 1 | 5 | |
QXmlLexicalHandler | 0.33 | 0 | 2 | 100 | 10 | 3 | 1 | |
QXmlErrorHandler | 0.33 | 0 | 0 | - | 8 | 3 | 2 | |
QXmlDeclHandler | 0.33 | 0 | 0 | - | 8 | 3 | 1 | |
QXmlDTDHandler | 0.33 | 0 | 0 | - | 7 | 3 | 1 | |
QXmlContentHandler | 0.33 | 0 | 3 | 100 | 16 | 3 | 3 | |
QXmlEntityResolver | 0.33 | 0 | 0 | - | 6 | 3 | 2 | |
DirEntry+EntryKind | 0.33 | - | 0 | - | 0 | 1 | 0 | |
QStringList | 0.32 | 61 | 130 | 68.06 | 32 | 3 | 9 | |
QGDItList | 0.32 | 2 | 0 | 0 | 4 | 1 | 2 | |
TranslatorAdapter_1_3_8 | 0.32 | 2 | 0 | 0 | 6 | 1 | 5 | |
Relationship | 0.31 | - | 0 | - | 0 | 2 | 0 | |
BodyInfo | 0.3 | 1 | 0 | 0 | 2 | 1 | 0 | |
DefinitionImpl | 0.3 | 24 | 3 | 11.11 | 10 | 1 | 4 | |
MemberSDict | 0.3 | 3 | 1 | 25 | 4 | 1 | 5 | |
TranslatorAdapter_1_3_9 | 0.3 | 7 | 0 | 0 | 11 | 1 | 5 | |
MemberListIterator | 0.3 | 0 | 0 | - | 4 | 2 | 3 | |
TranslatorAdapter_1_3_1 | 0.3 | 3 | 0 | 0 | 7 | 1 | 5 | |
QCListIt | 0.3 | 0 | 0 | - | 5 | 1 | 3 | |
NamespaceSDict | 0.29 | 42 | 3 | 6.67 | 17 | 2 | 11 | |
TranslatorAdapter_1_3 | 0.29 | 6 | 0 | 0 | 10 | 1 | 5 | |
QMap<Key,T> | 0.28 | 48 | 7 | 12.73 | 27 | 2 | 3 | |
QValueStack<T> | 0.28 | 7 | 0 | 0 | 7 | 2 | 1 | |
DirEntry | 0.27 | 7 | 0 | 0 | 13 | 1 | 4 | |
QUtf16Decoder | 0.27 | 24 | 1 | 4 | 11 | 1 | 4 | |
QUtf16Encoder | 0.27 | 12 | 0 | 0 | 6 | 1 | 6 | |
CommandMap | 0.27 | 0 | 0 | - | 0 | 1 | 0 | |
QDate | 0.26 | 98 | 242 | 71.18 | 41 | 1 | 4 | |
QTime | 0.26 | 55 | 267 | 82.92 | 34 | 1 | 4 | |
Entry+MemberSpecifier | 0.26 | - | 0 | - | 0 | 1 | 0 | |
ObjCache | 0.26 | 121 | 58 | 32.4 | 29 | 1 | 3 | |
MemberDefImpl | 0.26 | 63 | 16 | 20.25 | 12 | 1 | 14 | |
SrcLangExt | 0.26 | - | 0 | - | 0 | 1 | 0 | |
UsedDir | 0.25 | 7 | 2 | 22.22 | 10 | 2 | 7 | |
QCDict | 0.25 | 13 | 8 | 38.1 | 17 | 1 | 3 | |
QUtf8Decoder | 0.25 | 22 | 1 | 4.35 | 12 | 1 | 3 | |
TranslatorAdapter_1_2_18 | 0.25 | 3 | 0 | 0 | 7 | 1 | 5 | |
LabelMap | 0.25 | 0 | 1 | 100 | 0 | 1 | 1 | |
IndexIntf | 0.25 | 0 | 0 | - | 11 | 1 | 1 | |
FilePairDict | 0.25 | 5 | 1 | 16.67 | 6 | 1 | 5 | |
DevNullCodeDocInterface | 0.24 | 0 | 1 | 100 | 15 | 1 | 2 | |
PreproData | 0.24 | 0 | 0 | - | 1 | 1 | 0 | |
OutputGenerator | 0.24 | 58 | 18 | 23.68 | 120 | 1 | 13 | |
CallContext+Ctx | 0.24 | 0 | 0 | - | 3 | 1 | 0 | |
Anonymous | 0.24 | 0 | 0 | - | 0 | 1 | 0 | |
QMapPrivateBase | 0.24 | 168 | 4 | 2.33 | 49 | 1 | 3 | |
QFileInfoCache | 0.23 | 0 | 0 | - | 1 | 1 | 0 | |
QDateTime | 0.23 | 70 | 185 | 72.55 | 40 | 1 | 6 | |
QTextCodecFromIODDecoder | 0.23 | 13 | 1 | 7.14 | 8 | 1 | 5 | |
MemberNameInfoIterator | 0.21 | 0 | 0 | - | 3 | 1 | 3 | |
ClassDefImpl | 0.21 | 40 | 8 | 16.67 | 7 | 1 | 6 | |
BaseClassListIterator | 0.21 | 0 | 2 | 100 | 3 | 1 | 3 | |
MemberNameInfoSDict | 0.21 | 1 | 0 | 0 | 5 | 1 | 3 | |
UsesClassDict | 0.21 | 0 | 2 | 100 | 4 | 1 | 2 | |
FileStorage | 0.21 | 2 | 0 | 0 | 6 | 1 | 3 | |
QXmlReader | 0.2 | 0 | 3 | 100 | 23 | 1 | 8 | |
QXmlSimpleReader+EntityRecognitionContext | 0.2 | - | 0 | - | 0 | 1 | 0 | |
QXmlNamespaceSupport | 0.2 | 52 | 113 | 68.48 | 28 | 1 | 8 | |
QXmlSimpleReaderPrivate | 0.2 | 0 | 6 | 100 | 3 | 1 | 0 | |
QXmlSimpleReaderPrivate+ExternParameterEntity | 0.2 | 0 | 1 | 100 | 5 | 1 | 1 | |
QXmlSimpleReaderPrivate+Standalone | 0.2 | - | 0 | - | 0 | 1 | 0 | |
QXmlSimpleReaderPrivate+ExternEntity | 0.2 | 0 | 0 | - | 5 | 1 | 1 | |
DirList | 0.2 | 1 | 1 | 50 | 5 | 1 | 4 | |
VariableContext+Scope | 0.2 | 10 | 0 | 0 | 8 | 1 | 6 | |
EntryNav | 0.19 | 42 | 19 | 31.15 | 25 | 1 | 11 | |
QGString | 0.19 | 151 | 10 | 6.21 | 48 | 1 | 2 | |
BaseInfo | 0.19 | 0 | 3 | 100 | 2 | 1 | 2 | |
RelatesType | 0.19 | - | 0 | - | 0 | 1 | 0 | |
MethodTypes | 0.19 | - | 0 | - | 0 | 1 | 0 | |
QDir+SortSpec | 0.19 | - | 0 | - | 0 | 1 | 0 | |
QDirSortItem | 0.19 | 0 | 0 | - | 2 | 1 | 0 | |
QDir+FilterSpec | 0.19 | - | 0 | - | 0 | 1 | 0 | |
QMapPrivate<Key,T> | 0.15 | 100 | 22 | 18.03 | 35 | 0 | 7 | |
QTextIStream | 0.15 | 0 | 0 | - | 5 | 0 | 3 | |
TranslatorItalian | 0.15 | 501 | 484 | 49.14 | 308 | 0 | 6 | |
MemberDict | 0.15 | 0 | 0 | - | 3 | 0 | 2 | |
TranslatorJapanese | 0.15 | 369 | 484 | 56.74 | 246 | 0 | 6 | |
TranslatorCzech | 0.15 | 506 | 532 | 51.25 | 311 | 0 | 6 | |
TranslatorGerman | 0.15 | 489 | 503 | 50.71 | 297 | 0 | 6 | |
TranslatorIndonesian | 0.15 | 384 | 493 | 56.21 | 264 | 0 | 6 | |
TranslatorFrench | 0.15 | 388 | 488 | 55.71 | 262 | 0 | 6 | |
ClassListIterator | 0.15 | 0 | 0 | - | 2 | 0 | 3 | |
ClassDict | 0.15 | 0 | 0 | - | 3 | 0 | 2 | |
TranslatorSwedish | 0.15 | 380 | 309 | 44.85 | 258 | 0 | 6 | |
TranslatorDutch | 0.15 | 454 | 366 | 44.63 | 296 | 0 | 6 | |
OutputNameList | 0.15 | 3 | 0 | 0 | 4 | 0 | 4 | |
MemberNameIterator | 0.15 | 0 | 0 | - | 2 | 0 | 3 | |
CLanguageScanner | 0.15 | 7 | 18 | 72 | 9 | 0 | 8 | |
CPPValue | 0.15 | 9 | 0 | 0 | 10 | 0 | 3 | |
QLatin1Codec | 0.15 | 30 | 1 | 3.23 | 18 | 0 | 4 | |
DocLexerContext | 0.15 | 0 | 0 | - | 3 | 0 | 0 | |
Tokens | 0.15 | - | 0 | - | 0 | 0 | 0 | |
yy_buffer_state | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
TokenInfo+ParamDir | 0.15 | - | 0 | - | 0 | 0 | 0 | |
TokenInfo | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
STLInfo | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
QSimpleTextCodec | 0.15 | 79 | 5 | 5.95 | 38 | 0 | 7 | |
OutputNameDict | 0.15 | 0 | 0 | - | 3 | 0 | 2 | |
QConstString | 0.15 | 1 | 25 | 96.15 | 4 | 0 | 4 | |
QtMsgType | 0.15 | - | 0 | - | 0 | 0 | 0 | |
TranslatorDecoder | 0.15 | 242 | 112 | 31.64 | 228 | 0 | 4 | |
Directory | 0.15 | 6 | 0 | 0 | 8 | 0 | 5 | |
FindBaseClassRelation_Mode | 0.15 | - | 0 | - | 0 | 0 | 0 | |
PrefixIgnoreClassList | 0.15 | 7 | 2 | 22.22 | 5 | 0 | 5 | |
MemberIndexList | 0.15 | 3 | 1 | 25 | 5 | 0 | 5 | |
TranslatorJapaneseEn | 0.15 | 5 | 11 | 68.75 | 9 | 0 | 2 | |
TranslatorPersian | 0.15 | 462 | 526 | 53.24 | 296 | 0 | 6 | |
TranslatorArabic | 0.15 | 395 | 499 | 55.82 | 262 | 0 | 6 | |
yy_buffer_state | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
UsesClassDictIterator | 0.15 | 0 | 2 | 100 | 2 | 0 | 3 | |
TranslatorAfrikaans | 0.15 | 382 | 466 | 54.95 | 260 | 0 | 6 | |
TranslatorSerbian | 0.15 | 493 | 548 | 52.64 | 313 | 0 | 6 | |
TranslatorGreek | 0.15 | 409 | 474 | 53.68 | 272 | 0 | 6 | |
TranslatorLithuanian | 0.15 | 393 | 476 | 54.78 | 259 | 0 | 6 | |
TranslatorCatalan | 0.15 | 508 | 546 | 51.8 | 314 | 0 | 6 | |
ValStack<T> | 0.15 | 18 | 0 | 0 | 10 | 0 | 1 | |
TextGeneratorXMLImpl | 0.15 | 2 | 0 | 0 | 7 | 0 | 3 | |
TranslatorMacedonian | 0.15 | 47 | 523 | 91.75 | 226 | 0 | 0 | |
XMLCodeGenerator | 0.15 | 72 | 24 | 25 | 35 | 0 | 6 | |
XmlSectionMapper | 0.15 | 35 | 1 | 2.78 | 4 | 0 | 2 | |
yy_buffer_state | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
FileState | 0.15 | 0 | 0 | - | 3 | 0 | 0 | |
FindFileCacheElem | 0.15 | 0 | 1 | 100 | 3 | 0 | 1 | |
TemplateCtx | 0.15 | 4 | 0 | 0 | 3 | 0 | 0 | |
TranslatorHungarian | 0.15 | 387 | 473 | 55 | 273 | 0 | 6 | |
TranslatorPortuguese | 0.15 | 371 | 431 | 53.74 | 255 | 0 | 6 | |
TranslatorKorean | 0.15 | 498 | 555 | 52.71 | 310 | 0 | 6 | |
TranslatorKoreanEn | 0.15 | 5 | 4 | 44.44 | 9 | 0 | 2 | |
TranslatorPolish | 0.15 | 392 | 457 | 53.83 | 273 | 0 | 6 | |
TranslatorFinnish | 0.15 | 489 | 900 | 64.79 | 316 | 0 | 6 | |
TranslatorSpanish | 0.15 | 497 | 528 | 51.51 | 310 | 0 | 6 | |
TranslatorCroatian | 0.15 | 464 | 355 | 43.35 | 302 | 0 | 6 | |
TranslatorRussian | 0.15 | 566 | 490 | 46.4 | 333 | 0 | 6 | |
TranslatorDanish | 0.15 | 361 | 451 | 55.54 | 246 | 0 | 7 | |
TranslatorBrazilian | 0.15 | 504 | 515 | 50.54 | 312 | 0 | 6 | |
TranslatorUkrainian | 0.15 | 433 | 457 | 51.35 | 285 | 0 | 6 | |
TranslatorSlovak | 0.15 | 368 | 366 | 49.86 | 249 | 0 | 6 | |
TranslatorNorwegian | 0.15 | 393 | 476 | 54.78 | 271 | 0 | 6 | |
TranslatorSlovene | 0.15 | 350 | 361 | 50.77 | 247 | 0 | 6 | |
TranslatorRomanian | 0.15 | 395 | 476 | 54.65 | 272 | 0 | 6 | |
TranslatorChinesetraditional | 0.15 | 457 | 592 | 56.43 | 285 | 0 | 6 | |
TranslatorChinese | 0.15 | 441 | 595 | 57.43 | 282 | 0 | 6 | |
MemberNameSDict | 0.15 | 3 | 0 | 0 | 4 | 0 | 5 | |
SIntDict<T>+Iterator | 0.15 | 7 | 21 | 75 | 7 | 0 | 1 | |
QCacheIterator<type> | 0.15 | 15 | 0 | 0 | 17 | 0 | 2 | |
QTSManip | 0.15 | 3 | 1 | 25 | 4 | 0 | 1 | |
SourceReference | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
IndexList | 0.15 | 21 | 0 | 0 | 19 | 0 | 6 | |
QValueListPrivate<T> | 0.15 | 74 | 4 | 5.13 | 25 | 0 | 5 | |
SIntList<T> | 0.15 | 1 | 0 | 0 | 3 | 0 | 2 | |
SDict<T>+IteratorDict | 0.15 | 8 | 22 | 73.33 | 8 | 0 | 2 | |
QIntDictIterator<type> | 0.15 | 9 | 0 | 0 | 11 | 0 | 3 | |
QTextOStreamIterator<T> | 0.15 | 7 | 0 | 0 | 7 | 0 | 2 | |
FileCache | 0.15 | 0 | 0 | - | 2 | 0 | 0 | |
DirSDict | 0.15 | 1 | 0 | 0 | 4 | 0 | 4 | |
EntryCache | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
LookupInfo | 0.15 | 0 | 0 | - | 2 | 0 | 3 | |
TextGeneratorOLImpl | 0.15 | 18 | 0 | 0 | 11 | 0 | 4 | |
SectionDict | 0.15 | 0 | 0 | - | 3 | 0 | 2 | |
StringDict | 0.15 | 0 | 0 | - | 4 | 0 | 2 | |
SList<T> | 0.15 | 1 | 0 | 0 | 3 | 0 | 2 | |
NamespaceMemberHighlight | 0.15 | - | 0 | - | 0 | 0 | 0 | |
QXmlInputSourcePrivate | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
Entry+GroupDocType | 0.15 | - | 0 | - | 0 | 0 | 0 | |
Entry+ClassSpecifier | 0.15 | - | 0 | - | 0 | 0 | 0 | |
QXmlDefaultHandlerPrivate | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
ClassHighlight | 0.15 | - | 0 | - | 0 | 0 | 0 | |
QXmlParseExceptionPrivate | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
QXmlLocatorPrivate | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
QXmlAttributesPrivate | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
ClassMemberHighlight | 0.15 | - | 0 | - | 0 | 0 | 0 | |
QXmlDefaultHandler | 0.15 | 26 | 613 | 95.93 | 29 | 0 | 12 | |
DefinitionListIterator | 0.15 | 0 | 0 | - | 2 | 0 | 3 | |
IndexSections | 0.15 | - | 0 | - | 0 | 0 | 0 | |
DocInfo | 0.15 | 0 | 0 | - | 1 | 0 | 0 | |
QXmlNamespaceSupportPrivate | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
FileMemberHighlight | 0.15 | - | 0 | - | 0 | 0 | 0 | |
BriefInfo | 0.15 | 0 | 0 | - | 1 | 0 | 0 | |
QFileInfo+PermissionSpec | 0.15 | - | 0 | - | 0 | 0 | 0 | |
QSortedList<type> | 0.15 | 5 | 0 | 0 | 7 | 0 | 1 | |
DefineList | 0.15 | 1 | 0 | 0 | 4 | 0 | 4 | |
QStrIVec | 0.15 | 2 | 0 | 0 | 5 | 0 | 3 | |
DefineNameList | 0.15 | 1 | 0 | 0 | 4 | 0 | 3 | |
yy_buffer_state | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
LabelMapper | 0.15 | 8 | 0 | 0 | 6 | 0 | 6 | |
NamespaceListIterator | 0.15 | 0 | 0 | - | 1 | 0 | 3 | |
yy_buffer_state | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
MD5Context | 0.15 | 0 | 6 | 100 | 0 | 0 | 0 | |
QUtf8Codec | 0.15 | 42 | 2 | 4.55 | 20 | 0 | 6 | |
QUtf16Codec | 0.15 | 9 | 0 | 0 | 9 | 0 | 5 | |
StreamStorage | 0.15 | 26 | 0 | 0 | 13 | 0 | 2 | |
yy_buffer_state | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
FileNameListIterator | 0.15 | 0 | 0 | - | 2 | 0 | 3 | |
FileNameDict | 0.15 | 0 | 0 | - | 3 | 0 | 3 | |
FileNameIterator | 0.15 | 0 | 0 | - | 2 | 0 | 3 | |
SCString | 0.15 | 15 | 12 | 44.44 | 67 | 0 | 1 | |
NamespaceDict | 0.15 | 0 | 0 | - | 3 | 0 | 2 | |
HtmlTagType | 0.15 | - | 0 | - | 0 | 0 | 0 | |
CommandType | 0.15 | - | 0 | - | 0 | 0 | 0 | |
Mappers | 0.15 | 4 | 0 | 0 | 1 | 0 | 0 | |
Mapper | 0.15 | 10 | 0 | 0 | 8 | 0 | 5 | |
QPtrDictIterator<type> | 0.15 | 9 | 0 | 0 | 11 | 0 | 3 | |
DirRelation | 0.15 | 33 | 7 | 17.5 | 6 | 0 | 11 | |
QQueue<type> | 0.15 | 15 | 0 | 0 | 17 | 0 | 2 | |
QStrIList | 0.15 | 2 | 0 | 0 | 4 | 0 | 3 | |
yy_buffer_state | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
CondCtx | 0.15 | 0 | 0 | - | 3 | 0 | 1 | |
BufStr | 0.15 | 29 | 6 | 17.14 | 19 | 0 | 2 | |
ConfigFileState | 0.15 | 0 | 4 | 100 | 3 | 0 | 0 | |
yy_buffer_state | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
VariableContext | 0.15 | 136 | 61 | 30.96 | 41 | 0 | 13 | |
MethodContext | 0.15 | 5 | 0 | 0 | 3 | 0 | 1 | |
yy_buffer_state | 0.15 | 0 | 0 | - | 0 | 0 | 0 | |
CallContext | 0.15 | 31 | 2 | 6.06 | 15 | 0 | 7 |
Types Metrics : Code Members and Inheritance
Type Name | # Instance Methods | Nb Static Methods | Nb Properties | # Fields | # Children Classes | Depth Of Inheritance Tree | Type Namespace |
---|---|---|---|---|---|---|---|
Type Name | Nb Instance Methods | Nb Static Methods | Nb Properties | Nb Fields | Nb Children Classes | Depth Of Inheritance Tree | Type Namespace |
qtoolsGlobalMembers | 179 | 31 | 0 | 266 | 0 | 0 | |
QString | 118 | 14 | 0 | 3 | 1 | 0 | |
QCString | 66 | 1 | 0 | 1 | 0 | 0 | |
CppDependencyGlobalMembers | 457 | 369 | 15 | 566 | 0 | 0 | |
QCollection | 10 | 0 | 2 | 1 | 49 | 0 | |
QList<type> | 41 | 0 | 0 | 0 | 25 | 2 | |
QChar | 37 | 1 | 0 | 7 | 0 | 0 | |
QGList | 47 | 0 | 0 | 6 | 28 | 1 | |
QShared | 4 | 0 | 0 | 1 | - | - | |
ClassDef+CompoundType | - | - | - | - | - | - | |
Config | 25 | 2 | 0 | 5 | 0 | 0 | |
Translator | 225 | 0 | 216 | 4 | 46 | 0 | |
QGArray | 30 | 1 | 0 | 1 | 1 | 0 | |
QArray<type> | 36 | 0 | 0 | 0 | 0 | 1 | |
QDict<type> | 17 | 0 | 0 | 0 | 8 | 2 | |
Definition | 73 | 2 | 3 | 4 | 5 | 1 | |
QListIterator<type> | 17 | 0 | 0 | 0 | 10 | 1 | |
QLNode | 3 | 0 | 0 | 3 | 0 | 0 | |
QBaseBucket | 6 | 0 | 0 | 2 | 4 | 0 | |
FileDef | 75 | 0 | 0 | 26 | 0 | 2 | |
MemberDef | 160 | 0 | 0 | 5 | 0 | 2 | |
QTextStream | 79 | 0 | 0 | 17 | 2 | 0 | |
SDict<T> | 17 | 0 | 0 | 3 | 8 | 0 | |
QChar+Decomposition | - | - | - | - | - | - | |
QTextCodec | 18 | 10 | 3 | 0 | 6 | 0 | |
ClassDef | 122 | 0 | 0 | 2 | 0 | 2 | |
QGDict | 33 | 0 | 0 | 7 | 13 | 1 | |
QChar+Direction | - | - | - | - | - | - | |
QValueListNode<T> | 2 | 0 | 0 | 3 | 0 | 0 | |
TranslatorEnglish | 220 | 0 | 0 | 0 | 3 | 1 | |
QMapNodeBase | 4 | 0 | 0 | 4 | - | - | |
QGListIterator | 14 | 0 | 0 | 2 | 11 | 0 | |
QCharRef | 35 | 0 | 0 | 2 | 0 | 0 | |
QDataStream | 43 | 0 | 0 | 6 | 0 | 0 | |
QGDict+KeyType | - | - | - | - | - | - | |
QRegExp | 20 | 0 | 0 | 5 | 0 | 0 | |
QStack<type> | 17 | 0 | 0 | 0 | 0 | 2 | |
TranslatorAdapterBase | 6 | 0 | 1 | 1 | 27 | 1 | |
DefinitionIntf+DefType | - | - | - | - | - | - | |
QStringData | 5 | 0 | 0 | 5 | - | - | |
QIODevice | 43 | 0 | 9 | 3 | 4 | 0 | |
QTextDecoder | 5 | 0 | 1 | 0 | 4 | 0 | |
QGVector | 28 | 1 | 0 | 3 | 3 | 1 | |
QBidiState | 3 | 0 | 0 | 2 | 0 | 0 | |
QLigature | 8 | 0 | 0 | 2 | 0 | 0 | |
QValueListIterator<T> | 11 | 0 | 0 | 1 | 0 | 0 | |
Protection | - | - | - | - | - | - | |
QGArray+array_data | 2 | 0 | 0 | 2 | - | - | |
OutputGenerator+OutputType | - | - | - | - | - | - | |
QChar+Joining | - | - | - | - | - | - | |
QChar+Category | - | - | - | - | - | - | |
ConfigOption+OptionType | - | - | - | - | - | - | |
QGDictIterator | 13 | 0 | 0 | 3 | 4 | 0 | |
QValueList<T> | 39 | 0 | 0 | 1 | 2 | 0 | |
LockableObj | 7 | 0 | 2 | 1 | 6 | 0 | |
Specifier | - | - | - | - | - | - | |
TranslatorAdapter_1_4_6 | 7 | 0 | 0 | 0 | 20 | 3 | |
ConfigOption | 19 | 0 | 2 | 6 | 7 | 0 | |
QFile | 31 | 6 | 0 | 7 | 1 | 1 | |
CodeOutputInterface | 15 | 0 | 11 | 0 | 6 | 0 | |
Store | 14 | 0 | 0 | 6 | 0 | 1 | |
QMapNode<K,T> | 4 | 0 | 0 | 2 | - | - | |
QMapNodeBase+Color | - | - | - | - | - | - | |
SIntDict<T> | 14 | 0 | 0 | 3 | 0 | 0 | |
QStrList | 9 | 0 | 0 | 1 | 1 | 3 | |
QXmlSimpleReader | 76 | 0 | 0 | 25 | 0 | 1 | |
QCacheItem | 3 | 0 | 0 | 6 | - | - | |
NamespaceDef | 48 | 0 | 0 | 11 | 0 | 2 | |
QChar+AnonymousEnum | - | - | - | - | - | - | |
Doxygen | 0 | 0 | 0 | 62 | 0 | 0 | |
Debug | 0 | 5 | 0 | 2 | 0 | 0 | |
QValueListConstIterator<T> | 11 | 0 | 0 | 1 | 0 | 0 | |
StorageIntf | 6 | 0 | 2 | 0 | 3 | 0 | |
FileName | 8 | 0 | 0 | 2 | 0 | 4 | |
TranslatorAdapter_1_5_4 | 27 | 0 | 0 | 0 | 26 | 2 | |
QBuffer | 19 | 0 | 0 | 3 | 0 | 1 | |
OutputList | 193 | 0 | 0 | 1 | 0 | 3 | |
SectionInfo+SectionType | - | - | - | - | - | - | |
BaseOutputDocInterface | 62 | 0 | 56 | 0 | 3 | 1 | |
Debug+DebugMask | - | - | - | - | - | - | |
FileList | 6 | 0 | 0 | 1 | 1 | 3 | |
MemberList+ListType | - | - | - | - | - | - | |
QTextEncoder | 5 | 0 | 1 | 0 | 2 | 0 | |
QMapIterator<K,T> | 16 | 0 | 0 | 1 | 0 | 0 | |
QIntDict<type> | 17 | 0 | 0 | 0 | 1 | 2 | |
UsesClassDef | 4 | 0 | 0 | 4 | - | - | |
QXmlInputSource | 9 | 0 | 0 | 2 | 0 | 0 | |
DirDef | 33 | 3 | 0 | 9 | 0 | 2 | |
MemberNameInfo | 6 | 0 | 0 | 1 | 0 | 3 | |
QXmlParseException | 8 | 0 | 0 | 6 | 0 | 0 | |
ParserInterface | 8 | 0 | 5 | 0 | 1 | 0 | |
ConfigOption+AnonymousEnum | - | - | - | - | - | - | |
MemberDef+MemberType | - | - | - | - | - | - | |
ListItemInfo | 2 | 0 | 0 | 2 | - | - | |
LockingPtr<T> | 13 | 0 | 0 | 2 | 0 | 0 | |
QVector<type> | 26 | 0 | 0 | 0 | 2 | 2 | |
Argument | 5 | 0 | 0 | 6 | - | - | |
BaseClassDef | 3 | 0 | 0 | 5 | - | - | |
DefinitionIntf | 5 | 0 | 1 | 0 | 7 | 0 | |
QDataStream+ByteOrder | - | - | - | - | - | - | |
QMapConstIterator<K,T> | 15 | 0 | 0 | 1 | 0 | 0 | |
MemberInfo | 3 | 0 | 0 | 7 | - | - | |
QStringBucket | 3 | 0 | 0 | 1 | 0 | 1 | |
QAsciiBucket | 3 | 0 | 0 | 1 | 0 | 1 | |
QPtrBucket | 3 | 0 | 0 | 1 | 0 | 1 | |
QIntBucket | 3 | 0 | 0 | 1 | 0 | 1 | |
MemberName | 6 | 0 | 0 | 1 | 0 | 3 | |
SDict<T>+Iterator | 7 | 0 | 0 | 1 | 0 | 0 | |
QGCache | 20 | 0 | 0 | 6 | 1 | 1 | |
TextGeneratorIntf | 7 | 0 | 3 | 0 | 2 | 0 | |
DefinitionList | 6 | 0 | 0 | 0 | 0 | 3 | |
QXmlAttributes | 16 | 0 | 0 | 5 | 0 | 0 | |
QXmlLocator | 5 | 0 | 0 | 2 | 0 | 0 | |
QTextStream+Encoding | - | - | - | - | - | - | |
BaseOutputDocInterface+SectionTypes | - | - | - | - | - | - | |
TranslatorAdapter_1_4_1 | 6 | 0 | 0 | 0 | 10 | 4 | |
Define | 4 | 0 | 0 | 14 | 0 | 0 | |
QCList | 15 | 0 | 0 | 8 | 0 | 3 | |
FilePair | 5 | 0 | 0 | 2 | 0 | 0 | |
QTextCodecFromIOD | 13 | 0 | 0 | 8 | 0 | 1 | |
ClassList | 5 | 0 | 0 | 0 | 1 | 3 | |
QGCache+KeyType | - | - | - | - | - | - | |
MemberList | 34 | 0 | 0 | 14 | 0 | 3 | |
QGCacheIterator | 18 | 0 | 0 | 1 | 1 | 0 | |
QCache<type> | 18 | 0 | 0 | 0 | 0 | 2 | |
QTextOStream | 5 | 0 | 0 | 0 | 0 | 1 | |
SectionInfo | 4 | 0 | 0 | 7 | - | - | |
Entry | 15 | 0 | 0 | 28 | 0 | 0 | |
NamespaceList | 4 | 0 | 0 | 0 | 0 | 3 | |
BaseOutputDocInterface+ParamListTypes | - | - | - | - | - | - | |
Store+State | - | - | - | - | - | - | |
Store+Node | 2 | 0 | 0 | 2 | - | - | |
BaseClassList | 5 | 0 | 0 | 0 | 0 | 3 | |
ConfigString+WidgetType | - | - | - | - | - | - | |
ArgumentList | 5 | 0 | 0 | 3 | 0 | 3 | |
QDictIterator<type> | 11 | 0 | 0 | 0 | 1 | 1 | |
QDir | 45 | 15 | 0 | 8 | 0 | 0 | |
ConfigList+WidgetType | - | - | - | - | - | - | |
TranslatorAdapter_1_3_3 | 9 | 0 | 0 | 0 | 5 | 7 | |
Entry+Sections | - | - | - | - | - | - | |
OutputDocInterface | 11 | 0 | 8 | 0 | 1 | 2 | |
ParserManager | 3 | 0 | 0 | 2 | 0 | 0 | |
ObjCache+HashNode | 2 | 0 | 0 | 4 | - | - | |
ObjCache+CacheNode | 2 | 0 | 0 | 3 | - | - | |
QFileInfo | 39 | 2 | 0 | 3 | 0 | 0 | |
QMultiByteUnicodeTable | 3 | 0 | 0 | 2 | - | - | |
ClassSDict | 6 | 0 | 0 | 0 | 0 | 1 | |
HighlightedItem | - | - | - | - | - | - | |
QStrVec | 10 | 0 | 0 | 1 | 1 | 3 | |
QPtrDict<type> | 17 | 0 | 0 | 0 | 0 | 2 | |
FileNameList | 6 | 0 | 0 | 0 | 0 | 3 | |
CPPValue+Type | - | - | - | - | - | - | |
DefineName | 5 | 0 | 0 | 1 | 0 | 3 | |
CPPValue+Anonymous | 0 | 0 | - | 2 | - | - | |
QStringBuffer | 15 | 0 | 0 | 1 | 0 | 1 | |
QTextStreamPrivate+SourceType | - | - | - | - | - | - | |
QTextStream+AnonymousEnum | - | - | - | - | - | - | |
QTextStreamPrivate | 3 | 0 | 0 | 3 | 0 | 0 | |
IncludeInfo | 3 | 0 | 0 | 4 | - | - | |
QTextStatelessDecoder | 5 | 0 | 0 | 1 | 0 | 1 | |
QTextStatelessEncoder | 5 | 0 | 0 | 1 | 0 | 1 | |
QWindowsLocalCodec | 9 | 0 | 0 | 0 | 0 | 1 | |
ConfigList | 11 | 0 | 0 | 2 | 0 | 1 | |
ConfigEnum | 10 | 0 | 0 | 3 | 0 | 1 | |
ConfigString | 11 | 0 | 0 | 3 | 0 | 1 | |
ConfigObsolete | 6 | 0 | 0 | 0 | 0 | 1 | |
ConfigBool | 11 | 0 | 0 | 3 | 0 | 1 | |
ConfigInt | 12 | 0 | 0 | 5 | 0 | 1 | |
ConfigInfo | 6 | 0 | 0 | 0 | 0 | 1 | |
QXmlLexicalHandler | 10 | 0 | 6 | 0 | 1 | 0 | |
QXmlErrorHandler | 8 | 0 | 4 | 0 | 1 | 0 | |
QXmlDeclHandler | 8 | 0 | 4 | 0 | 1 | 0 | |
QXmlDTDHandler | 7 | 0 | 3 | 0 | 1 | 0 | |
QXmlContentHandler | 16 | 0 | 12 | 0 | 1 | 0 | |
QXmlEntityResolver | 6 | 0 | 2 | 0 | 1 | 0 | |
DirEntry+EntryKind | - | - | - | - | - | - | |
QStringList | 10 | 5 | 0 | 0 | 0 | 1 | |
QGDItList | 4 | 0 | 0 | 0 | 0 | 3 | |
TranslatorAdapter_1_3_8 | 6 | 0 | 0 | 0 | 6 | 6 | |
Relationship | - | - | - | - | - | - | |
BodyInfo | 2 | 0 | 0 | 3 | - | - | |
DefinitionImpl | 6 | 0 | 0 | 13 | 0 | 0 | |
MemberSDict | 4 | 0 | 0 | 0 | 0 | 1 | |
TranslatorAdapter_1_3_9 | 11 | 0 | 0 | 0 | 7 | 5 | |
MemberListIterator | 4 | 0 | 0 | 0 | 0 | 2 | |
TranslatorAdapter_1_3_1 | 7 | 0 | 0 | 0 | 3 | 8 | |
QCListIt | 5 | 0 | 0 | 0 | 0 | 2 | |
NamespaceSDict | 6 | 0 | 0 | 0 | 0 | 1 | |
TranslatorAdapter_1_3 | 10 | 0 | 0 | 0 | 2 | 9 | |
QMap<Key,T> | 21 | 0 | 0 | 1 | 0 | 0 | |
QValueStack<T> | 6 | 0 | 0 | 0 | 0 | 1 | |
DirEntry | 12 | 0 | 0 | 6 | 1 | 0 | |
QUtf16Decoder | 5 | 0 | 0 | 4 | 0 | 1 | |
QUtf16Encoder | 5 | 0 | 0 | 1 | 0 | 1 | |
CommandMap | 0 | 0 | 0 | 2 | - | - | |
QDate | 26 | 5 | 0 | 3 | 0 | 0 | |
QTime | 26 | 3 | 0 | 1 | 0 | 0 | |
Entry+MemberSpecifier | - | - | - | - | - | - | |
ObjCache | 13 | 0 | 0 | 10 | 0 | 0 | |
MemberDefImpl | 5 | 0 | 0 | 41 | 0 | 0 | |
SrcLangExt | - | - | - | - | - | - | |
UsedDir | 9 | 0 | 0 | 3 | 0 | 0 | |
QCDict | 17 | 0 | 0 | 0 | 0 | 2 | |
QUtf8Decoder | 5 | 0 | 0 | 2 | 0 | 1 | |
TranslatorAdapter_1_2_18 | 7 | 0 | 0 | 0 | 1 | 10 | |
LabelMap | 0 | 0 | 0 | 2 | - | - | |
IndexIntf | 11 | 0 | 7 | 0 | 1 | 0 | |
FilePairDict | 5 | 0 | 0 | 0 | 0 | 1 | |
DevNullCodeDocInterface | 15 | 0 | 0 | 0 | 0 | 1 | |
PreproData | 1 | 0 | 0 | 4 | - | - | |
OutputGenerator | 112 | 0 | 100 | 9 | 0 | 2 | |
CallContext+Ctx | 3 | 0 | 0 | 4 | - | - | |
Anonymous | 0 | 0 | 0 | 3 | - | - | |
QMapPrivateBase | 8 | 0 | 0 | 1 | 1 | 1 | |
QFileInfoCache | 1 | 0 | 0 | 2 | - | - | |
QDateTime | 24 | 1 | 0 | 2 | 0 | 0 | |
QTextCodecFromIODDecoder | 5 | 0 | 0 | 2 | 0 | 1 | |
MemberNameInfoIterator | 3 | 0 | 0 | 0 | 0 | 2 | |
ClassDefImpl | 5 | 0 | 0 | 37 | 0 | 0 | |
BaseClassListIterator | 3 | 0 | 0 | 0 | 0 | 2 | |
MemberNameInfoSDict | 5 | 0 | 0 | 0 | 0 | 1 | |
UsesClassDict | 4 | 0 | 0 | 0 | 0 | 3 | |
FileStorage | 6 | 0 | 0 | 0 | 0 | 2 | |
QXmlReader | 23 | 0 | 19 | 0 | 1 | 0 | |
QXmlSimpleReader+EntityRecognitionContext | - | - | - | - | - | - | |
QXmlNamespaceSupport | 14 | 0 | 0 | 3 | 0 | 0 | |
QXmlSimpleReaderPrivate | 3 | 0 | 0 | 19 | 0 | 0 | |
QXmlSimpleReaderPrivate+ExternParameterEntity | 5 | 0 | 0 | 2 | - | - | |
QXmlSimpleReaderPrivate+Standalone | - | - | - | - | - | - | |
QXmlSimpleReaderPrivate+ExternEntity | 5 | 0 | 0 | 3 | - | - | |
DirList | 5 | 0 | 0 | 0 | 0 | 3 | |
VariableContext+Scope | 6 | 0 | 0 | 2 | 0 | 1 | |
EntryNav | 18 | 0 | 0 | 10 | 0 | 0 | |
QGString | 22 | 0 | 0 | 3 | 0 | 0 | |
BaseInfo | 2 | 0 | 0 | 3 | - | - | |
RelatesType | - | - | - | - | - | - | |
MethodTypes | - | - | - | - | - | - | |
QDir+SortSpec | - | - | - | - | - | - | |
QDirSortItem | 2 | 0 | 0 | 2 | - | - | |
QDir+FilterSpec | - | - | - | - | - | - | |
QMapPrivate<Key,T> | 16 | 0 | 0 | 1 | 0 | 2 | |
QTextIStream | 5 | 0 | 0 | 0 | 0 | 1 | |
TranslatorItalian | 220 | 0 | 0 | 0 | 0 | 1 | |
MemberDict | 3 | 0 | 0 | 0 | 0 | 3 | |
TranslatorJapanese | 208 | 0 | 0 | 0 | 0 | 3 | |
TranslatorCzech | 220 | 0 | 0 | 0 | 0 | 1 | |
TranslatorGerman | 220 | 0 | 0 | 0 | 0 | 1 | |
TranslatorIndonesian | 206 | 0 | 0 | 0 | 0 | 4 | |
TranslatorFrench | 198 | 0 | 0 | 0 | 0 | 3 | |
ClassListIterator | 2 | 0 | 0 | 0 | 0 | 2 | |
ClassDict | 3 | 0 | 0 | 0 | 0 | 3 | |
TranslatorSwedish | 196 | 0 | 0 | 0 | 0 | 4 | |
TranslatorDutch | 220 | 0 | 0 | 0 | 0 | 1 | |
OutputNameList | 4 | 0 | 0 | 0 | 0 | 3 | |
MemberNameIterator | 2 | 0 | 0 | 0 | 0 | 2 | |
CLanguageScanner | 9 | 0 | 0 | 0 | 0 | 1 | |
CPPValue | 7 | 0 | 0 | 2 | 0 | 0 | |
QLatin1Codec | 10 | 0 | 0 | 1 | 0 | 1 | |
DocLexerContext | 3 | 0 | 0 | 5 | - | - | |
Tokens | - | - | - | - | - | - | |
yy_buffer_state | 0 | 0 | 0 | 10 | - | - | |
TokenInfo+ParamDir | - | - | - | - | - | - | |
TokenInfo | 0 | 0 | 0 | 13 | - | - | |
STLInfo | 0 | 0 | 0 | 9 | - | - | |
QSimpleTextCodec | 10 | 0 | 0 | 1 | 0 | 1 | |
OutputNameDict | 3 | 0 | 0 | 0 | 0 | 3 | |
QConstString | 4 | 0 | 0 | 0 | 0 | 1 | |
QtMsgType | - | - | - | - | - | - | |
TranslatorDecoder | 224 | 0 | 0 | 3 | 0 | 1 | |
Directory | 8 | 0 | 0 | 1 | 0 | 1 | |
FindBaseClassRelation_Mode | - | - | - | - | - | - | |
PrefixIgnoreClassList | 5 | 0 | 0 | 0 | 0 | 4 | |
MemberIndexList | 5 | 0 | 0 | 0 | 0 | 3 | |
TranslatorJapaneseEn | 9 | 0 | 0 | 0 | 0 | 2 | |
TranslatorPersian | 220 | 0 | 0 | 0 | 0 | 1 | |
TranslatorArabic | 206 | 0 | 0 | 0 | 0 | 4 | |
yy_buffer_state | 0 | 0 | 0 | 10 | - | - | |
UsesClassDictIterator | 2 | 0 | 0 | 0 | 0 | 2 | |
TranslatorAfrikaans | 196 | 0 | 0 | 0 | 0 | 4 | |
TranslatorSerbian | 221 | 0 | 0 | 0 | 0 | 1 | |
TranslatorGreek | 207 | 0 | 0 | 0 | 0 | 3 | |
TranslatorLithuanian | 196 | 0 | 0 | 0 | 0 | 4 | |
TranslatorCatalan | 220 | 0 | 0 | 0 | 0 | 1 | |
ValStack<T> | 9 | 0 | 0 | 3 | 0 | 0 | |
TextGeneratorXMLImpl | 7 | 0 | 0 | 1 | 0 | 1 | |
TranslatorMacedonian | 216 | 0 | 0 | 0 | 0 | 0 | |
XMLCodeGenerator | 16 | 0 | 0 | 12 | 0 | 1 | |
XmlSectionMapper | 4 | 0 | 0 | 0 | 0 | 3 | |
yy_buffer_state | 0 | 0 | 0 | 10 | - | - | |
FileState | 3 | 0 | 0 | 6 | - | - | |
FindFileCacheElem | 3 | 0 | 0 | 2 | - | - | |
TemplateCtx | 3 | 0 | 0 | 5 | 0 | 0 | |
TranslatorHungarian | 197 | 0 | 0 | 0 | 0 | 4 | |
TranslatorPortuguese | 194 | 0 | 0 | 0 | 0 | 8 | |
TranslatorKorean | 220 | 0 | 0 | 0 | 0 | 1 | |
TranslatorKoreanEn | 9 | 0 | 0 | 0 | 0 | 2 | |
TranslatorPolish | 207 | 0 | 0 | 0 | 0 | 4 | |
TranslatorFinnish | 220 | 0 | 0 | 0 | 0 | 2 | |
TranslatorSpanish | 220 | 0 | 0 | 0 | 0 | 3 | |
TranslatorCroatian | 221 | 0 | 0 | 0 | 0 | 1 | |
TranslatorRussian | 220 | 0 | 0 | 0 | 0 | 1 | |
TranslatorDanish | 199 | 0 | 0 | 0 | 0 | 3 | |
TranslatorBrazilian | 220 | 0 | 0 | 0 | 0 | 1 | |
TranslatorUkrainian | 206 | 0 | 0 | 0 | 0 | 5 | |
TranslatorSlovak | 186 | 0 | 0 | 0 | 0 | 11 | |
TranslatorNorwegian | 206 | 0 | 0 | 0 | 0 | 4 | |
TranslatorSlovene | 196 | 0 | 0 | 0 | 0 | 4 | |
TranslatorRomanian | 205 | 0 | 0 | 0 | 0 | 5 | |
TranslatorChinesetraditional | 220 | 0 | 0 | 0 | 0 | 1 | |
TranslatorChinese | 220 | 0 | 0 | 0 | 0 | 1 | |
MemberNameSDict | 4 | 0 | 0 | 0 | 0 | 1 | |
SIntDict<T>+Iterator | 7 | 0 | 0 | 1 | 0 | 0 | |
QCacheIterator<type> | 17 | 0 | 0 | 0 | 0 | 1 | |
QTSManip | 4 | 0 | 0 | 2 | 0 | 0 | |
SourceReference | 0 | 0 | 0 | 2 | - | - | |
IndexList | 15 | 0 | 0 | 1 | 0 | 1 | |
QValueListPrivate<T> | 12 | 0 | 0 | 2 | 0 | 1 | |
SIntList<T> | 3 | 0 | 0 | 1 | 0 | 3 | |
SDict<T>+IteratorDict | 8 | 0 | 0 | 1 | 0 | 0 | |
QIntDictIterator<type> | 11 | 0 | 0 | 0 | 0 | 1 | |
QTextOStreamIterator<T> | 6 | 0 | 0 | 2 | 0 | 0 | |
FileCache | 2 | 0 | 0 | 3 | - | - | |
DirSDict | 4 | 0 | 0 | 0 | 0 | 1 | |
EntryCache | 0 | 0 | 0 | 6 | - | - | |
LookupInfo | 2 | 0 | 0 | 4 | - | - | |
TextGeneratorOLImpl | 7 | 0 | 0 | 1 | 0 | 1 | |
SectionDict | 3 | 0 | 0 | 0 | 0 | 3 | |
StringDict | 4 | 0 | 0 | 0 | 0 | 3 | |
SList<T> | 3 | 0 | 0 | 1 | 0 | 3 | |
NamespaceMemberHighlight | - | - | - | - | - | - | |
QXmlInputSourcePrivate | 0 | 0 | 0 | 0 | 0 | 0 | |
Entry+GroupDocType | - | - | - | - | - | - | |
Entry+ClassSpecifier | - | - | - | - | - | - | |
QXmlDefaultHandlerPrivate | 0 | 0 | 0 | 0 | 0 | 0 | |
ClassHighlight | - | - | - | - | - | - | |
QXmlParseExceptionPrivate | 0 | 0 | 0 | 0 | 0 | 0 | |
QXmlLocatorPrivate | 0 | 0 | 0 | 0 | 0 | 0 | |
QXmlAttributesPrivate | 0 | 0 | 0 | 0 | 0 | 0 | |
ClassMemberHighlight | - | - | - | - | - | - | |
QXmlDefaultHandler | 29 | 0 | 0 | 1 | 0 | 1 | |
DefinitionListIterator | 2 | 0 | 0 | 0 | 0 | 2 | |
IndexSections | - | - | - | - | - | - | |
DocInfo | 1 | 0 | 0 | 3 | - | - | |
QXmlNamespaceSupportPrivate | 0 | 0 | 0 | 0 | 0 | 0 | |
FileMemberHighlight | - | - | - | - | - | - | |
BriefInfo | 1 | 0 | 0 | 4 | - | - | |
QFileInfo+PermissionSpec | - | - | - | - | - | - | |
QSortedList<type> | 5 | 0 | 0 | 0 | 0 | 3 | |
DefineList | 4 | 0 | 0 | 0 | 0 | 3 | |
QStrIVec | 5 | 0 | 0 | 0 | 0 | 4 | |
DefineNameList | 4 | 0 | 0 | 0 | 0 | 3 | |
yy_buffer_state | 0 | 0 | 0 | 10 | - | - | |
LabelMapper | 4 | 0 | 0 | 1 | 0 | 0 | |
NamespaceListIterator | 1 | 0 | 0 | 0 | 0 | 2 | |
yy_buffer_state | 0 | 0 | 0 | 10 | - | - | |
MD5Context | 0 | 0 | 0 | 3 | - | - | |
QUtf8Codec | 8 | 0 | 0 | 0 | 0 | 1 | |
QUtf16Codec | 8 | 0 | 0 | 0 | 0 | 1 | |
StreamStorage | 11 | 0 | 0 | 3 | 0 | 1 | |
yy_buffer_state | 0 | 0 | 0 | 10 | - | - | |
FileNameListIterator | 2 | 0 | 0 | 0 | 0 | 2 | |
FileNameDict | 3 | 0 | 0 | 0 | 0 | 3 | |
FileNameIterator | 2 | 0 | 0 | 0 | 0 | 2 | |
SCString | 63 | 1 | 0 | 1 | 0 | 0 | |
NamespaceDict | 3 | 0 | 0 | 0 | 0 | 3 | |
HtmlTagType | - | - | - | - | - | - | |
CommandType | - | - | - | - | - | - | |
Mappers | 0 | 1 | 0 | 2 | - | - | |
Mapper | 5 | 0 | 0 | 2 | 0 | 0 | |
QPtrDictIterator<type> | 11 | 0 | 0 | 0 | 0 | 1 | |
DirRelation | 5 | 0 | 0 | 3 | 0 | 0 | |
QQueue<type> | 16 | 0 | 0 | 0 | 0 | 2 | |
QStrIList | 4 | 0 | 0 | 0 | 0 | 4 | |
yy_buffer_state | 0 | 0 | 0 | 10 | - | - | |
CondCtx | 3 | 0 | 0 | 3 | - | - | |
BufStr | 15 | 0 | 0 | 4 | 0 | 0 | |
ConfigFileState | 3 | 0 | 0 | 5 | - | - | |
yy_buffer_state | 0 | 0 | 0 | 10 | - | - | |
VariableContext | 11 | 0 | 0 | 3 | 0 | 0 | |
MethodContext | 3 | 0 | 0 | 3 | 0 | 0 | |
yy_buffer_state | 0 | 0 | 0 | 10 | - | - | |
CallContext | 9 | 0 | 0 | 1 | 0 | 0 |
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 |
---|---|---|---|---|
Type Name | Lack Of Cohesion Of Methods | Lack Of Cohesion Of Methods HS | Association Between Classes | Type Namespace |
qtoolsGlobalMembers | 0.99 | 0.99 | 192 | |
QString | 0.68 | 0.69 | 121 | |
QCString | 0.43 | 0.44 | 38 | |
CppDependencyGlobalMembers | 1 | 1 | 1527 | |
QCollection | 0.44 | 0.5 | 2 | |
QList<type> | 0 | 0 | 34 | |
QChar | 0.64 | 0.66 | 33 | |
QGList | 0.68 | 0.7 | 20 | |
QShared | 0 | 0 | 0 | |
ClassDef+CompoundType | - | - | 0 | |
Config | 0.69 | 0.72 | 104 | |
Translator | 0 | 0 | 18 | |
QGArray | 0.26 | 0.27 | 21 | |
QArray<type> | 0 | 0 | 16 | |
QDict<type> | 0 | 0 | 14 | |
Definition | 0.85 | 0.86 | 136 | |
QListIterator<type> | 0 | 0 | 15 | |
QLNode | 0.67 | 1.33 | 0 | |
QBaseBucket | 0.4 | 0.5 | 0 | |
FileDef | 0.96 | 0.97 | 207 | |
MemberDef | 0.82 | 0.83 | 250 | |
QTextStream | 0.9 | 0.92 | 110 | |
SDict<T> | 0.45 | 0.48 | 3 | |
QChar+Decomposition | - | - | 0 | |
QTextCodec | 0 | 0 | 45 | |
ClassDef | 0.62 | 0.63 | 387 | |
QGDict | 0.71 | 0.73 | 67 | |
QChar+Direction | - | - | 0 | |
QValueListNode<T> | 0.83 | 1.67 | 0 | |
TranslatorEnglish | 0 | 0 | 22 | |
QMapNodeBase | 0.75 | 1.5 | 0 | |
QGListIterator | 0.29 | 0.31 | 13 | |
QCharRef | 0.03 | 0.03 | 33 | |
QDataStream | 0.73 | 0.75 | 24 | |
QGDict+KeyType | - | - | 0 | |
QRegExp | 0.67 | 0.71 | 36 | |
QStack<type> | 0 | 0 | 13 | |
TranslatorAdapterBase | 1 | 1.5 | 6 | |
DefinitionIntf+DefType | - | - | 0 | |
QStringData | 0.4 | 0.53 | 3 | |
QIODevice | 0.8 | 0.82 | 10 | |
QTextDecoder | 0 | 0 | 0 | |
QGVector | 0.43 | 0.44 | 21 | |
QBidiState | 0 | 0 | 0 | |
QLigature | 0.57 | 0.67 | 14 | |
QValueListIterator<T> | 0 | 0 | 0 | |
Protection | - | - | 0 | |
QGArray+array_data | 0 | 0 | 1 | |
OutputGenerator+OutputType | - | - | 0 | |
QChar+Joining | - | - | 0 | |
QChar+Category | - | - | 0 | |
ConfigOption+OptionType | - | - | 0 | |
QGDictIterator | 0.46 | 0.5 | 18 | |
QValueList<T> | 0.15 | 0.16 | 4 | |
LockableObj | 0.6 | 0.75 | 0 | |
Specifier | - | - | 0 | |
TranslatorAdapter_1_4_6 | 0 | 0 | 9 | |
ConfigOption | 0.91 | 0.97 | 24 | |
QFile | 0.82 | 0.85 | 79 | |
CodeOutputInterface | 0 | 0 | 0 | |
Store | 0.51 | 0.56 | 23 | |
QMapNode<K,T> | 0.38 | 0.5 | 0 | |
QMapNodeBase+Color | - | - | 0 | |
SIntDict<T> | 0.43 | 0.46 | 3 | |
QStrList | 0.56 | 0.62 | 13 | |
QXmlSimpleReader | 0.91 | 0.92 | 139 | |
QCacheItem | 0 | 0 | 0 | |
NamespaceDef | 0.93 | 0.96 | 150 | |
QChar+AnonymousEnum | - | - | 0 | |
Doxygen | 0 | 0 | 0 | |
Debug | 0 | 0 | 5 | |
QValueListConstIterator<T> | 0 | 0 | 0 | |
StorageIntf | 0 | 0 | 0 | |
FileName | 0.58 | 0.7 | 25 | |
TranslatorAdapter_1_5_4 | 0 | 0 | 29 | |
QBuffer | 0.6 | 0.63 | 23 | |
OutputList | 0.81 | 0.81 | 168 | |
SectionInfo+SectionType | - | - | 0 | |
BaseOutputDocInterface | 0 | 0 | 2 | |
Debug+DebugMask | - | - | 0 | |
FileList | 0.4 | 0.5 | 7 | |
MemberList+ListType | - | - | 0 | |
QTextEncoder | 0 | 0 | 0 | |
QMapIterator<K,T> | 0.25 | 0.27 | 6 | |
QIntDict<type> | 0 | 0 | 13 | |
UsesClassDef | 0.58 | 0.88 | 5 | |
QXmlInputSource | 0.64 | 0.75 | 43 | |
DirDef | 0.92 | 0.95 | 118 | |
MemberNameInfo | 0.5 | 0.67 | 13 | |
QXmlParseException | 0.72 | 0.87 | 2 | |
ParserInterface | 0 | 0 | 1 | |
ConfigOption+AnonymousEnum | - | - | 0 | |
MemberDef+MemberType | - | - | 0 | |
ListItemInfo | 0 | 0 | 0 | |
LockingPtr<T> | 0.38 | 0.42 | 4 | |
QVector<type> | 0 | 0 | 21 | |
Argument | 0.58 | 0.78 | 2 | |
BaseClassDef | 0 | 0 | 0 | |
DefinitionIntf | 0 | 0 | 0 | |
QDataStream+ByteOrder | - | - | 0 | |
QMapConstIterator<K,T> | 0.27 | 0.29 | 6 | |
MemberInfo | 0.64 | 1.29 | 0 | |
QStringBucket | 0 | 0 | 1 | |
QAsciiBucket | 0 | 0 | 1 | |
QPtrBucket | 0 | 0 | 1 | |
QIntBucket | 0 | 0 | 1 | |
MemberName | 0.5 | 0.67 | 12 | |
SDict<T>+Iterator | 0 | 0 | 0 | |
QGCache | 0.57 | 0.61 | 62 | |
TextGeneratorIntf | 0 | 0 | 0 | |
DefinitionList | 0 | 0 | 9 | |
QXmlAttributes | 0.86 | 0.92 | 7 | |
QXmlLocator | 0.62 | 0.83 | 2 | |
QTextStream+Encoding | - | - | 0 | |
BaseOutputDocInterface+SectionTypes | - | - | 0 | |
TranslatorAdapter_1_4_1 | 0 | 0 | 8 | |
Define | 0.77 | 1.02 | 4 | |
QCList | 1 | 1.08 | 19 | |
FilePair | 0.33 | 0.5 | 0 | |
QTextCodecFromIOD | 0.75 | 0.82 | 43 | |
ClassList | 0 | 0 | 3 | |
QGCache+KeyType | - | - | 0 | |
MemberList | 0.85 | 0.88 | 95 | |
QGCacheIterator | 0.06 | 0.06 | 21 | |
QCache<type> | 0 | 0 | 17 | |
QTextOStream | 0 | 0 | 5 | |
SectionInfo | 0.33 | 0.5 | 2 | |
Entry | 0.84 | 0.9 | 61 | |
NamespaceList | 0 | 0 | 5 | |
BaseOutputDocInterface+ParamListTypes | - | - | 0 | |
Store+State | - | - | 0 | |
Store+Node | 0 | 0 | 0 | |
BaseClassList | 0 | 0 | 8 | |
ConfigString+WidgetType | - | - | 0 | |
ArgumentList | 0.67 | 1 | 11 | |
QDictIterator<type> | 0 | 0 | 10 | |
QDir | 0.83 | 0.84 | 134 | |
ConfigList+WidgetType | - | - | 0 | |
TranslatorAdapter_1_3_3 | 0 | 0 | 11 | |
Entry+Sections | - | - | 0 | |
OutputDocInterface | 0 | 0 | 1 | |
ParserManager | 0.17 | 0.25 | 11 | |
ObjCache+HashNode | 0 | 0 | 0 | |
ObjCache+CacheNode | 0 | 0 | 0 | |
QFileInfo | 0.59 | 0.6 | 45 | |
QMultiByteUnicodeTable | 0.25 | 0.5 | 0 | |
ClassSDict | 0 | 0 | 68 | |
HighlightedItem | - | - | 0 | |
QStrVec | 0.5 | 0.57 | 10 | |
QPtrDict<type> | 0 | 0 | 13 | |
FileNameList | 0 | 0 | 11 | |
CPPValue+Type | - | - | 0 | |
DefineName | 0.5 | 0.67 | 7 | |
CPPValue+Anonymous | 0 | 0 | 0 | |
QStringBuffer | 0.53 | 0.57 | 18 | |
QTextStreamPrivate+SourceType | - | - | 0 | |
QTextStream+AnonymousEnum | - | - | 0 | |
QTextStreamPrivate | 0.5 | 1 | 0 | |
IncludeInfo | 0.75 | 1.5 | 1 | |
QTextStatelessDecoder | 0 | 0 | 4 | |
QTextStatelessEncoder | 0 | 0 | 4 | |
QWindowsLocalCodec | 0 | 0 | 13 | |
ConfigList | 0.5 | 0.57 | 20 | |
ConfigEnum | 0.57 | 0.67 | 21 | |
ConfigString | 0.67 | 0.75 | 20 | |
ConfigObsolete | 0 | 0 | 2 | |
ConfigBool | 0.5 | 0.57 | 29 | |
ConfigInt | 0.62 | 0.7 | 22 | |
ConfigInfo | 0 | 0 | 10 | |
QXmlLexicalHandler | 0 | 0 | 0 | |
QXmlErrorHandler | 0 | 0 | 0 | |
QXmlDeclHandler | 0 | 0 | 0 | |
QXmlDTDHandler | 0 | 0 | 0 | |
QXmlContentHandler | 0 | 0 | 0 | |
QXmlEntityResolver | 0 | 0 | 0 | |
DirEntry+EntryKind | - | - | 0 | |
QStringList | 0 | 0 | 35 | |
QGDItList | 0 | 0 | 6 | |
TranslatorAdapter_1_3_8 | 0 | 0 | 8 | |
Relationship | - | - | 0 | |
BodyInfo | 0.67 | 0 | 0 | |
DefinitionImpl | 0.63 | 0.85 | 14 | |
MemberSDict | 0 | 0 | 6 | |
TranslatorAdapter_1_3_9 | 0 | 0 | 13 | |
MemberListIterator | 0 | 0 | 2 | |
TranslatorAdapter_1_3_1 | 0 | 0 | 9 | |
QCListIt | 0 | 0 | 2 | |
NamespaceSDict | 0 | 0 | 50 | |
TranslatorAdapter_1_3 | 0 | 0 | 12 | |
QMap<Key,T> | 0.1 | 0.1 | 2 | |
QValueStack<T> | 0 | 0 | 1 | |
DirEntry | 0.73 | 0.81 | 3 | |
QUtf16Decoder | 0.12 | 0.25 | 16 | |
QUtf16Encoder | 0 | 0 | 11 | |
CommandMap | 0 | 0 | 0 | |
QDate | 0.24 | 0.25 | 16 | |
QTime | 0.31 | 0.32 | 17 | |
Entry+MemberSpecifier | - | - | 0 | |
ObjCache | 0.73 | 0.8 | 13 | |
MemberDefImpl | 0.67 | 1 | 25 | |
SrcLangExt | - | - | 0 | |
UsedDir | 0.62 | 0.72 | 12 | |
QCDict | 0 | 0 | 14 | |
QUtf8Decoder | 0.25 | 0.5 | 10 | |
TranslatorAdapter_1_2_18 | 0 | 0 | 9 | |
LabelMap | 0 | 0 | 0 | |
IndexIntf | 0 | 0 | 0 | |
FilePairDict | 0 | 0 | 8 | |
DevNullCodeDocInterface | 0 | 0 | 2 | |
PreproData | 0 | 0 | 0 | |
OutputGenerator | 0.98 | 0.99 | 41 | |
CallContext+Ctx | 0 | 0 | 0 | |
Anonymous | 0 | 0 | 0 | |
QMapPrivateBase | 0.67 | 0.8 | 9 | |
QFileInfoCache | 0 | 0 | 0 | |
QDateTime | 0.23 | 0.24 | 55 | |
QTextCodecFromIODDecoder | 0 | 0 | 12 | |
MemberNameInfoIterator | 0 | 0 | 2 | |
ClassDefImpl | 0.71 | 1.07 | 16 | |
BaseClassListIterator | 0 | 0 | 2 | |
MemberNameInfoSDict | 0 | 0 | 5 | |
UsesClassDict | 0 | 0 | 2 | |
FileStorage | 0 | 0 | 7 | |
QXmlReader | 0 | 0 | 0 | |
QXmlSimpleReader+EntityRecognitionContext | - | - | 0 | |
QXmlNamespaceSupport | 0.69 | 0.76 | 33 | |
QXmlSimpleReaderPrivate | 1 | 0 | 0 | |
QXmlSimpleReaderPrivate+ExternParameterEntity | 0.5 | 1 | 0 | |
QXmlSimpleReaderPrivate+Standalone | - | - | 0 | |
QXmlSimpleReaderPrivate+ExternEntity | 0.5 | 1 | 0 | |
DirList | 0 | 0 | 6 | |
VariableContext+Scope | 0.67 | 1 | 14 | |
EntryNav | 0.77 | 0.82 | 17 | |
QGString | 0.38 | 0.4 | 11 | |
BaseInfo | 0 | 0 | 0 | |
RelatesType | - | - | 0 | |
MethodTypes | - | - | 0 | |
QDir+SortSpec | - | - | 0 | |
QDirSortItem | 0 | 0 | 0 | |
QDir+FilterSpec | - | - | 0 | |
QMapPrivate<Key,T> | 0.19 | 0.2 | 10 | |
QTextIStream | 0 | 0 | 5 | |
TranslatorItalian | 0 | 0 | 23 | |
MemberDict | 0 | 0 | 2 | |
TranslatorJapanese | 0 | 0 | 24 | |
TranslatorCzech | 0 | 0 | 23 | |
TranslatorGerman | 0 | 0 | 22 | |
TranslatorIndonesian | 0 | 0 | 22 | |
TranslatorFrench | 0 | 0 | 22 | |
ClassListIterator | 0 | 0 | 1 | |
ClassDict | 0 | 0 | 2 | |
TranslatorSwedish | 0 | 0 | 22 | |
TranslatorDutch | 0 | 0 | 21 | |
OutputNameList | 0 | 0 | 6 | |
MemberNameIterator | 0 | 0 | 1 | |
CLanguageScanner | 0 | 0 | 13 | |
CPPValue | 0.08 | 0.1 | 5 | |
QLatin1Codec | 1 | 1.14 | 15 | |
DocLexerContext | 0 | 0 | 0 | |
Tokens | - | - | 0 | |
yy_buffer_state | 0 | 0 | 0 | |
TokenInfo+ParamDir | - | - | 0 | |
TokenInfo | 0 | 0 | 0 | |
STLInfo | 0 | 0 | 0 | |
QSimpleTextCodec | 0.25 | 0.29 | 35 | |
OutputNameDict | 0 | 0 | 2 | |
QConstString | 0 | 0 | 4 | |
QtMsgType | - | - | 0 | |
TranslatorDecoder | 0.66 | 0.67 | 232 | |
Directory | 0.5 | 0.6 | 10 | |
FindBaseClassRelation_Mode | - | - | 0 | |
PrefixIgnoreClassList | 0 | 0 | 10 | |
MemberIndexList | 0 | 0 | 6 | |
TranslatorJapaneseEn | 0 | 0 | 4 | |
TranslatorPersian | 0 | 0 | 25 | |
TranslatorArabic | 0 | 0 | 23 | |
yy_buffer_state | 0 | 0 | 0 | |
UsesClassDictIterator | 0 | 0 | 2 | |
TranslatorAfrikaans | 0 | 0 | 23 | |
TranslatorSerbian | 0 | 0 | 23 | |
TranslatorGreek | 0 | 0 | 22 | |
TranslatorLithuanian | 0 | 0 | 22 | |
TranslatorCatalan | 0 | 0 | 22 | |
ValStack<T> | 0.33 | 0.38 | 1 | |
TextGeneratorXMLImpl | 0.25 | 0.33 | 4 | |
TranslatorMacedonian | 0 | 0 | 0 | |
XMLCodeGenerator | 0.7 | 0.75 | 26 | |
XmlSectionMapper | 0 | 0 | 38 | |
yy_buffer_state | 0 | 0 | 0 | |
FileState | 0.5 | 0 | 0 | |
FindFileCacheElem | 0 | 0 | 0 | |
TemplateCtx | 0.2 | 0 | 0 | |
TranslatorHungarian | 0 | 0 | 23 | |
TranslatorPortuguese | 0 | 0 | 22 | |
TranslatorKorean | 0 | 0 | 22 | |
TranslatorKoreanEn | 0 | 0 | 4 | |
TranslatorPolish | 0 | 0 | 22 | |
TranslatorFinnish | 0 | 0 | 24 | |
TranslatorSpanish | 0 | 0 | 22 | |
TranslatorCroatian | 0 | 0 | 24 | |
TranslatorRussian | 0 | 0 | 24 | |
TranslatorDanish | 0 | 0 | 24 | |
TranslatorBrazilian | 0 | 0 | 22 | |
TranslatorUkrainian | 0 | 0 | 24 | |
TranslatorSlovak | 0 | 0 | 22 | |
TranslatorNorwegian | 0 | 0 | 22 | |
TranslatorSlovene | 0 | 0 | 22 | |
TranslatorRomanian | 0 | 0 | 23 | |
TranslatorChinesetraditional | 0 | 0 | 22 | |
TranslatorChinese | 0 | 0 | 23 | |
MemberNameSDict | 0 | 0 | 7 | |
SIntDict<T>+Iterator | 0 | 0 | 0 | |
QCacheIterator<type> | 0 | 0 | 14 | |
QTSManip | 0 | 0 | 0 | |
SourceReference | 0 | 0 | 0 | |
IndexList | 0.54 | 0.58 | 17 | |
QValueListPrivate<T> | 0.33 | 0.36 | 3 | |
SIntList<T> | 0.33 | 0.5 | 1 | |
SDict<T>+IteratorDict | 0 | 0 | 0 | |
QIntDictIterator<type> | 0 | 0 | 10 | |
QTextOStreamIterator<T> | 0.58 | 0.7 | 1 | |
FileCache | 0 | 0 | 0 | |
DirSDict | 0 | 0 | 6 | |
EntryCache | 0 | 0 | 0 | |
LookupInfo | 0.25 | 0.5 | 0 | |
TextGeneratorOLImpl | 0.2 | 0.25 | 10 | |
SectionDict | 0 | 0 | 2 | |
StringDict | 0 | 0 | 2 | |
SList<T> | 0.33 | 0.5 | 1 | |
NamespaceMemberHighlight | - | - | 0 | |
QXmlInputSourcePrivate | 0 | 0 | 0 | |
Entry+GroupDocType | - | - | 0 | |
Entry+ClassSpecifier | - | - | 0 | |
QXmlDefaultHandlerPrivate | 0 | 0 | 0 | |
ClassHighlight | - | - | 0 | |
QXmlParseExceptionPrivate | 0 | 0 | 0 | |
QXmlLocatorPrivate | 0 | 0 | 0 | |
QXmlAttributesPrivate | 0 | 0 | 0 | |
ClassMemberHighlight | - | - | 0 | |
QXmlDefaultHandler | 1 | 1.04 | 15 | |
DefinitionListIterator | 0 | 0 | 2 | |
IndexSections | - | - | 0 | |
DocInfo | 0 | 0 | 0 | |
QXmlNamespaceSupportPrivate | 0 | 0 | 0 | |
FileMemberHighlight | - | - | 0 | |
BriefInfo | 0 | 0 | 0 | |
QFileInfo+PermissionSpec | - | - | 0 | |
QSortedList<type> | 0 | 0 | 2 | |
DefineList | 0 | 0 | 6 | |
QStrIVec | 0 | 0 | 7 | |
DefineNameList | 0 | 0 | 5 | |
yy_buffer_state | 0 | 0 | 0 | |
LabelMapper | 0 | 0 | 7 | |
NamespaceListIterator | 0 | 0 | 1 | |
yy_buffer_state | 0 | 0 | 0 | |
MD5Context | 0 | 0 | 0 | |
QUtf8Codec | 0 | 0 | 14 | |
QUtf16Codec | 0 | 0 | 4 | |
StreamStorage | 0.37 | 0.41 | 5 | |
yy_buffer_state | 0 | 0 | 0 | |
FileNameListIterator | 0 | 0 | 1 | |
FileNameDict | 0 | 0 | 4 | |
FileNameIterator | 0 | 0 | 1 | |
SCString | 0.92 | 0.94 | 3 | |
NamespaceDict | 0 | 0 | 2 | |
HtmlTagType | - | - | 0 | |
CommandType | - | - | 0 | |
Mappers | 0 | 0 | 0 | |
Mapper | 0 | 0 | 13 | |
QPtrDictIterator<type> | 0 | 0 | 10 | |
DirRelation | 0.47 | 0.58 | 27 | |
QQueue<type> | 0 | 0 | 12 | |
QStrIList | 0 | 0 | 6 | |
yy_buffer_state | 0 | 0 | 0 | |
CondCtx | 0 | 0 | 0 | |
BufStr | 0.55 | 0.59 | 6 | |
ConfigFileState | 0 | 0 | 0 | |
yy_buffer_state | 0 | 0 | 0 | |
VariableContext | 0.39 | 0.44 | 69 | |
MethodContext | 0.17 | 0.33 | 1 | |
yy_buffer_state | 0 | 0 | 0 | |
CallContext | 0.14 | 0.17 | 19 |
Namespaces Metrics
If you wish to define thresholds on namespaces' Code Metrics, consider writing some CQL Rules.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Namespaces | # lines of code | # Types | # lines of comment | % Comment | Afferent Coupling | Efferent Coupling |
---|---|---|---|---|---|---|
Namespaces | # lines of code | # Types | # lines of comment | % Comment | Afferent Coupling | Efferent Coupling |
qtools::GlobalNamespace | 12103 | 144 | 0 | 0 | 1 | 2 |
CppDependency::GlobalNamespace | 43952 | 240 | 0 | 0 | 0 | 3 |
Code Quality |
|
|
Rule warning: Types too big - critical |
// <Name>Types too big - critical</Name>
warnif count > 0 from t in JustMyCode.Types where
t.NbLinesOfCode > 500 && !t.IsGlobal
orderby t.NbLinesOfCode descending
select new { t, t.NbLinesOfCode,
t.NbMethods, t.NbFields }
// Types where NbLinesOfCode > 500 are extremely complex
// and should be split in a smaller group of types.
// See the definition of the NbLinesOfCode metric here
// http://www.cppdepend.com/Metrics.aspx#NbLinesOfCode
warnif count > 0 from t in JustMyCode.Types where
t.NbLinesOfCode > 500 && !t.IsGlobal
orderby t.NbLinesOfCode descending
select new { t, t.NbLinesOfCode,
t.NbMethods, t.NbFields }
// Types where NbLinesOfCode > 500 are extremely complex
// and should be split in a smaller group of types.
// See the definition of the NbLinesOfCode metric here
// http://www.cppdepend.com/Metrics.aspx#NbLinesOfCode
12 types matched
types | # lines of code (LOC) | # Methods | # Fields | Full Name |
---|---|---|---|---|
types | # lines of code (LOC) | # Methods | # Fields | Full Name |
QXmlSimpleReader | 2 792 | 76 | 25 | QXmlSimpleReader |
ClassDef | 1 179 | 122 | 2 | ClassDef |
QString | 1 174 | 132 | 3 | QString |
QTextStream | 867 | 79 | 17 | QTextStream |
Config | 794 | 27 | 5 | Config |
MemberDef | 778 | 160 | 5 | MemberDef |
TranslatorRussian | 566 | 220 | 0 | TranslatorRussian |
QGDict | 529 | 33 | 7 | QGDict |
TranslatorCatalan | 508 | 220 | 0 | TranslatorCatalan |
TranslatorCzech | 506 | 220 | 0 | TranslatorCzech |
TranslatorBrazilian | 504 | 220 | 0 | TranslatorBrazilian |
TranslatorItalian | 501 | 220 | 0 | TranslatorItalian |
Statistics
Stat | # lines of code (LOC) | # Methods | # Fields |
---|---|---|---|
Sum: | 10 698 | 1 729 | 64 |
Average: | 891.5 | 144.08 | 5.3333 |
Minimum: | 501 | 27 | 0 |
Maximum: | 2 792 | 220 | 25 |
Standard deviation: | 621.36 | 73.384 | 7.5535 |
Variance: | 386 086 | 5 385 | 57.056 |
Rule warning: Methods too complex - critical |
// <Name>Methods too complex - critical</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.CyclomaticComplexity > 20 &&
m.NestingDepth > 5
orderby m.CyclomaticComplexity descending,
m.NestingDepth descending
select new { m, m.CyclomaticComplexity, m.NestingDepth }
// Methods with CyclomaticComplexity > 20 and NestingDepth > 5
// are really too complex and should be split
// in smaller methods, or even types.
// See the definition of the CyclomaticComplexity metric here
// http://www.cppdepend.com/Metrics.aspx#CC
// See the definition of the NestingDepth metric here
// http://www.cppdepend.com/Metrics.aspx#NestingDepth
warnif count > 0 from m in JustMyCode.Methods where
m.CyclomaticComplexity > 20 &&
m.NestingDepth > 5
orderby m.CyclomaticComplexity descending,
m.NestingDepth descending
select new { m, m.CyclomaticComplexity, m.NestingDepth }
// Methods with CyclomaticComplexity > 20 and NestingDepth > 5
// are really too complex and should be split
// in smaller methods, or even types.
// See the definition of the CyclomaticComplexity metric here
// http://www.cppdepend.com/Metrics.aspx#CC
// See the definition of the NestingDepth metric here
// http://www.cppdepend.com/Metrics.aspx#NestingDepth
46 methods matched
methods | Cyclomatic Complexity (CC) | NestingDepth | Full Name |
---|---|---|---|
methods | Cyclomatic Complexity (CC) | NestingDepth | Full Name |
scanYYlex() | 982 | 35 | CppDependencyGlobalMembers.scanYYlex() |
codeYYlex() | 379 | 14 | CppDependencyGlobalMembers.codeYYlex() |
preYYlex() | 271 | 11 | CppDependencyGlobalMembers.preYYlex() |
doctokenizerYYlex() | 228 | 8 | CppDependencyGlobalMembers.doctokenizerYYlex() |
yylex() | 138 | 7 | CppDependencyGlobalMembers.yylex() |
findMember(EntryNav*,QCString,bool,bool) | 120 | 12 | CppDependencyGlobalMembers.findMember(EntryNav*,QCString,bool,bool) |
defargsYYlex() | 116 | 8 | CppDependencyGlobalMembers.defargsYYlex() |
generateXMLForMember(MemberDef*,QTextStream&,QTextStream&,Definition* ,bool) | 94 | 8 | CppDependencyGlobalMembers.generateXMLForMember(MemberDef* ,QTextStream&,QTextStream&,Definition*,bool) |
configYYlex() | 85 | 7 | CppDependencyGlobalMembers.configYYlex() |
parseEntityDecl() | 79 | 6 | QXmlSimpleReader.parseEntityDecl() |
getDefs(constQCString&,constQCString&,constchar*,MemberDef*& ,ClassDef*&,FileDef*&,NamespaceDef*&,GroupDef*&,bool,FileDef*,bool ,bool) | 71 | 9 | CppDependencyGlobalMembers.getDefs(constQCString&,constQCString& ,constchar*,MemberDef*&,ClassDef*&,FileDef*&,NamespaceDef*&,GroupDef*& ,bool,FileDef*,bool,bool) |
parseContent() | 70 | 7 | QXmlSimpleReader.parseContent() |
declinfoYYlex() | 69 | 7 | CppDependencyGlobalMembers.declinfoYYlex() |
internalInsertMember(MemberDef*,Protection,bool) | 65 | 7 | ClassDef.internalInsertMember(MemberDef*,Protection,bool) |
cppExpYYlex() | 62 | 7 | CppDependencyGlobalMembers.cppExpYYlex() |
matchstring(uint*,constchar*,uint,constchar*,bool) | 56 | 7 | qtoolsGlobalMembers.matchstring(uint*,constchar*,uint,constchar*,bool) |
generateClassOrGlobalLink(CodeOutputInterface&,char*,QCString&,bool ,bool,bool) | 49 | 7 | CppDependencyGlobalMembers.generateClassOrGlobalLink (CodeOutputInterface&,char*,QCString&,bool,bool,bool) |
findBases(QCString,Definition*,FileDef*,bool) | 48 | 9 | CppDependencyGlobalMembers.findBases(QCString,Definition*,FileDef* ,bool) |
replaceFunctionMacro(constQCString&,QCString*,int,int&,constDefine* ,QCString&) | 44 | 8 | CppDependencyGlobalMembers.replaceFunctionMacro(constQCString& ,QCString*,int,int&,constDefine*,QCString&) |
parseProlog() | 42 | 6 | QXmlSimpleReader.parseProlog() |
sprintf(constchar*) | 41 | 6 | QString.sprintf(constchar*) |
ts_getbuf(QChar*,uint) | 41 | 6 | QTextStream.ts_getbuf(QChar*,uint) |
buildFunctionList(EntryNav*) | 38 | 12 | CppDependencyGlobalMembers.buildFunctionList(EntryNav*) |
findClassRelation(EntryNav*,Definition*,ClassDef*,BaseInfo*,QDict<int >*,FindBaseClassRelation_Mode,bool) | 38 | 7 | CppDependencyGlobalMembers.findClassRelation(EntryNav*,Definition* ,ClassDef*,BaseInfo*,QDict<int>*,FindBaseClassRelation_Mode,bool) |
mergeMembers() | 36 | 11 | ClassDef.mergeMembers() |
compile() | 36 | 7 | QRegExp.compile() |
addVariable(EntryNav*,int) | 36 | 6 | CppDependencyGlobalMembers.addVariable(EntryNav*,int) |
filterLatexString(QTextStream&,constchar*,bool,bool,bool) | 35 | 6 | CppDependencyGlobalMembers.filterLatexString(QTextStream&,constchar* ,bool,bool,bool) |
writeMemberList(OutputList&) | 35 | 6 | ClassDef.writeMemberList(OutputList&) |
writePlainDeclarations(OutputList&,ClassDef*,NamespaceDef*,FileDef* ,GroupDef*) | 32 | 8 | MemberList.writePlainDeclarations(OutputList&,ClassDef*,NamespaceDef* ,FileDef*,GroupDef*) |
QTextCodecFromIOD(QIODevice*) | 30 | 8 | QTextCodecFromIOD.QTextCodecFromIOD(QIODevice*) |
processReference(bool&,QXmlSimpleReader::EntityRecognitionContext) | 30 | 7 | QXmlSimpleReader.processReference(bool& ,QXmlSimpleReader::EntityRecognitionContext) |
removeAndRebalance(QMapNodeBase*,QMapNodeBase*&,QMapNodeBase*& ,QMapNodeBase*&) | 30 | 6 | QMapPrivateBase.removeAndRebalance(QMapNodeBase*,QMapNodeBase*& ,QMapNodeBase*&,QMapNodeBase*&) |
getLinkInScope(constQCString&,constQCString&,constchar* ,CodeOutputInterface&,constchar*,bool) | 29 | 7 | CppDependencyGlobalMembers.getLinkInScope(constQCString& ,constQCString&,constchar*,CodeOutputInterface&,constchar*,bool) |
addEnumValuesToEnums(EntryNav*) | 28 | 13 | CppDependencyGlobalMembers.addEnumValuesToEnums(EntryNav*) |
isAccessibleFromWithExpScope(Definition*,FileDef*,Definition* ,constQCString&) | 27 | 9 | CppDependencyGlobalMembers.isAccessibleFromWithExpScope(Definition* ,FileDef*,Definition*,constQCString&) |
writeAlphabeticalClassList(OutputList&) | 27 | 6 | CppDependencyGlobalMembers.writeAlphabeticalClassList(OutputList&) |
findUsedClassesForClass(EntryNav*,Definition*,ClassDef*,ClassDef*,bool ,ArgumentList*,QDict<int>*) | 26 | 10 | CppDependencyGlobalMembers.findUsedClassesForClass(EntryNav* ,Definition*,ClassDef*,ClassDef*,bool,ArgumentList*,QDict<int>*) |
linkifyText(constTextGeneratorIntf&,Definition*,FileDef*,constchar* ,constchar*,QDict<int>&,bool,bool,bool) | 26 | 6 | CppDependencyGlobalMembers.linkifyText(constTextGeneratorIntf& ,Definition*,FileDef*,constchar*,constchar*,QDict<int>&,bool,bool,bool ) |
readIncludeFile(QCString&) | 24 | 7 | CppDependencyGlobalMembers.readIncludeFile(QCString&) |
parseFiles(Entry*,EntryNav*) | 23 | 10 | CppDependencyGlobalMembers.parseFiles(Entry*,EntryNav*) |
generateMemberLink(CodeOutputInterface&,constQCString&,char*) | 22 | 9 | CppDependencyGlobalMembers.generateMemberLink(CodeOutputInterface& ,constQCString&,char*) |
addIncludedUsingDirectives() | 21 | 8 | FileDef.addIncludedUsingDirectives() |
transferFunctionReferences() | 21 | 7 | CppDependencyGlobalMembers.transferFunctionReferences() |
findFile(constchar*,bool,bool&,bool) | 21 | 7 | CppDependencyGlobalMembers.findFile(constchar*,bool,bool&,bool) |
parsePEReference(QXmlSimpleReader::EntityRecognitionContext) | 21 | 6 | QXmlSimpleReader.parsePEReference (QXmlSimpleReader::EntityRecognitionContext) |
Statistics
Stat | Cyclomatic Complexity (CC) | NestingDepth |
---|---|---|
Sum: | 3 842 | 391 |
Average: | 83.522 | 8.5 |
Minimum: | 21 | 6 |
Maximum: | 982 | 35 |
Standard deviation: | 150.37 | 4.422 |
Variance: | 22 611 | 19.554 |
Rule warning: Methods with too many parameters - critical |
// <Name>Methods with too many parameters - critical</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.NbParameters > 8
orderby m.NbParameters descending
select new { m, m.NbParameters }
// Methods with more than 8 parameters might be painful to call
// and might degrade performance. You should prefer using
// additional properties/fields to the declaring type to
// handle numerous states. Another alternative is to provide
// a class or structure dedicated to handle arguments passing
// (for example see the class System.Diagnostics.ProcessStartInfo
// and the method System.Diagnostics.Process.Start(ProcessStartInfo))
// See the definition of the NbParameters metric here
// http://www.cppdepend.com/Metrics.aspx#NbParameters
warnif count > 0 from m in JustMyCode.Methods where
m.NbParameters > 8
orderby m.NbParameters descending
select new { m, m.NbParameters }
// Methods with more than 8 parameters might be painful to call
// and might degrade performance. You should prefer using
// additional properties/fields to the declaring type to
// handle numerous states. Another alternative is to provide
// a class or structure dedicated to handle arguments passing
// (for example see the class System.Diagnostics.ProcessStartInfo
// and the method System.Diagnostics.Process.Start(ProcessStartInfo))
// See the definition of the NbParameters metric here
// http://www.cppdepend.com/Metrics.aspx#NbParameters
14 methods matched
methods | # Parameters | Full Name |
---|---|---|
methods | # Parameters | Full Name |
MemberDef(constchar*,int,constchar*,constchar*,constchar*,constchar* ,Protection,Specifier,bool,Relationship,MemberDef::MemberType ,constArgumentList*,constArgumentList*) | 13 | MemberDef.MemberDef(constchar*,int,constchar*,constchar*,constchar* ,constchar*,Protection,Specifier,bool,Relationship ,MemberDef::MemberType,constArgumentList*,constArgumentList*) |
Init(constchar*,int,constchar*,constchar*,constchar*,constchar* ,Protection,Specifier,bool,Relationship,MemberDef::MemberType ,constArgumentList*,constArgumentList*) | 13 | MemberDef.Init(constchar*,int,constchar*,constchar*,constchar* ,constchar*,Protection,Specifier,bool,Relationship ,MemberDef::MemberType,constArgumentList*,constArgumentList*) |
getDefs(constQCString&,constQCString&,constchar*,MemberDef*& ,ClassDef*&,FileDef*&,NamespaceDef*&,GroupDef*&,bool,FileDef*,bool ,bool) | 12 | CppDependencyGlobalMembers.getDefs(constQCString&,constQCString& ,constchar*,MemberDef*&,ClassDef*&,FileDef*&,NamespaceDef*&,GroupDef*& ,bool,FileDef*,bool,bool) |
readFileOrDirectory(constchar*,FileNameList*,FileNameDict*,StringDict* ,QStrList*,QStrList*,StringList*,StringDict*,bool,bool,QDict<void>*) | 11 | CppDependencyGlobalMembers.readFileOrDirectory(constchar* ,FileNameList*,FileNameDict*,StringDict*,QStrList*,QStrList* ,StringList*,StringDict*,bool,bool,QDict<void>*) |
readDir(QFileInfo*,FileNameList*,FileNameDict*,StringDict*,QStrList* ,QStrList*,StringList*,StringDict*,bool,bool,QDict<void>*) | 11 | CppDependencyGlobalMembers.readDir(QFileInfo*,FileNameList* ,FileNameDict*,StringDict*,QStrList*,QStrList*,StringList*,StringDict* ,bool,bool,QDict<void>*) |
init(Definition*,constchar*,constchar*,constchar*,Protection,Specifier ,bool,Relationship,MemberDef::MemberType,constArgumentList* ,constArgumentList*) | 11 | MemberDefImpl.init(Definition*,constchar*,constchar*,constchar* ,Protection,Specifier,bool,Relationship,MemberDef::MemberType ,constArgumentList*,constArgumentList*) |
parseCCode(CodeOutputInterface&,constchar*,constQCString&,bool ,constchar*,FileDef*,int,int,bool,MemberDef*) | 10 | CppDependencyGlobalMembers.parseCCode(CodeOutputInterface&,constchar* ,constQCString&,bool,constchar*,FileDef*,int,int,bool,MemberDef*) |
getResolvedSymbol(Definition*,FileDef*,Definition*,QCString& ,ArgumentList*,int&,ClassDef*&,MemberDef*&,QCString&,QCString&) | 10 | CppDependencyGlobalMembers.getResolvedSymbol(Definition*,FileDef* ,Definition*,QCString&,ArgumentList*,int&,ClassDef*&,MemberDef*& ,QCString&,QCString&) |
parseDoc(constchar*,int,Definition*,MemberDef*,constQCString&,bool ,bool,constchar*,bool,bool) | 10 | OutputList.parseDoc(constchar*,int,Definition*,MemberDef* ,constQCString&,bool,bool,constchar*,bool,bool) |
parseCode(CodeOutputInterface&,constchar*,constQCString&,bool ,constchar*,FileDef*,int,int,bool,MemberDef*) | 10 | ParserInterface.parseCode(CodeOutputInterface&,constchar* ,constQCString&,bool,constchar*,FileDef*,int,int,bool,MemberDef*) |
parseCode(CodeOutputInterface&,constchar*,constQCString&,bool ,constchar*,FileDef*,int,int,bool,MemberDef*) | 10 | CLanguageScanner.parseCode(CodeOutputInterface&,constchar* ,constQCString&,bool,constchar*,FileDef*,int,int,bool,MemberDef*) |
linkifyText(constTextGeneratorIntf&,Definition*,FileDef*,constchar* ,constchar*,QDict<int>&,bool,bool,bool) | 9 | CppDependencyGlobalMembers.linkifyText(constTextGeneratorIntf& ,Definition*,FileDef*,constchar*,constchar*,QDict<int>&,bool,bool,bool ) |
getResolvedClass(Definition*,FileDef*,constchar*,MemberDef**,QCString* ,bool,bool,QCString*,bool) | 9 | CppDependencyGlobalMembers.getResolvedClass(Definition*,FileDef* ,constchar*,MemberDef**,QCString*,bool,bool,QCString*,bool) |
addRelatedPage(constchar*,constQCString&,constQCString&,QList <SectionInfo>*,constchar*,int,constQList<ListItemInfo>*,GroupDef* ,TagInfo*) | 9 | CppDependencyGlobalMembers.addRelatedPage(constchar*,constQCString& ,constQCString&,QList<SectionInfo>*,constchar*,int,constQList <ListItemInfo>*,GroupDef*,TagInfo*) |
Statistics
Stat | # Parameters |
---|---|
Sum: | 148 |
Average: | 10.571 |
Minimum: | 9 |
Maximum: | 13 |
Standard deviation: | 1.2936 |
Variance: | 1.6735 |
Rule warning: Quick summary of methods to refactor |
// <Name>Quick summary of methods to refactor</Name>
warnif count > 0 from m in JustMyCode.Methods where
// Code Metrics' definitions
m.NbLinesOfCode > 30 || // http://www.cppdepend.com/Metrics.aspx#NbLinesOfCode
m.MaxNestedLoop > 3 || // http://www.cppdepend.com/Metrics.aspx#NbILInstructions
m.CyclomaticComplexity > 20 || // http://www.cppdepend.com/Metrics.aspx#CC
m.NestingDepth > 5 || // http://www.cppdepend.com/Metrics.aspx#ILNestingDepth
m.NbParameters > 5 || // http://www.cppdepend.com/Metrics.aspx#NbParameters
m.NbVariables > 8 || // http://www.cppdepend.com/Metrics.aspx#NbVariables
m.NbOverloads > 6 // http://www.cppdepend.com/Metrics.aspx#NbOverloads
select new { m, m.NbLinesOfCode, m.MaxNestedLoop, m.CyclomaticComplexity,
m.NestingDepth,
m.NbParameters, m.NbVariables, m.NbOverloads }
warnif count > 0 from m in JustMyCode.Methods where
// Code Metrics' definitions
m.NbLinesOfCode > 30 || // http://www.cppdepend.com/Metrics.aspx#NbLinesOfCode
m.MaxNestedLoop > 3 || // http://www.cppdepend.com/Metrics.aspx#NbILInstructions
m.CyclomaticComplexity > 20 || // http://www.cppdepend.com/Metrics.aspx#CC
m.NestingDepth > 5 || // http://www.cppdepend.com/Metrics.aspx#ILNestingDepth
m.NbParameters > 5 || // http://www.cppdepend.com/Metrics.aspx#NbParameters
m.NbVariables > 8 || // http://www.cppdepend.com/Metrics.aspx#NbVariables
m.NbOverloads > 6 // http://www.cppdepend.com/Metrics.aspx#NbOverloads
select new { m, m.NbLinesOfCode, m.MaxNestedLoop, m.CyclomaticComplexity,
m.NestingDepth,
m.NbParameters, m.NbVariables, m.NbOverloads }
468 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 468 methods matched. All matched methods could be listed in the report by unchecking the option:
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched methods.
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched methods.
methods | # lines of code (LOC) | MaxNestedLoop | Cyclomatic Complexity (CC) | NestingDepth | # Parameters | # Variables | # Overloads | Full Name |
---|---|---|---|---|---|---|---|---|
methods | # lines of code (LOC) | MaxNestedLoop | Cyclomatic Complexity (CC) | NestingDepth | # Parameters | # Variables | # Overloads | Full Name |
duplicate(constQGArray&) | 32 | 0 | 9 | 4 | 1 | 2 | 2 | QGArray.duplicate(constQGArray&) |
find(constchar*,uint,uint) | 43 | 1 | 15 | 4 | 3 | 8 | 1 | QGArray.find(constchar*,uint,uint) |
contains(constchar*,uint) | 33 | 1 | 13 | 4 | 2 | 8 | 1 | QGArray.contains(constchar*,uint) |
qSysInfo(int*,bool*) | 36 | 1 | 8 | 2 | 2 | 6 | 1 | qtoolsGlobalMembers.qSysInfo(int*,bool*) |
qt_cmp_si(constvoid*,constvoid*) | 36 | 0 | 15 | 2 | 2 | 5 | 1 | qtoolsGlobalMembers.qt_cmp_si(constvoid*,constvoid*) |
matchcharclass(uint*,char) | 23 | 1 | 7 | 4 | 2 | 9 | 1 | qtoolsGlobalMembers.matchcharclass(uint*,char) |
matchstring(uint*,constchar*,uint,constchar*,bool) | 156 | 2 | 56 | 7 | 5 | 11 | 1 | qtoolsGlobalMembers.matchstring(uint*,constchar*,uint,constchar*,bool) |
wc2rx(constQCString&) | 32 | 1 | 11 | 4 | 1 | 4 | 1 | qtoolsGlobalMembers.wc2rx(constQCString&) |
char_val(constchar**,uint*) | 83 | 1 | 20 | 7 | 2 | 8 | 1 | qtoolsGlobalMembers.char_val(constchar**,uint*) |
dump(uint*) | 62 | 2 | 21 | 5 | 1 | 10 | 1 | qtoolsGlobalMembers.dump(uint*) |
setNum(short) | 1 | 0 | 1 | 1 | 1 | 0 | 8 | QCString.setNum(short) |
setNum(ushort) | 1 | 0 | 1 | 1 | 1 | 0 | 8 | QCString.setNum(ushort) |
setNum(int) | 1 | 0 | 1 | 1 | 1 | 0 | 8 | QCString.setNum(int) |
setNum(uint) | 1 | 0 | 1 | 1 | 1 | 0 | 8 | QCString.setNum(uint) |
setNum(long) | 17 | 0 | 3 | 2 | 1 | 3 | 8 | QCString.setNum(long) |
setNum(ulong) | 9 | 0 | 1 | 2 | 1 | 2 | 8 | QCString.setNum(ulong) |
setNum(float,char,int) | 1 | 0 | 1 | 1 | 3 | 0 | 8 | QCString.setNum(float,char,int) |
setNum(double,char,int) | 0 | 0 | 1 | 0 | 3 | 0 | 8 | QCString.setNum(double,char,int) |
QChar() | 2 | 0 | 1 | 1 | 0 | 0 | 9 | QChar.QChar() |
QChar(char) | 2 | 0 | 1 | 1 | 1 | 0 | 9 | QChar.QChar(char) |
QChar(uchar) | 2 | 0 | 1 | 1 | 1 | 0 | 9 | QChar.QChar(uchar) |
QChar(uchar,uchar) | 2 | 0 | 1 | 1 | 2 | 0 | 9 | QChar.QChar(uchar,uchar) |
QChar(constQChar&) | 2 | 0 | 1 | 1 | 1 | 0 | 9 | QChar.QChar(constQChar&) |
QChar(ushort) | 2 | 0 | 1 | 1 | 1 | 0 | 9 | QChar.QChar(ushort) |
QChar(short) | 2 | 0 | 1 | 1 | 1 | 0 | 9 | QChar.QChar(short) |
QChar(uint) | 2 | 0 | 1 | 1 | 1 | 0 | 9 | QChar.QChar(uint) |
QChar(int) | 2 | 0 | 1 | 1 | 1 | 0 | 9 | QChar.QChar(int) |
QString() | 1 | 0 | 1 | 1 | 0 | 0 | 9 | QString.QString() |
QString(QChar) | 2 | 0 | 1 | 1 | 1 | 0 | 9 | QString.QString(QChar) |
QString(constQString&) | 1 | 0 | 1 | 1 | 1 | 0 | 9 | QString.QString(constQString&) |
QString(constQByteArray&) | 3 | 0 | 1 | 1 | 1 | 2 | 9 | QString.QString(constQByteArray&) |
QString(constQCString&) | 3 | 0 | 1 | 1 | 1 | 1 | 9 | QString.QString(constQCString&) |
QString(constQChar*,uint) | 8 | 0 | 5 | 2 | 2 | 1 | 9 | QString.QString(constQChar*,uint) |
QString(constchar*) | 3 | 0 | 1 | 1 | 1 | 1 | 9 | QString.QString(constchar*) |
arg(long,int,int) | 1 | 0 | 1 | 1 | 3 | 0 | 10 | QString.arg(long,int,int) |
arg(ulong,int,int) | 1 | 0 | 1 | 1 | 3 | 0 | 10 | QString.arg(ulong,int,int) |
arg(int,int,int) | 1 | 0 | 1 | 1 | 3 | 0 | 10 | QString.arg(int,int,int) |
arg(uint,int,int) | 1 | 0 | 1 | 1 | 3 | 0 | 10 | QString.arg(uint,int,int) |
arg(short,int,int) | 1 | 0 | 1 | 1 | 3 | 0 | 10 | QString.arg(short,int,int) |
arg(ushort,int,int) | 1 | 0 | 1 | 1 | 3 | 0 | 10 | QString.arg(ushort,int,int) |
arg(char,int) | 3 | 0 | 1 | 1 | 2 | 1 | 10 | QString.arg(char,int) |
arg(QChar,int) | 3 | 0 | 1 | 1 | 2 | 1 | 10 | QString.arg(QChar,int) |
arg(constQString&,int) | 21 | 1 | 6 | 3 | 2 | 5 | 10 | QString.arg(constQString&,int) |
arg(double,int,char,int) | 1 | 0 | 1 | 1 | 4 | 0 | 10 | QString.arg(double,int,char,int) |
sprintf(constchar*) | 147 | 1 | 41 | 6 | 1 | 28 | 1 | QString.sprintf(constchar*) |
find(constQString&,int,bool) | 40 | 1 | 13 | 3 | 3 | 8 | 5 | QString.find(constQString&,int,bool) |
findRev(constQString&,int,bool) | 40 | 1 | 13 | 3 | 3 | 8 | 5 | QString.findRev(constQString&,int,bool) |
toLong(bool*,int) | 43 | 1 | 18 | 3 | 2 | 7 | 1 | QString.toLong(bool*,int) |
toULong(bool*,int) | 35 | 1 | 16 | 3 | 2 | 6 | 1 | QString.toULong(bool*,int) |
setNum(short,int) | 1 | 0 | 1 | 1 | 2 | 0 | 8 | QString.setNum(short,int) |
setNum(ushort,int) | 1 | 0 | 1 | 1 | 2 | 0 | 8 | QString.setNum(ushort,int) |
setNum(int,int) | 1 | 0 | 1 | 1 | 2 | 0 | 8 | QString.setNum(int,int) |
setNum(uint,int) | 1 | 0 | 1 | 1 | 2 | 0 | 8 | QString.setNum(uint,int) |
setNum(long,int) | 28 | 0 | 5 | 3 | 2 | 7 | 8 | QString.setNum(long,int) |
setNum(ulong,int) | 13 | 0 | 2 | 2 | 2 | 4 | 8 | QString.setNum(ulong,int) |
setNum(float,char,int) | 1 | 0 | 1 | 1 | 3 | 0 | 8 | QString.setNum(float,char,int) |
setNum(double,char,int) | 21 | 0 | 5 | 3 | 3 | 3 | 8 | QString.setNum(double,char,int) |
compose() | 23 | 2 | 7 | 6 | 0 | 9 | 1 | QString.compose() |
visual(int,int) | 151 | 3 | 57 | 4 | 2 | 17 | 1 | QString.visual(int,int) |
QString(int,bool) | 7 | 0 | 3 | 2 | 2 | 2 | 9 | QString.QString(int,bool) |
QString(QStringData*,bool) | 0 | 0 | 1 | 1 | 2 | 0 | 9 | QString.QString(QStringData*,bool) |
operator=(char) | 2 | 0 | 1 | 1 | 1 | 0 | 8 | QCharRef.operator=(char) |
operator=(uchar) | 2 | 0 | 1 | 1 | 1 | 0 | 8 | QCharRef.operator=(uchar) |
operator=(QChar) | 2 | 0 | 1 | 1 | 1 | 0 | 8 | QCharRef.operator=(QChar) |
operator=(constQCharRef&) | 2 | 0 | 1 | 1 | 1 | 0 | 8 | QCharRef.operator=(constQCharRef&) |
operator=(ushort) | 2 | 0 | 1 | 1 | 1 | 0 | 8 | QCharRef.operator=(ushort) |
operator=(short) | 2 | 0 | 1 | 1 | 1 | 0 | 8 | QCharRef.operator=(short) |
operator=(uint) | 2 | 0 | 1 | 1 | 1 | 0 | 8 | QCharRef.operator=(uint) |
operator=(int) | 2 | 0 | 1 | 1 | 1 | 0 | 8 | QCharRef.operator=(int) |
operator>>(Q_INT8&) | 10 | 0 | 3 | 3 | 1 | 1 | 11 | QDataStream.operator>>(Q_INT8&) |
operator>>(Q_UINT8&) | 1 | 0 | 1 | 1 | 1 | 0 | 11 | QDataStream.operator>>(Q_UINT8&) |
operator>>(Q_INT16&) | 12 | 0 | 3 | 2 | 1 | 2 | 11 | QDataStream.operator>>(Q_INT16&) |
operator>>(Q_UINT16&) | 1 | 0 | 1 | 1 | 1 | 0 | 11 | QDataStream.operator>>(Q_UINT16&) |
operator>>(Q_INT32&) | 14 | 0 | 3 | 2 | 1 | 2 | 11 | QDataStream.operator>>(Q_INT32&) |
operator>>(Q_UINT32&) | 1 | 0 | 1 | 1 | 1 | 0 | 11 | QDataStream.operator>>(Q_UINT32&) |
operator>>(Q_INT64&) | 19 | 0 | 4 | 3 | 1 | 2 | 11 | QDataStream.operator>>(Q_INT64&) |
operator>>(Q_UINT64&) | 1 | 0 | 1 | 1 | 1 | 0 | 11 | QDataStream.operator>>(Q_UINT64&) |
operator>>(float&) | 14 | 0 | 3 | 2 | 1 | 2 | 11 | QDataStream.operator>>(float&) |
operator>>(double&) | 18 | 0 | 3 | 2 | 1 | 2 | 11 | QDataStream.operator>>(double&) |
operator>>(char*&) | 2 | 0 | 1 | 1 | 1 | 1 | 11 | QDataStream.operator>>(char*&) |
operator<<(Q_INT8) | 12 | 0 | 2 | 2 | 1 | 1 | 11 | QDataStream.operator<<(Q_INT8) |
operator<<(Q_UINT8) | 1 | 0 | 1 | 1 | 1 | 0 | 11 | QDataStream.operator<<(Q_UINT8) |
operator<<(Q_INT16) | 14 | 0 | 3 | 2 | 1 | 3 | 11 | QDataStream.operator<<(Q_INT16) |
operator<<(Q_UINT16) | 1 | 0 | 1 | 1 | 1 | 0 | 11 | QDataStream.operator<<(Q_UINT16) |
operator<<(Q_INT32) | 16 | 0 | 3 | 2 | 1 | 3 | 11 | QDataStream.operator<<(Q_INT32) |
operator<<(Q_UINT32) | 1 | 0 | 1 | 1 | 1 | 0 | 11 | QDataStream.operator<<(Q_UINT32) |
operator<<(Q_INT64) | 21 | 0 | 4 | 3 | 1 | 3 | 11 | QDataStream.operator<<(Q_INT64) |
operator<<(Q_UINT64) | 1 | 0 | 1 | 1 | 1 | 0 | 11 | QDataStream.operator<<(Q_UINT64) |
operator<<(float) | 18 | 0 | 3 | 3 | 1 | 4 | 11 | QDataStream.operator<<(float) |
operator<<(double) | 20 | 0 | 3 | 2 | 1 | 3 | 11 | QDataStream.operator<<(double) |
operator<<(constchar*) | 6 | 0 | 2 | 2 | 1 | 1 | 11 | QDataStream.operator<<(constchar*) |
locate(uint) | 34 | 1 | 11 | 2 | 1 | 3 | 1 | QGList.locate(uint) |
open(int) | 100 | 1 | 30 | 5 | 1 | 9 | 3 | QFile.open(int) |
cleanDirPath(constQString&) | 42 | 1 | 13 | 4 | 1 | 7 | 1 | QDir.cleanDirPath(constQString&) |
readDirEntries(constQString&,int,int) | 98 | 1 | 28 | 3 | 3 | 34 | 1 | QDir.readDirEntries(constQString&,int,int) |
match(constQCString&,int,int*,bool) | 33 | 1 | 16 | 5 | 4 | 6 | 1 | QRegExp.match(constQCString&,int,int*,bool) |
compile() | 139 | 2 | 36 | 7 | 0 | 16 | 1 | QRegExp.compile() |
read(QDataStream&) | 34 | 1 | 8 | 4 | 1 | 6 | 2 | QGDict.read(QDataStream&) |
clear() | 57 | 2 | 15 | 6 | 0 | 10 | 1 | QGDict.clear() |
resize(uint) | 54 | 2 | 12 | 5 | 1 | 13 | 1 | QGDict.resize(uint) |
Statistics
Stat | # lines of code (LOC) | MaxNestedLoop | Cyclomatic Complexity (CC) | NestingDepth | # Parameters | # Variables | # Overloads |
---|---|---|---|---|---|---|---|
Sum: | 27 961 | 320 | 7 785 | 1 672 | 1 054 | 3 431 | 2 096 |
Average: | 59.746 | 0.68376 | 16.635 | 3.5726 | 2.2521 | 7.3312 | 4.4786 |
Minimum: | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
Maximum: | 4 054 | 4 | 982 | 35 | 13 | 101 | 25 |
Standard deviation: | 217.53 | 0.86627 | 52.901 | 2.9752 | 2.275 | 10.377 | 6.3098 |
Variance: | 47 319 | 0.75042 | 2 798 | 8.8516 | 5.1757 | 107.67 | 39.814 |
Rule warning: Methods too big |
// <Name>Methods too big</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.NbLinesOfCode > 30
orderby m.NbLinesOfCode descending
select new { m, m.NbLinesOfCode}
// Methods where NbLinesOfCode > 30
// are extremely complex and should be split in smaller methods.
// See the definition of the NbLinesOfCode metric here
// http://www.cppdepend.com/Metrics.aspx#NbLinesOfCode
warnif count > 0 from m in JustMyCode.Methods where
m.NbLinesOfCode > 30
orderby m.NbLinesOfCode descending
select new { m, m.NbLinesOfCode}
// Methods where NbLinesOfCode > 30
// are extremely complex and should be split in smaller methods.
// See the definition of the NbLinesOfCode metric here
// http://www.cppdepend.com/Metrics.aspx#NbLinesOfCode
266 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 266 methods matched. All matched methods could be listed in the report by unchecking the option:
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched methods.
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched methods.
methods | # lines of code (LOC) | Full Name |
---|---|---|
methods | # lines of code (LOC) | Full Name |
scanYYlex() | 4 054 | CppDependencyGlobalMembers.scanYYlex() |
codeYYlex() | 1 646 | CppDependencyGlobalMembers.codeYYlex() |
preYYlex() | 1 185 | CppDependencyGlobalMembers.preYYlex() |
doctokenizerYYlex() | 826 | CppDependencyGlobalMembers.doctokenizerYYlex() |
yylex() | 557 | CppDependencyGlobalMembers.yylex() |
create() | 427 | Config.create() |
generateXMLForMember(MemberDef*,QTextStream&,QTextStream&,Definition* ,bool) | 421 | CppDependencyGlobalMembers.generateXMLForMember(MemberDef* ,QTextStream&,QTextStream&,Definition*,bool) |
findMember(EntryNav*,QCString,bool,bool) | 395 | CppDependencyGlobalMembers.findMember(EntryNav*,QCString,bool,bool) |
defargsYYlex() | 382 | CppDependencyGlobalMembers.defargsYYlex() |
configYYlex() | 317 | CppDependencyGlobalMembers.configYYlex() |
internalInsertMember(MemberDef*,Protection,bool) | 273 | ClassDef.internalInsertMember(MemberDef*,Protection,bool) |
parseInput() | 245 | CppDependencyGlobalMembers.parseInput() |
check() | 241 | Config.check() |
declinfoYYlex() | 236 | CppDependencyGlobalMembers.declinfoYYlex() |
cppExpYYlex() | 199 | CppDependencyGlobalMembers.cppExpYYlex() |
getDefs(constQCString&,constQCString&,constchar*,MemberDef*& ,ClassDef*&,FileDef*&,NamespaceDef*&,GroupDef*&,bool,FileDef*,bool ,bool) | 197 | CppDependencyGlobalMembers.getDefs(constQCString&,constQCString& ,constchar*,MemberDef*&,ClassDef*&,FileDef*&,NamespaceDef*&,GroupDef*& ,bool,FileDef*,bool,bool) |
parseEntityDecl() | 193 | QXmlSimpleReader.parseEntityDecl() |
parseAttType() | 188 | QXmlSimpleReader.parseAttType() |
parseContent() | 180 | QXmlSimpleReader.parseContent() |
parseElementDecl() | 168 | QXmlSimpleReader.parseElementDecl() |
matchstring(uint*,constchar*,uint,constchar*,bool) | 156 | qtoolsGlobalMembers.matchstring(uint*,constchar*,uint,constchar*,bool) |
generateXMLForClass(ClassDef*,QTextStream&,bool,bool) | 154 | CppDependencyGlobalMembers.generateXMLForClass(ClassDef*,QTextStream& ,bool,bool) |
visual(int,int) | 151 | QString.visual(int,int) |
parsePI(bool) | 151 | QXmlSimpleReader.parsePI(bool) |
output_int(int,ulong,bool) | 150 | QTextStream.output_int(int,ulong,bool) |
sprintf(constchar*) | 147 | QString.sprintf(constchar*) |
parseAttlistDecl() | 146 | QXmlSimpleReader.parseAttlistDecl() |
readConfiguration(int,char**) | 146 | CppDependencyGlobalMembers.readConfiguration(int,char**) |
findBases(QCString,Definition*,FileDef*,bool) | 144 | CppDependencyGlobalMembers.findBases(QCString,Definition*,FileDef* ,bool) |
compile() | 139 | QRegExp.compile() |
replaceFunctionMacro(constQCString&,QCString*,int,int&,constDefine* ,QCString&) | 138 | CppDependencyGlobalMembers.replaceFunctionMacro(constQCString& ,QCString*,int,int&,constDefine*,QCString&) |
processReference(bool&,QXmlSimpleReader::EntityRecognitionContext) | 129 | QXmlSimpleReader.processReference(bool& ,QXmlSimpleReader::EntityRecognitionContext) |
parseDoctype() | 126 | QXmlSimpleReader.parseDoctype() |
ts_getbuf(QChar*,uint) | 125 | QTextStream.ts_getbuf(QChar*,uint) |
parseElement() | 124 | QXmlSimpleReader.parseElement() |
parseMarkupdecl() | 124 | QXmlSimpleReader.parseMarkupdecl() |
generateClassOrGlobalLink(CodeOutputInterface&,char*,QCString&,bool ,bool,bool) | 122 | CppDependencyGlobalMembers.generateClassOrGlobalLink (CodeOutputInterface&,char*,QCString&,bool,bool,bool) |
buildFunctionList(EntryNav*) | 122 | CppDependencyGlobalMembers.buildFunctionList(EntryNav*) |
parseExternalID(bool) | 119 | QXmlSimpleReader.parseExternalID(bool) |
parseProlog() | 117 | QXmlSimpleReader.parseProlog() |
writeMemberList(OutputList&) | 117 | ClassDef.writeMemberList(OutputList&) |
mergeMembers() | 111 | ClassDef.mergeMembers() |
preprocessFile(constchar*,BufStr&,BufStr&) | 110 | CppDependencyGlobalMembers.preprocessFile(constchar*,BufStr&,BufStr&) |
removeAndRebalance(QMapNodeBase*,QMapNodeBase*&,QMapNodeBase*& ,QMapNodeBase*&) | 109 | QMapPrivateBase.removeAndRebalance(QMapNodeBase*,QMapNodeBase*& ,QMapNodeBase*&,QMapNodeBase*&) |
parseReference(bool&,QXmlSimpleReader::EntityRecognitionContext) | 107 | QXmlSimpleReader.parseReference(bool& ,QXmlSimpleReader::EntityRecognitionContext) |
writeDefArgumentList(OutputList&,ClassDef*,constQCString&,MemberDef*) | 106 | CppDependencyGlobalMembers.writeDefArgumentList(OutputList&,ClassDef* ,constQCString&,MemberDef*) |
findClassRelation(EntryNav*,Definition*,ClassDef*,BaseInfo*,QDict<int >*,FindBaseClassRelation_Mode,bool) | 104 | CppDependencyGlobalMembers.findClassRelation(EntryNav*,Definition* ,ClassDef*,BaseInfo*,QDict<int>*,FindBaseClassRelation_Mode,bool) |
filterLatexString(QTextStream&,constchar*,bool,bool,bool) | 103 | CppDependencyGlobalMembers.filterLatexString(QTextStream&,constchar* ,bool,bool,bool) |
writeAlphabeticalClassList(OutputList&) | 102 | CppDependencyGlobalMembers.writeAlphabeticalClassList(OutputList&) |
addVariable(constQCString&,constQCString&,bool,bool) | 101 | VariableContext.addVariable(constQCString&,constQCString&,bool,bool) |
open(int) | 100 | QFile.open(int) |
readDirEntries(constQString&,int,int) | 98 | QDir.readDirEntries(constQString&,int,int) |
parseFiles(Entry*,EntryNav*) | 96 | CppDependencyGlobalMembers.parseFiles(Entry*,EntryNav*) |
addVariable(EntryNav*,int) | 95 | CppDependencyGlobalMembers.addVariable(EntryNav*,int) |
escapeCharsInString(constchar*,bool) | 94 | CppDependencyGlobalMembers.escapeCharsInString(constchar*,bool) |
QTextCodecFromIOD(QIODevice*) | 91 | QTextCodecFromIOD.QTextCodecFromIOD(QIODevice*) |
addEnumValuesToEnums(EntryNav*) | 91 | CppDependencyGlobalMembers.addEnumValuesToEnums(EntryNav*) |
findEnums(EntryNav*) | 87 | CppDependencyGlobalMembers.findEnums(EntryNav*) |
getResolvedClassRec(Definition*,FileDef*,constchar*,MemberDef** ,QCString*,QCString*,bool) | 87 | CppDependencyGlobalMembers.getResolvedClassRec(Definition*,FileDef* ,constchar*,MemberDef**,QCString*,QCString*,bool) |
convertCharEntitiesToUTF8(constQCString&) | 85 | CppDependencyGlobalMembers.convertCharEntitiesToUTF8(constQCString&) |
findFile(constchar*,bool,bool&,bool) | 85 | CppDependencyGlobalMembers.findFile(constchar*,bool,bool&,bool) |
char_val(constchar**,uint*) | 83 | qtoolsGlobalMembers.char_val(constchar**,uint*) |
parseChoiceSeq() | 83 | QXmlSimpleReader.parseChoiceSeq() |
findUsedClassesForClass(EntryNav*,Definition*,ClassDef*,ClassDef*,bool ,ArgumentList*,QDict<int>*) | 83 | CppDependencyGlobalMembers.findUsedClassesForClass(EntryNav* ,Definition*,ClassDef*,ClassDef*,bool,ArgumentList*,QDict<int>*) |
parseNotationDecl() | 81 | QXmlSimpleReader.parseNotationDecl() |
removeRedundantWhiteSpace(constQCString&) | 81 | CppDependencyGlobalMembers.removeRedundantWhiteSpace(constQCString&) |
readIncludeFile(QCString&) | 81 | CppDependencyGlobalMembers.readIncludeFile(QCString&) |
parseEntityValue() | 80 | QXmlSimpleReader.parseEntityValue() |
linkifyText(constTextGeneratorIntf&,Definition*,FileDef*,constchar* ,constchar*,QDict<int>&,bool,bool,bool) | 78 | CppDependencyGlobalMembers.linkifyText(constTextGeneratorIntf& ,Definition*,FileDef*,constchar*,constchar*,QDict<int>&,bool,bool,bool ) |
addMethodToClass(EntryNav*,ClassDef*,constQCString&,bool) | 76 | CppDependencyGlobalMembers.addMethodToClass(EntryNav*,ClassDef* ,constQCString&,bool) |
parseMisc() | 75 | QXmlSimpleReader.parseMisc() |
writePlainDeclarations(OutputList&,ClassDef*,NamespaceDef*,FileDef* ,GroupDef*) | 74 | MemberList.writePlainDeclarations(OutputList&,ClassDef*,NamespaceDef* ,FileDef*,GroupDef*) |
MD5Transform(unsignedint*,constunsignedint*) | 73 | CppDependencyGlobalMembers.MD5Transform(unsignedint*,constunsignedint* ) |
readCodeFragment(constchar*,int&,int&,QCString&) | 72 | CppDependencyGlobalMembers.readCodeFragment(constchar*,int&,int& ,QCString&) |
CheckFileEntry(FileDef*,EntryNav*) | 72 | CppDependencyGlobalMembers.CheckFileEntry(FileDef*,EntryNav*) |
getLinkInScope(constQCString&,constQCString&,constchar* ,CodeOutputInterface&,constchar*,bool) | 69 | CppDependencyGlobalMembers.getLinkInScope(constQCString& ,constQCString&,constchar*,CodeOutputInterface&,constchar*,bool) |
input_double() | 68 | QTextStream.input_double() |
parseAttValue() | 68 | QXmlSimpleReader.parseAttValue() |
writeEnumDeclaration(OutputList&,ClassDef*,NamespaceDef*,FileDef* ,GroupDef*) | 68 | MemberDef.writeEnumDeclaration(OutputList&,ClassDef*,NamespaceDef* ,FileDef*,GroupDef*) |
isVarWithConstructor(EntryNav*) | 67 | CppDependencyGlobalMembers.isVarWithConstructor(EntryNav*) |
resolveRef(constchar*,constchar*,bool,Definition**,MemberDef**,bool) | 64 | CppDependencyGlobalMembers.resolveRef(constchar*,constchar*,bool ,Definition**,MemberDef**,bool) |
newResolveTypedef(FileDef*,MemberDef*,MemberDef**,QCString*,QCString* ,ArgumentList*) | 64 | CppDependencyGlobalMembers.newResolveTypedef(FileDef*,MemberDef* ,MemberDef**,QCString*,QCString*,ArgumentList*) |
generateXMLForFile(FileDef*,QTextStream&,bool) | 64 | CppDependencyGlobalMembers.generateXMLForFile(FileDef*,QTextStream& ,bool) |
init(Definition*,constchar*,constchar*,constchar*,Protection,Specifier ,bool,Relationship,MemberDef::MemberType,constArgumentList* ,constArgumentList*) | 63 | MemberDefImpl.init(Definition*,constchar*,constchar*,constchar* ,Protection,Specifier,bool,Relationship,MemberDef::MemberType ,constArgumentList*,constArgumentList*) |
dump(uint*) | 62 | qtoolsGlobalMembers.dump(uint*) |
input_int() | 62 | QTextStream.input_int() |
parseComment() | 62 | QXmlSimpleReader.parseComment() |
parseCCode(CodeOutputInterface&,constchar*,constQCString&,bool ,constchar*,FileDef*,int,int,bool,MemberDef*) | 62 | CppDependencyGlobalMembers.parseCCode(CodeOutputInterface&,constchar* ,constQCString&,bool,constchar*,FileDef*,int,int,bool,MemberDef*) |
generateXML() | 62 | CppDependencyGlobalMembers.generateXML() |
getResolvedSymbol(Definition*,FileDef*,Definition*,QCString& ,ArgumentList*,int&,ClassDef*&,MemberDef*&,QCString&,QCString&) | 62 | CppDependencyGlobalMembers.getResolvedSymbol(Definition*,FileDef* ,Definition*,QCString&,ArgumentList*,int&,ClassDef*&,MemberDef*& ,QCString&,QCString&) |
parseAttribute() | 61 | QXmlSimpleReader.parseAttribute() |
findFileDef(constFileNameDict*,constchar*,bool&) | 61 | CppDependencyGlobalMembers.findFileDef(constFileNameDict*,constchar* ,bool&) |
addVariableToFile(EntryNav*,MemberDef::MemberType,constQCString& ,constQCString&,bool,MemberDef*) | 61 | CppDependencyGlobalMembers.addVariableToFile(EntryNav* ,MemberDef::MemberType,constQCString&,constQCString&,bool,MemberDef*) |
isAccessibleFromWithExpScope(Definition*,FileDef*,Definition* ,constQCString&) | 59 | CppDependencyGlobalMembers.isAccessibleFromWithExpScope(Definition* ,FileDef*,Definition*,constQCString&) |
parsePEReference(QXmlSimpleReader::EntityRecognitionContext) | 58 | QXmlSimpleReader.parsePEReference (QXmlSimpleReader::EntityRecognitionContext) |
trGeneratedFromFiles(ClassDef::CompoundType,bool) | 58 | TranslatorRussian.trGeneratedFromFiles(ClassDef::CompoundType,bool) |
clear() | 57 | QGDict.clear() |
findEndOfTemplate(constQCString&,int) | 56 | CppDependencyGlobalMembers.findEndOfTemplate(constQCString&,int) |
splitKnRArg(QCString&,QCString&) | 55 | CppDependencyGlobalMembers.splitKnRArg(QCString&,QCString&) |
resize(uint) | 54 | QGDict.resize(uint) |
Statistics
Stat | # lines of code (LOC) |
---|---|
Sum: | 26 154 |
Average: | 98.323 |
Minimum: | 31 |
Maximum: | 4 054 |
Standard deviation: | 282.37 |
Variance: | 79 731 |
Rule warning: Methods too complex |
// <Name>Methods too complex</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.CyclomaticComplexity > 20 ||
m.MaxNestedLoop > 3 ||
m.NestingDepth > 5
orderby m.CyclomaticComplexity descending,
m.MaxNestedLoop descending,
m.NestingDepth descending
select new { m, m.CyclomaticComplexity,
m.MaxNestedLoop,
m.NestingDepth }
// Methods where CyclomaticComplexity > 20
// or MaxNestedLoop > 40
// or NestingDepth > 4
// are hard to understand and maintain
// and should be split in smaller methods.
// See the definition of the complexity metrics here:
// http://www.cppdepend.com/Metrics.aspx#CC
// http://www.cppdepend.com/Metrics.aspx#ILCC
// http://www.cppdepend.com/Metrics.aspx#ILNestingDepth
warnif count > 0 from m in JustMyCode.Methods where
m.CyclomaticComplexity > 20 ||
m.MaxNestedLoop > 3 ||
m.NestingDepth > 5
orderby m.CyclomaticComplexity descending,
m.MaxNestedLoop descending,
m.NestingDepth descending
select new { m, m.CyclomaticComplexity,
m.MaxNestedLoop,
m.NestingDepth }
// Methods where CyclomaticComplexity > 20
// or MaxNestedLoop > 40
// or NestingDepth > 4
// are hard to understand and maintain
// and should be split in smaller methods.
// See the definition of the complexity metrics here:
// http://www.cppdepend.com/Metrics.aspx#CC
// http://www.cppdepend.com/Metrics.aspx#ILCC
// http://www.cppdepend.com/Metrics.aspx#ILNestingDepth
139 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 139 methods matched. All matched methods could be listed in the report by unchecking the option:
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched methods.
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched methods.
methods | Cyclomatic Complexity (CC) | MaxNestedLoop | NestingDepth | Full Name |
---|---|---|---|---|
methods | Cyclomatic Complexity (CC) | MaxNestedLoop | NestingDepth | Full Name |
scanYYlex() | 982 | 2 | 35 | CppDependencyGlobalMembers.scanYYlex() |
codeYYlex() | 379 | 4 | 14 | CppDependencyGlobalMembers.codeYYlex() |
preYYlex() | 271 | 2 | 11 | CppDependencyGlobalMembers.preYYlex() |
doctokenizerYYlex() | 228 | 2 | 8 | CppDependencyGlobalMembers.doctokenizerYYlex() |
yylex() | 138 | 2 | 7 | CppDependencyGlobalMembers.yylex() |
findMember(EntryNav*,QCString,bool,bool) | 120 | 1 | 12 | CppDependencyGlobalMembers.findMember(EntryNav*,QCString,bool,bool) |
defargsYYlex() | 116 | 2 | 8 | CppDependencyGlobalMembers.defargsYYlex() |
generateXMLForMember(MemberDef*,QTextStream&,QTextStream&,Definition* ,bool) | 94 | 1 | 8 | CppDependencyGlobalMembers.generateXMLForMember(MemberDef* ,QTextStream&,QTextStream&,Definition*,bool) |
configYYlex() | 85 | 2 | 7 | CppDependencyGlobalMembers.configYYlex() |
parseEntityDecl() | 79 | 1 | 6 | QXmlSimpleReader.parseEntityDecl() |
getDefs(constQCString&,constQCString&,constchar*,MemberDef*& ,ClassDef*&,FileDef*&,NamespaceDef*&,GroupDef*&,bool,FileDef*,bool ,bool) | 71 | 1 | 9 | CppDependencyGlobalMembers.getDefs(constQCString&,constQCString& ,constchar*,MemberDef*&,ClassDef*&,FileDef*&,NamespaceDef*&,GroupDef*& ,bool,FileDef*,bool,bool) |
parseContent() | 70 | 1 | 7 | QXmlSimpleReader.parseContent() |
declinfoYYlex() | 69 | 2 | 7 | CppDependencyGlobalMembers.declinfoYYlex() |
parseAttType() | 67 | 1 | 4 | QXmlSimpleReader.parseAttType() |
internalInsertMember(MemberDef*,Protection,bool) | 65 | 0 | 7 | ClassDef.internalInsertMember(MemberDef*,Protection,bool) |
cppExpYYlex() | 62 | 2 | 7 | CppDependencyGlobalMembers.cppExpYYlex() |
parseElementDecl() | 58 | 1 | 4 | QXmlSimpleReader.parseElementDecl() |
visual(int,int) | 57 | 3 | 4 | QString.visual(int,int) |
parsePI(bool) | 57 | 1 | 5 | QXmlSimpleReader.parsePI(bool) |
matchstring(uint*,constchar*,uint,constchar*,bool) | 56 | 2 | 7 | qtoolsGlobalMembers.matchstring(uint*,constchar*,uint,constchar*,bool) |
parseAttlistDecl() | 56 | 1 | 5 | QXmlSimpleReader.parseAttlistDecl() |
check() | 56 | 1 | 4 | Config.check() |
generateClassOrGlobalLink(CodeOutputInterface&,char*,QCString&,bool ,bool,bool) | 49 | 0 | 7 | CppDependencyGlobalMembers.generateClassOrGlobalLink (CodeOutputInterface&,char*,QCString&,bool,bool,bool) |
findBases(QCString,Definition*,FileDef*,bool) | 48 | 2 | 9 | CppDependencyGlobalMembers.findBases(QCString,Definition*,FileDef* ,bool) |
parseDoctype() | 48 | 1 | 5 | QXmlSimpleReader.parseDoctype() |
parseMarkupdecl() | 48 | 1 | 5 | QXmlSimpleReader.parseMarkupdecl() |
parseElement() | 47 | 1 | 5 | QXmlSimpleReader.parseElement() |
replaceFunctionMacro(constQCString&,QCString*,int,int&,constDefine* ,QCString&) | 44 | 2 | 8 | CppDependencyGlobalMembers.replaceFunctionMacro(constQCString& ,QCString*,int,int&,constDefine*,QCString&) |
parseProlog() | 42 | 1 | 6 | QXmlSimpleReader.parseProlog() |
ts_getbuf(QChar*,uint) | 41 | 2 | 6 | QTextStream.ts_getbuf(QChar*,uint) |
sprintf(constchar*) | 41 | 1 | 6 | QString.sprintf(constchar*) |
generateXMLForClass(ClassDef*,QTextStream&,bool,bool) | 39 | 1 | 5 | CppDependencyGlobalMembers.generateXMLForClass(ClassDef*,QTextStream& ,bool,bool) |
buildFunctionList(EntryNav*) | 38 | 1 | 12 | CppDependencyGlobalMembers.buildFunctionList(EntryNav*) |
findClassRelation(EntryNav*,Definition*,ClassDef*,BaseInfo*,QDict<int >*,FindBaseClassRelation_Mode,bool) | 38 | 0 | 7 | CppDependencyGlobalMembers.findClassRelation(EntryNav*,Definition* ,ClassDef*,BaseInfo*,QDict<int>*,FindBaseClassRelation_Mode,bool) |
mergeMembers() | 36 | 4 | 11 | ClassDef.mergeMembers() |
compile() | 36 | 2 | 7 | QRegExp.compile() |
addVariable(EntryNav*,int) | 36 | 1 | 6 | CppDependencyGlobalMembers.addVariable(EntryNav*,int) |
parseExternalID(bool) | 36 | 1 | 4 | QXmlSimpleReader.parseExternalID(bool) |
writeMemberList(OutputList&) | 35 | 3 | 6 | ClassDef.writeMemberList(OutputList&) |
filterLatexString(QTextStream&,constchar*,bool,bool,bool) | 35 | 1 | 6 | CppDependencyGlobalMembers.filterLatexString(QTextStream&,constchar* ,bool,bool,bool) |
readConfiguration(int,char**) | 33 | 1 | 5 | CppDependencyGlobalMembers.readConfiguration(int,char**) |
writePlainDeclarations(OutputList&,ClassDef*,NamespaceDef*,FileDef* ,GroupDef*) | 32 | 2 | 8 | MemberList.writePlainDeclarations(OutputList&,ClassDef*,NamespaceDef* ,FileDef*,GroupDef*) |
parseReference(bool&,QXmlSimpleReader::EntityRecognitionContext) | 32 | 1 | 4 | QXmlSimpleReader.parseReference(bool& ,QXmlSimpleReader::EntityRecognitionContext) |
parseInput() | 32 | 1 | 4 | CppDependencyGlobalMembers.parseInput() |
QTextCodecFromIOD(QIODevice*) | 30 | 3 | 8 | QTextCodecFromIOD.QTextCodecFromIOD(QIODevice*) |
processReference(bool&,QXmlSimpleReader::EntityRecognitionContext) | 30 | 1 | 7 | QXmlSimpleReader.processReference(bool& ,QXmlSimpleReader::EntityRecognitionContext) |
removeAndRebalance(QMapNodeBase*,QMapNodeBase*&,QMapNodeBase*& ,QMapNodeBase*&) | 30 | 1 | 6 | QMapPrivateBase.removeAndRebalance(QMapNodeBase*,QMapNodeBase*& ,QMapNodeBase*&,QMapNodeBase*&) |
open(int) | 30 | 1 | 5 | QFile.open(int) |
parseNotationDecl() | 29 | 1 | 5 | QXmlSimpleReader.parseNotationDecl() |
writeDefArgumentList(OutputList&,ClassDef*,constQCString&,MemberDef*) | 29 | 1 | 4 | CppDependencyGlobalMembers.writeDefArgumentList(OutputList&,ClassDef* ,constQCString&,MemberDef*) |
getLinkInScope(constQCString&,constQCString&,constchar* ,CodeOutputInterface&,constchar*,bool) | 29 | 0 | 7 | CppDependencyGlobalMembers.getLinkInScope(constQCString& ,constQCString&,constchar*,CodeOutputInterface&,constchar*,bool) |
addEnumValuesToEnums(EntryNav*) | 28 | 3 | 13 | CppDependencyGlobalMembers.addEnumValuesToEnums(EntryNav*) |
parseMisc() | 28 | 1 | 5 | QXmlSimpleReader.parseMisc() |
isVarWithConstructor(EntryNav*) | 28 | 1 | 5 | CppDependencyGlobalMembers.isVarWithConstructor(EntryNav*) |
parseEntityValue() | 28 | 1 | 4 | QXmlSimpleReader.parseEntityValue() |
escapeCharsInString(constchar*,bool) | 28 | 1 | 4 | CppDependencyGlobalMembers.escapeCharsInString(constchar*,bool) |
readDirEntries(constQString&,int,int) | 28 | 1 | 3 | QDir.readDirEntries(constQString&,int,int) |
writeAlphabeticalClassList(OutputList&) | 27 | 2 | 6 | CppDependencyGlobalMembers.writeAlphabeticalClassList(OutputList&) |
isAccessibleFromWithExpScope(Definition*,FileDef*,Definition* ,constQCString&) | 27 | 1 | 9 | CppDependencyGlobalMembers.isAccessibleFromWithExpScope(Definition* ,FileDef*,Definition*,constQCString&) |
parseChoiceSeq() | 27 | 1 | 4 | QXmlSimpleReader.parseChoiceSeq() |
findUsedClassesForClass(EntryNav*,Definition*,ClassDef*,ClassDef*,bool ,ArgumentList*,QDict<int>*) | 26 | 4 | 10 | CppDependencyGlobalMembers.findUsedClassesForClass(EntryNav* ,Definition*,ClassDef*,ClassDef*,bool,ArgumentList*,QDict<int>*) |
linkifyText(constTextGeneratorIntf&,Definition*,FileDef*,constchar* ,constchar*,QDict<int>&,bool,bool,bool) | 26 | 2 | 6 | CppDependencyGlobalMembers.linkifyText(constTextGeneratorIntf& ,Definition*,FileDef*,constchar*,constchar*,QDict<int>&,bool,bool,bool ) |
removeRedundantWhiteSpace(constQCString&) | 25 | 2 | 5 | CppDependencyGlobalMembers.removeRedundantWhiteSpace(constQCString&) |
output_int(int,ulong,bool) | 25 | 1 | 4 | QTextStream.output_int(int,ulong,bool) |
addVariable(constQCString&,constQCString&,bool,bool) | 25 | 0 | 4 | VariableContext.addVariable(constQCString&,constQCString&,bool,bool) |
readIncludeFile(QCString&) | 24 | 1 | 7 | CppDependencyGlobalMembers.readIncludeFile(QCString&) |
newResolveTypedef(FileDef*,MemberDef*,MemberDef**,QCString*,QCString* ,ArgumentList*) | 24 | 1 | 4 | CppDependencyGlobalMembers.newResolveTypedef(FileDef*,MemberDef* ,MemberDef**,QCString*,QCString*,ArgumentList*) |
addMethodToClass(EntryNav*,ClassDef*,constQCString&,bool) | 24 | 0 | 5 | CppDependencyGlobalMembers.addMethodToClass(EntryNav*,ClassDef* ,constQCString&,bool) |
findEnums(EntryNav*) | 24 | 0 | 5 | CppDependencyGlobalMembers.findEnums(EntryNav*) |
parseFiles(Entry*,EntryNav*) | 23 | 2 | 10 | CppDependencyGlobalMembers.parseFiles(Entry*,EntryNav*) |
generateMemberLink(CodeOutputInterface&,constQCString&,char*) | 22 | 1 | 9 | CppDependencyGlobalMembers.generateMemberLink(CodeOutputInterface& ,constQCString&,char*) |
parseAttValue() | 22 | 1 | 4 | QXmlSimpleReader.parseAttValue() |
zed(char) | 22 | 0 | 2 | TranslatorHungarian.zed(char) |
addIncludedUsingDirectives() | 21 | 2 | 8 | FileDef.addIncludedUsingDirectives() |
transferFunctionReferences() | 21 | 2 | 7 | CppDependencyGlobalMembers.transferFunctionReferences() |
dump(uint*) | 21 | 2 | 5 | qtoolsGlobalMembers.dump(uint*) |
preprocessFile(constchar*,BufStr&,BufStr&) | 21 | 2 | 5 | CppDependencyGlobalMembers.preprocessFile(constchar*,BufStr&,BufStr&) |
findFile(constchar*,bool,bool&,bool) | 21 | 1 | 7 | CppDependencyGlobalMembers.findFile(constchar*,bool,bool&,bool) |
parsePEReference(QXmlSimpleReader::EntityRecognitionContext) | 21 | 1 | 6 | QXmlSimpleReader.parsePEReference (QXmlSimpleReader::EntityRecognitionContext) |
input_double() | 21 | 1 | 5 | QTextStream.input_double() |
findEndOfTemplate(constQCString&,int) | 21 | 1 | 4 | CppDependencyGlobalMembers.findEndOfTemplate(constQCString&,int) |
resolveTypeDef(Definition*,constQCString&,Definition**) | 20 | 3 | 7 | CppDependencyGlobalMembers.resolveTypeDef(Definition*,constQCString& ,Definition**) |
readCodeFragment(constchar*,int&,int&,QCString&) | 20 | 2 | 7 | CppDependencyGlobalMembers.readCodeFragment(constchar*,int&,int& ,QCString&) |
char_val(constchar**,uint*) | 20 | 1 | 7 | qtoolsGlobalMembers.char_val(constchar**,uint*) |
writeEnumDeclaration(OutputList&,ClassDef*,NamespaceDef*,FileDef* ,GroupDef*) | 18 | 1 | 6 | MemberDef.writeEnumDeclaration(OutputList&,ClassDef*,NamespaceDef* ,FileDef*,GroupDef*) |
getResolvedSymbol(Definition*,FileDef*,Definition*,QCString& ,ArgumentList*,int&,ClassDef*&,MemberDef*&,QCString&,QCString&) | 18 | 0 | 11 | CppDependencyGlobalMembers.getResolvedSymbol(Definition*,FileDef* ,Definition*,QCString&,ArgumentList*,int&,ClassDef*&,MemberDef*& ,QCString&,QCString&) |
isAccessibleFrom(Definition*,FileDef*,Definition*) | 18 | 0 | 6 | CppDependencyGlobalMembers.isAccessibleFrom(Definition*,FileDef* ,Definition*) |
removeIdsAndMarkers(constchar*) | 17 | 2 | 7 | CppDependencyGlobalMembers.removeIdsAndMarkers(constchar*) |
findsymbolsInTemplate(QCString,Definition*,FileDef*) | 17 | 2 | 6 | CppDependencyGlobalMembers.findsymbolsInTemplate(QCString,Definition* ,FileDef*) |
findFileDef(constFileNameDict*,constchar*,bool&) | 17 | 1 | 6 | CppDependencyGlobalMembers.findFileDef(constFileNameDict*,constchar* ,bool&) |
setCallContextForVar(constQCString&) | 17 | 1 | 6 | CppDependencyGlobalMembers.setCallContextForVar(constQCString&) |
transferFunctionDocumentation() | 16 | 3 | 10 | CppDependencyGlobalMembers.transferFunctionDocumentation() |
findUsingDirectives(EntryNav*) | 16 | 1 | 6 | CppDependencyGlobalMembers.findUsingDirectives(EntryNav*) |
readFileOrDirectory(constchar*,FileNameList*,FileNameDict*,StringDict* ,QStrList*,QStrList*,StringList*,StringDict*,bool,bool,QDict<void>*) | 16 | 0 | 9 | CppDependencyGlobalMembers.readFileOrDirectory(constchar* ,FileNameList*,FileNameDict*,StringDict*,QStrList*,QStrList* ,StringList*,StringDict*,bool,bool,QDict<void>*) |
removeMarkers(constchar*) | 15 | 2 | 7 | CppDependencyGlobalMembers.removeMarkers(constchar*) |
clear() | 15 | 2 | 6 | QGDict.clear() |
generateDiskNames() | 15 | 2 | 6 | FileName.generateDiskNames() |
writeDeclaration(OutputList&,constClassDef::CompoundType*,constchar* ,bool) | 15 | 1 | 7 | ClassSDict.writeDeclaration(OutputList&,constClassDef::CompoundType* ,constchar*,bool) |
generateClassMemberLink(CodeOutputInterface&,ClassDef*,constchar*) | 15 | 1 | 6 | CppDependencyGlobalMembers.generateClassMemberLink (CodeOutputInterface&,ClassDef*,constchar*) |
substEnvVarsInStrList(QStrList&) | 14 | 3 | 8 | CppDependencyGlobalMembers.substEnvVarsInStrList(QStrList&) |
Statistics
Stat | Cyclomatic Complexity (CC) | MaxNestedLoop | NestingDepth |
---|---|---|---|
Sum: | 5 733 | 207 | 947 |
Average: | 41.245 | 1.4892 | 6.8129 |
Minimum: | 5 | 0 | 2 |
Maximum: | 982 | 4 | 35 |
Standard deviation: | 92.168 | 0.87628 | 3.1545 |
Variance: | 8 494 | 0.76787 | 9.9506 |
Rule warning: Methods potentially poorly commented |
// <Name>Methods potentially poorly commented</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.PercentageComment < 20 &&
m.NbLinesOfCode > 20
orderby m.PercentageComment ascending
select new { m, m.PercentageComment, m.NbLinesOfCode, m.NbLinesOfComment }
// Methods where %Comment < 20 and that have
// at least 20 lines of code might need to be more commented.
// See the definition of the Comments metric here
// http://www.cppdepend.com/Metrics.aspx#PercentageComment
// http://www.cppdepend.com/Metrics.aspx#NbLinesOfComment
warnif count > 0 from m in JustMyCode.Methods where
m.PercentageComment < 20 &&
m.NbLinesOfCode > 20
orderby m.PercentageComment ascending
select new { m, m.PercentageComment, m.NbLinesOfCode, m.NbLinesOfComment }
// Methods where %Comment < 20 and that have
// at least 20 lines of code might need to be more commented.
// See the definition of the Comments metric here
// http://www.cppdepend.com/Metrics.aspx#PercentageComment
// http://www.cppdepend.com/Metrics.aspx#NbLinesOfComment
206 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 206 methods matched. All matched methods could be listed in the report by unchecking the option:
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched methods.
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched methods.
methods | Percentage Comment | # lines of code (LOC) | # lines of comment | Full Name |
---|---|---|---|---|
methods | Percentage Comment | # lines of code (LOC) | # lines of comment | Full Name |
resize(uint) | 0 | 21 | 0 | QGString.resize(uint) |
enlarge(uint) | 0 | 21 | 0 | QGString.enlarge(uint) |
rebalance(QMapNodeBase*,QMapNodeBase*&) | 0 | 31 | 0 | QMapPrivateBase.rebalance(QMapNodeBase*,QMapNodeBase*&) |
removeAndRebalance(QMapNodeBase*,QMapNodeBase*&,QMapNodeBase*& ,QMapNodeBase*&) | 0 | 109 | 1 | QMapPrivateBase.removeAndRebalance(QMapNodeBase*,QMapNodeBase*& ,QMapNodeBase*&,QMapNodeBase*&) |
fromUnicode(constQString&,int&) | 0 | 35 | 0 | QSimpleTextCodec.fromUnicode(constQString&,int&) |
addClassMemberNameToIndex(MemberDef*) | 0 | 36 | 0 | CppDependencyGlobalMembers.addClassMemberNameToIndex(MemberDef*) |
addFileMemberNameToIndex(MemberDef*) | 0 | 26 | 0 | CppDependencyGlobalMembers.addFileMemberNameToIndex(MemberDef*) |
addNamespaceMemberNameToIndex(MemberDef*) | 0 | 23 | 0 | CppDependencyGlobalMembers.addNamespaceMemberNameToIndex(MemberDef*) |
convertCharEntitiesToUTF8(constQCString&) | 0 | 85 | 0 | CppDependencyGlobalMembers.convertCharEntitiesToUTF8(constQCString&) |
generateDEF() | 0 | 43 | 0 | CppDependencyGlobalMembers.generateDEF() |
startQuickIndexItem(OutputList&,constchar*,bool,bool,bool&) | 0 | 21 | 0 | CppDependencyGlobalMembers.startQuickIndexItem(OutputList&,constchar* ,bool,bool,bool&) |
resolveTrigraph(char) | 0 | 21 | 0 | CppDependencyGlobalMembers.resolveTrigraph(char) |
ResolveBestClass(FileDef*,ClassDef*&,MemberDef*&,QCString&,QDict<int>* ) | 0 | 26 | 0 | CppDependencyGlobalMembers.ResolveBestClass(FileDef*,ClassDef*& ,MemberDef*&,QCString&,QDict<int>*) |
subtituteTemplate(QCString,QDict<QCString>*) | 0 | 25 | 0 | CppDependencyGlobalMembers.subtituteTemplate(QCString,QDict<QCString>* ) |
GetInheritanceDepth(ClassDef*,int&,ClassDef*,bool) | 0 | 22 | 0 | CppDependencyGlobalMembers.GetInheritanceDepth(ClassDef*,int& ,ClassDef*,bool) |
generateXMLForExternal() | 0 | 29 | 0 | CppDependencyGlobalMembers.generateXMLForExternal() |
writeIncludeFiles(OutputList&) | 0 | 33 | 0 | ClassDef.writeIncludeFiles(OutputList&) |
writeDetailedDescription(OutputList&,constQCString&) | 0 | 25 | 0 | NamespaceDef.writeDetailedDescription(OutputList&,constQCString&) |
memberTypeName() | 0 | 28 | 0 | MemberDef.memberTypeName() |
zed(char) | 0 | 24 | 0 | TranslatorHungarian.zed(char) |
XmlSectionMapper() | 0 | 35 | 0 | XmlSectionMapper.XmlSectionMapper() |
dump(uint*) | 1 | 62 | 1 | qtoolsGlobalMembers.dump(uint*) |
escapeCharsInString(constchar*,bool) | 1 | 94 | 1 | CppDependencyGlobalMembers.escapeCharsInString(constchar*,bool) |
findFile(constchar*,bool,bool&,bool) | 1 | 85 | 1 | CppDependencyGlobalMembers.findFile(constchar*,bool,bool&,bool) |
writeDocumentation(OutputList&) | 1 | 50 | 1 | ClassDef.writeDocumentation(OutputList&) |
trCompoundReferenceFortran(constchar*,ClassDef::CompoundType,bool) | 1 | 51 | 1 | TranslatorRussian.trCompoundReferenceFortran(constchar* ,ClassDef::CompoundType,bool) |
CheckFileEntry(FileDef*,EntryNav*) | 2 | 72 | 2 | CppDependencyGlobalMembers.CheckFileEntry(FileDef*,EntryNav*) |
stringize(constQCString&) | 2 | 40 | 1 | CppDependencyGlobalMembers.stringize(constQCString&) |
writeXMLCodeString(QTextStream&,constchar*,int&) | 2 | 38 | 1 | CppDependencyGlobalMembers.writeXMLCodeString(QTextStream&,constchar* ,int&) |
writeListOfAllMembers(ClassDef*,QTextStream&) | 2 | 48 | 1 | CppDependencyGlobalMembers.writeListOfAllMembers(ClassDef* ,QTextStream&) |
unlink_string(constQString&,QCollection::Item) | 3 | 25 | 1 | QGDict.unlink_string(constQString&,QCollection::Item) |
QTextCodecFromIOD(QIODevice*) | 3 | 91 | 3 | QTextCodecFromIOD.QTextCodecFromIOD(QIODevice*) |
fromUnicode(constQString&,int&) | 3 | 25 | 1 | QTextCodecFromIOD.fromUnicode(constQString&,int&) |
readConfiguration(int,char**) | 3 | 146 | 6 | CppDependencyGlobalMembers.readConfiguration(int,char**) |
findFileDef(constFileNameDict*,constchar*,bool&) | 3 | 61 | 2 | CppDependencyGlobalMembers.findFileDef(constFileNameDict*,constchar* ,bool&) |
argListToString(ArgumentList*,bool) | 3 | 29 | 1 | CppDependencyGlobalMembers.argListToString(ArgumentList*,bool) |
convertToXML(constchar*) | 3 | 27 | 1 | CppDependencyGlobalMembers.convertToXML(constchar*) |
writeQuickMemberLinks(OutputList&,MemberDef*) | 3 | 27 | 1 | ClassDef.writeQuickMemberLinks(OutputList&,MemberDef*) |
writeQuickMemberLinks(OutputList&,MemberDef*) | 3 | 25 | 1 | FileDef.writeQuickMemberLinks(OutputList&,MemberDef*) |
writeSource(OutputList&) | 3 | 30 | 1 | FileDef.writeSource(OutputList&) |
trCompoundReferenceFortran(constchar*,ClassDef::CompoundType,bool) | 3 | 27 | 1 | TranslatorEnglish.trCompoundReferenceFortran(constchar* ,ClassDef::CompoundType,bool) |
trCompoundReferenceFortran(constchar*,ClassDef::CompoundType,bool) | 3 | 27 | 1 | TranslatorDutch.trCompoundReferenceFortran(constchar* ,ClassDef::CompoundType,bool) |
trCompoundReferenceFortran(constchar*,ClassDef::CompoundType,bool) | 3 | 31 | 1 | TranslatorCzech.trCompoundReferenceFortran(constchar* ,ClassDef::CompoundType,bool) |
trCompoundReferenceFortran(constchar*,ClassDef::CompoundType,bool) | 3 | 29 | 1 | TranslatorItalian.trCompoundReferenceFortran(constchar* ,ClassDef::CompoundType,bool) |
trCompoundReferenceFortran(constchar*,ClassDef::CompoundType,bool) | 3 | 28 | 1 | TranslatorGerman.trCompoundReferenceFortran(constchar* ,ClassDef::CompoundType,bool) |
trCompoundReferenceFortran(constchar*,ClassDef::CompoundType,bool) | 3 | 29 | 1 | TranslatorSpanish.trCompoundReferenceFortran(constchar* ,ClassDef::CompoundType,bool) |
trCompoundReferenceFortran(constchar*,ClassDef::CompoundType,bool) | 3 | 27 | 1 | TranslatorCroatian.trCompoundReferenceFortran(constchar* ,ClassDef::CompoundType,bool) |
trCompoundReferenceFortran(constchar*,ClassDef::CompoundType,bool) | 3 | 27 | 1 | TranslatorKorean.trCompoundReferenceFortran(constchar* ,ClassDef::CompoundType,bool) |
trCompoundReferenceFortran(constchar*,ClassDef::CompoundType,bool) | 3 | 27 | 1 | TranslatorChinesetraditional.trCompoundReferenceFortran(constchar* ,ClassDef::CompoundType,bool) |
trCompoundReferenceFortran(constchar*,ClassDef::CompoundType,bool) | 3 | 31 | 1 | TranslatorBrazilian.trCompoundReferenceFortran(constchar* ,ClassDef::CompoundType,bool) |
trCompoundReferenceFortran(constchar*,ClassDef::CompoundType,bool) | 3 | 30 | 1 | TranslatorSerbian.trCompoundReferenceFortran(constchar* ,ClassDef::CompoundType,bool) |
trCompoundReferenceFortran(constchar*,ClassDef::CompoundType,bool) | 3 | 27 | 1 | TranslatorCatalan.trCompoundReferenceFortran(constchar* ,ClassDef::CompoundType,bool) |
trCompoundReferenceFortran(constchar*,ClassDef::CompoundType,bool) | 3 | 27 | 1 | TranslatorPersian.trCompoundReferenceFortran(constchar* ,ClassDef::CompoundType,bool) |
insert_other(constchar*,QCollection::Item,int,int) | 4 | 22 | 1 | QGCache.insert_other(constchar*,QCollection::Item,int,int) |
toUnicode(constchar*,int) | 4 | 22 | 1 | QUtf8Decoder.toUnicode(constchar*,int) |
toUnicode(constchar*,int) | 4 | 24 | 1 | QUtf16Decoder.toUnicode(constchar*,int) |
findBases(QCString,Definition*,FileDef*,bool) | 4 | 144 | 7 | CppDependencyGlobalMembers.findBases(QCString,Definition*,FileDef* ,bool) |
transcodeCharacterStringToUTF8(constQCString&) | 4 | 24 | 1 | CppDependencyGlobalMembers.transcodeCharacterStringToUTF8 (constQCString&) |
recodeString(constQCString&,constchar*,constchar*) | 4 | 24 | 1 | CppDependencyGlobalMembers.recodeString(constQCString&,constchar* ,constchar*) |
configStringRecode(constQCString&,constchar*,constchar*) | 4 | 24 | 1 | CppDependencyGlobalMembers.configStringRecode(constQCString& ,constchar*,constchar*) |
transcodeCharacterBuffer(BufStr&,int,constchar*,constchar*) | 4 | 24 | 1 | CppDependencyGlobalMembers.transcodeCharacterBuffer(BufStr&,int ,constchar*,constchar*) |
writeQuickMemberIndex(OutputList&,MemberIndexList*,int,QCString,bool) | 4 | 21 | 1 | CppDependencyGlobalMembers.writeQuickMemberIndex(OutputList& ,MemberIndexList*,int,QCString,bool) |
transcodeCharacterBuffer(constchar*,BufStr&,int,constchar*,constchar*) | 4 | 24 | 1 | CppDependencyGlobalMembers.transcodeCharacterBuffer(constchar*,BufStr& ,int,constchar*,constchar*) |
init(constchar*,constchar*,constQCString&,constchar*) | 4 | 40 | 2 | ClassDefImpl.init(constchar*,constchar*,constQCString&,constchar*) |
trCompoundMembersDescription(bool) | 4 | 23 | 1 | TranslatorItalian.trCompoundMembersDescription(bool) |
trCompoundMembersDescription(bool) | 4 | 23 | 1 | TranslatorRomanian.trCompoundMembersDescription(bool) |
trCompoundMembersDescription(bool) | 4 | 21 | 1 | TranslatorBrazilian.trCompoundMembersDescription(bool) |
qt_cmp_si(constvoid*,constvoid*) | 5 | 36 | 2 | qtoolsGlobalMembers.qt_cmp_si(constvoid*,constvoid*) |
stripClassName(constchar*,MemberDef*) | 5 | 37 | 2 | CppDependencyGlobalMembers.stripClassName(constchar*,MemberDef*) |
extractTrailingComment(constchar*) | 5 | 34 | 2 | CppDependencyGlobalMembers.extractTrailingComment(constchar*) |
compoundTypeString() | 5 | 37 | 2 | ClassDef.compoundTypeString() |
insertMember(MemberDef*) | 5 | 32 | 2 | NamespaceDef.insertMember(MemberDef*) |
writeEnumDeclaration(OutputList&,ClassDef*,NamespaceDef*,FileDef* ,GroupDef*) | 5 | 68 | 4 | MemberDef.writeEnumDeclaration(OutputList&,ClassDef*,NamespaceDef* ,FileDef*,GroupDef*) |
readDirEntries(constQString&,int,int) | 6 | 98 | 7 | QDir.readDirEntries(constQString&,int,int) |
input_int() | 6 | 62 | 4 | QTextStream.input_int() |
convertToHtml(constchar*,bool) | 6 | 40 | 3 | CppDependencyGlobalMembers.convertToHtml(constchar*,bool) |
parseCCode(CodeOutputInterface&,constchar*,constQCString&,bool ,constchar*,FileDef*,int,int,bool,MemberDef*) | 6 | 62 | 4 | CppDependencyGlobalMembers.parseCCode(CodeOutputInterface&,constchar* ,constQCString&,bool,constchar*,FileDef*,int,int,bool,MemberDef*) |
tokToString(int) | 6 | 27 | 2 | CppDependencyGlobalMembers.tokToString(int) |
MD5Transform(unsignedint*,constunsignedint*) | 6 | 73 | 5 | CppDependencyGlobalMembers.MD5Transform(unsignedint*,constunsignedint* ) |
qualifiedNameWithTemplateParameters(QList<ArgumentList>*) | 6 | 28 | 2 | ClassDef.qualifiedNameWithTemplateParameters(QList<ArgumentList>*) |
writeDeclaration(OutputList&,constchar*,bool) | 6 | 41 | 3 | NamespaceSDict.writeDeclaration(OutputList&,constchar*,bool) |
GetIDLSign() | 6 | 30 | 2 | MemberDef.GetIDLSign() |
filterLatexString(QTextStream&,constchar*,bool,bool,bool) | 7 | 103 | 8 | CppDependencyGlobalMembers.filterLatexString(QTextStream&,constchar* ,bool,bool,bool) |
trCompoundReference(constchar*,ClassDef::CompoundType,bool) | 7 | 53 | 4 | TranslatorRussian.trCompoundReference(constchar* ,ClassDef::CompoundType,bool) |
trCompoundReference(constchar*,ClassDef::CompoundType,bool) | 7 | 53 | 4 | TranslatorUkrainian.trCompoundReference(constchar* ,ClassDef::CompoundType,bool) |
output_int(int,ulong,bool) | 8 | 150 | 14 | QTextStream.output_int(int,ulong,bool) |
assigncast(char*) | 8 | 22 | 2 | CppDependencyGlobalMembers.assigncast(char*) |
usage(constchar*) | 8 | 23 | 2 | CppDependencyGlobalMembers.usage(constchar*) |
readDictionary() | 8 | 22 | 2 | CppDependencyGlobalMembers.readDictionary() |
internalInsertMember(MemberDef*,Protection,bool) | 8 | 273 | 26 | ClassDef.internalInsertMember(MemberDef*,Protection,bool) |
hash(void*) | 8 | 21 | 2 | ObjCache.hash(void*) |
findBasesForClasses(ClassDef*,QDict<QCString>*,Definition*,FileDef*) | 9 | 28 | 3 | CppDependencyGlobalMembers.findBasesForClasses(ClassDef*,QDict <QCString>*,Definition*,FileDef*) |
generateClassMemberLink(CodeOutputInterface&,ClassDef*,constchar*) | 9 | 37 | 4 | CppDependencyGlobalMembers.generateClassMemberLink (CodeOutputInterface&,ClassDef*,constchar*) |
configFileToString(constchar*) | 9 | 40 | 4 | CppDependencyGlobalMembers.configFileToString(constchar*) |
getLinkInScope(constQCString&,constQCString&,constchar* ,CodeOutputInterface&,constchar*,bool) | 10 | 69 | 8 | CppDependencyGlobalMembers.getLinkInScope(constQCString& ,constQCString&,constchar*,CodeOutputInterface&,constchar*,bool) |
scanYYlex() | 10 | 4 054 | 476 | CppDependencyGlobalMembers.scanYYlex() |
parseMain(constchar*,constchar*,Entry*) | 10 | 42 | 5 | CppDependencyGlobalMembers.parseMain(constchar*,constchar*,Entry*) |
writeDeclaration(OutputList&,constClassDef::CompoundType*,constchar* ,bool) | 10 | 53 | 6 | ClassSDict.writeDeclaration(OutputList&,constClassDef::CompoundType* ,constchar*,bool) |
Entry(constEntry&) | 10 | 44 | 5 | Entry.Entry(constEntry&) |
createSubtreeIndex(EntryNav*,FileStorage*,FileDef*,int&) | 10 | 25 | 3 | Entry.createSubtreeIndex(EntryNav*,FileStorage*,FileDef*,int&) |
Statistics
Stat | Percentage Comment | # lines of code (LOC) | # lines of comment |
---|---|---|---|
Sum: | 1 891 | 18 141 | 2 314 |
Average: | 9.1796 | 88.063 | 11.233 |
Minimum: | 0 | 21 | 0 |
Maximum: | 19 | 4 054 | 476 |
Standard deviation: | 5.9023 | 320.28 | 40.813 |
Variance: | 34.837 | 102 578 | 1 665 |
Rule warning: Methods with too many parameters |
// <Name>Methods with too many parameters</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.NbParameters > 5
orderby m.NbParameters descending
select new { m, m.NbParameters }
// Methods where NbParameters > 5 might be painful to call
// and might degrade performance. You should prefer using
// additional properties/fields to the declaring type to
// handle numerous states. Another alternative is to provide
// a class or structure dedicated to handle arguments passing
// (for example see the class System.Diagnostics.ProcessStartInfo
// and the method System.Diagnostics.Process.Start(ProcessStartInfo))
// See the definition of the NbParameters metric here
// http://www.cppdepend.com/Metrics.aspx#NbParameters
warnif count > 0 from m in JustMyCode.Methods where
m.NbParameters > 5
orderby m.NbParameters descending
select new { m, m.NbParameters }
// Methods where NbParameters > 5 might be painful to call
// and might degrade performance. You should prefer using
// additional properties/fields to the declaring type to
// handle numerous states. Another alternative is to provide
// a class or structure dedicated to handle arguments passing
// (for example see the class System.Diagnostics.ProcessStartInfo
// and the method System.Diagnostics.Process.Start(ProcessStartInfo))
// See the definition of the NbParameters metric here
// http://www.cppdepend.com/Metrics.aspx#NbParameters
47 methods matched
methods | # Parameters | Full Name |
---|---|---|
methods | # Parameters | Full Name |
MemberDef(constchar*,int,constchar*,constchar*,constchar*,constchar* ,Protection,Specifier,bool,Relationship,MemberDef::MemberType ,constArgumentList*,constArgumentList*) | 13 | MemberDef.MemberDef(constchar*,int,constchar*,constchar*,constchar* ,constchar*,Protection,Specifier,bool,Relationship ,MemberDef::MemberType,constArgumentList*,constArgumentList*) |
Init(constchar*,int,constchar*,constchar*,constchar*,constchar* ,Protection,Specifier,bool,Relationship,MemberDef::MemberType ,constArgumentList*,constArgumentList*) | 13 | MemberDef.Init(constchar*,int,constchar*,constchar*,constchar* ,constchar*,Protection,Specifier,bool,Relationship ,MemberDef::MemberType,constArgumentList*,constArgumentList*) |
getDefs(constQCString&,constQCString&,constchar*,MemberDef*& ,ClassDef*&,FileDef*&,NamespaceDef*&,GroupDef*&,bool,FileDef*,bool ,bool) | 12 | CppDependencyGlobalMembers.getDefs(constQCString&,constQCString& ,constchar*,MemberDef*&,ClassDef*&,FileDef*&,NamespaceDef*&,GroupDef*& ,bool,FileDef*,bool,bool) |
readFileOrDirectory(constchar*,FileNameList*,FileNameDict*,StringDict* ,QStrList*,QStrList*,StringList*,StringDict*,bool,bool,QDict<void>*) | 11 | CppDependencyGlobalMembers.readFileOrDirectory(constchar* ,FileNameList*,FileNameDict*,StringDict*,QStrList*,QStrList* ,StringList*,StringDict*,bool,bool,QDict<void>*) |
readDir(QFileInfo*,FileNameList*,FileNameDict*,StringDict*,QStrList* ,QStrList*,StringList*,StringDict*,bool,bool,QDict<void>*) | 11 | CppDependencyGlobalMembers.readDir(QFileInfo*,FileNameList* ,FileNameDict*,StringDict*,QStrList*,QStrList*,StringList*,StringDict* ,bool,bool,QDict<void>*) |
init(Definition*,constchar*,constchar*,constchar*,Protection,Specifier ,bool,Relationship,MemberDef::MemberType,constArgumentList* ,constArgumentList*) | 11 | MemberDefImpl.init(Definition*,constchar*,constchar*,constchar* ,Protection,Specifier,bool,Relationship,MemberDef::MemberType ,constArgumentList*,constArgumentList*) |
parseCCode(CodeOutputInterface&,constchar*,constQCString&,bool ,constchar*,FileDef*,int,int,bool,MemberDef*) | 10 | CppDependencyGlobalMembers.parseCCode(CodeOutputInterface&,constchar* ,constQCString&,bool,constchar*,FileDef*,int,int,bool,MemberDef*) |
getResolvedSymbol(Definition*,FileDef*,Definition*,QCString& ,ArgumentList*,int&,ClassDef*&,MemberDef*&,QCString&,QCString&) | 10 | CppDependencyGlobalMembers.getResolvedSymbol(Definition*,FileDef* ,Definition*,QCString&,ArgumentList*,int&,ClassDef*&,MemberDef*& ,QCString&,QCString&) |
parseDoc(constchar*,int,Definition*,MemberDef*,constQCString&,bool ,bool,constchar*,bool,bool) | 10 | OutputList.parseDoc(constchar*,int,Definition*,MemberDef* ,constQCString&,bool,bool,constchar*,bool,bool) |
parseCode(CodeOutputInterface&,constchar*,constQCString&,bool ,constchar*,FileDef*,int,int,bool,MemberDef*) | 10 | ParserInterface.parseCode(CodeOutputInterface&,constchar* ,constQCString&,bool,constchar*,FileDef*,int,int,bool,MemberDef*) |
parseCode(CodeOutputInterface&,constchar*,constQCString&,bool ,constchar*,FileDef*,int,int,bool,MemberDef*) | 10 | CLanguageScanner.parseCode(CodeOutputInterface&,constchar* ,constQCString&,bool,constchar*,FileDef*,int,int,bool,MemberDef*) |
linkifyText(constTextGeneratorIntf&,Definition*,FileDef*,constchar* ,constchar*,QDict<int>&,bool,bool,bool) | 9 | CppDependencyGlobalMembers.linkifyText(constTextGeneratorIntf& ,Definition*,FileDef*,constchar*,constchar*,QDict<int>&,bool,bool,bool ) |
getResolvedClass(Definition*,FileDef*,constchar*,MemberDef**,QCString* ,bool,bool,QCString*,bool) | 9 | CppDependencyGlobalMembers.getResolvedClass(Definition*,FileDef* ,constchar*,MemberDef**,QCString*,bool,bool,QCString*,bool) |
addRelatedPage(constchar*,constQCString&,constQCString&,QList <SectionInfo>*,constchar*,int,constQList<ListItemInfo>*,GroupDef* ,TagInfo*) | 9 | CppDependencyGlobalMembers.addRelatedPage(constchar*,constQCString& ,constQCString&,QList<SectionInfo>*,constchar*,int,constQList <ListItemInfo>*,GroupDef*,TagInfo*) |
parseFuncDecl(constQCString&,bool,QCString&,QCString&,QCString& ,QCString&,QCString&,QCString&) | 8 | CppDependencyGlobalMembers.parseFuncDecl(constQCString&,bool,QCString& ,QCString&,QCString&,QCString&,QCString&,QCString&) |
addVariableToClass(EntryNav*,ClassDef*,MemberDef::MemberType ,constQCString&,bool,MemberDef*,Protection,Relationship) | 8 | CppDependencyGlobalMembers.addVariableToClass(EntryNav*,ClassDef* ,MemberDef::MemberType,constQCString&,bool,MemberDef*,Protection ,Relationship) |
findBaseClassesForClass(EntryNav*,Definition*,ClassDef*,ClassDef* ,FindBaseClassRelation_Mode,bool,ArgumentList*,QDict<int>*) | 8 | CppDependencyGlobalMembers.findBaseClassesForClass(EntryNav* ,Definition*,ClassDef*,ClassDef*,FindBaseClassRelation_Mode,bool ,ArgumentList*,QDict<int>*) |
generateXMLSection(Definition*,QTextStream&,QTextStream&,MemberList* ,constchar*,bool,constchar*,constchar*) | 8 | CppDependencyGlobalMembers.generateXMLSection(Definition*,QTextStream& ,QTextStream&,MemberList*,constchar*,bool,constchar*,constchar*) |
writeDeclarations(OutputList&,ClassDef*,NamespaceDef*,FileDef* ,GroupDef*,constchar*,constchar*,bool) | 8 | MemberList.writeDeclarations(OutputList&,ClassDef*,NamespaceDef* ,FileDef*,GroupDef*,constchar*,constchar*,bool) |
matchArguments2(Definition*,FileDef*,ArgumentList*,Definition* ,FileDef*,ArgumentList*,bool) | 7 | CppDependencyGlobalMembers.matchArguments2(Definition*,FileDef* ,ArgumentList*,Definition*,FileDef*,ArgumentList*,bool) |
writeMultiLineCodeLink(CodeOutputInterface&,constchar*,constchar* ,constchar*,constchar*,constchar*,MemberDef*) | 7 | CppDependencyGlobalMembers.writeMultiLineCodeLink(CodeOutputInterface& ,constchar*,constchar*,constchar*,constchar*,constchar*,MemberDef*) |
findClassRelation(EntryNav*,Definition*,ClassDef*,BaseInfo*,QDict<int >*,FindBaseClassRelation_Mode,bool) | 7 | CppDependencyGlobalMembers.findClassRelation(EntryNav*,Definition* ,ClassDef*,BaseInfo*,QDict<int>*,FindBaseClassRelation_Mode,bool) |
findUsedClassesForClass(EntryNav*,Definition*,ClassDef*,ClassDef*,bool ,ArgumentList*,QDict<int>*) | 7 | CppDependencyGlobalMembers.findUsedClassesForClass(EntryNav* ,Definition*,ClassDef*,ClassDef*,bool,ArgumentList*,QDict<int>*) |
getResolvedClassRec(Definition*,FileDef*,constchar*,MemberDef** ,QCString*,QCString*,bool) | 7 | CppDependencyGlobalMembers.getResolvedClassRec(Definition*,FileDef* ,constchar*,MemberDef**,QCString*,QCString*,bool) |
ClassDef(constchar*,int,constchar*,ClassDef::CompoundType,constchar* ,constchar*,bool) | 7 | ClassDef.ClassDef(constchar*,int,constchar*,ClassDef::CompoundType ,constchar*,constchar*,bool) |
foreach<A1,A2,A3,A4,A5,A6>(void(IndexIntf::*)(A1,A2,A3,A4,A5,A6),A1,A2 ,A3,A4,A5,A6) | 7 | IndexList.foreach<A1,A2,A3,A4,A5,A6>(void(IndexIntf::*)(A1,A2,A3,A4,A5 ,A6),A1,A2,A3,A4,A5,A6) |
startFile(OutputList&,constchar*,constchar*,constchar*,HighlightedItem ,bool) | 6 | CppDependencyGlobalMembers.startFile(OutputList&,constchar*,constchar* ,constchar*,HighlightedItem,bool) |
resolveRef(constchar*,constchar*,bool,Definition**,MemberDef**,bool) | 6 | CppDependencyGlobalMembers.resolveRef(constchar*,constchar*,bool ,Definition**,MemberDef**,bool) |
newResolveTypedef(FileDef*,MemberDef*,MemberDef**,QCString*,QCString* ,ArgumentList*) | 6 | CppDependencyGlobalMembers.newResolveTypedef(FileDef*,MemberDef* ,MemberDef**,QCString*,QCString*,ArgumentList*) |
getLinkInScope(constQCString&,constQCString&,constchar* ,CodeOutputInterface&,constchar*,bool) | 6 | CppDependencyGlobalMembers.getLinkInScope(constQCString& ,constQCString&,constchar*,CodeOutputInterface&,constchar*,bool) |
generateClassOrGlobalLink(CodeOutputInterface&,char*,QCString&,bool ,bool,bool) | 6 | CppDependencyGlobalMembers.generateClassOrGlobalLink (CodeOutputInterface&,char*,QCString&,bool,bool,bool) |
addMemberDocs(EntryNav*,MemberDef*,constchar*,ArgumentList*,bool ,NamespaceSDict*) | 6 | CppDependencyGlobalMembers.addMemberDocs(EntryNav*,MemberDef* ,constchar*,ArgumentList*,bool,NamespaceSDict*) |
addVariableToFile(EntryNav*,MemberDef::MemberType,constQCString& ,constQCString&,bool,MemberDef*) | 6 | CppDependencyGlobalMembers.addVariableToFile(EntryNav* ,MemberDef::MemberType,constQCString&,constQCString&,bool,MemberDef*) |
findTemplateInstanceRelation(Entry*,Definition*,ClassDef* ,constQCString&,QDict<int>*,bool) | 6 | CppDependencyGlobalMembers.findTemplateInstanceRelation(Entry* ,Definition*,ClassDef*,constQCString&,QDict<int>*,bool) |
findGlobalMember(EntryNav*,constQCString&,constchar*,constchar* ,constchar*,constchar*) | 6 | CppDependencyGlobalMembers.findGlobalMember(EntryNav*,constQCString& ,constchar*,constchar*,constchar*,constchar*) |
replaceFunctionMacro(constQCString&,QCString*,int,int&,constDefine* ,QCString&) | 6 | CppDependencyGlobalMembers.replaceFunctionMacro(constQCString& ,QCString*,int,int&,constDefine*,QCString&) |
matchArgument2(Definition*,FileDef*,Argument*,Definition*,FileDef* ,Argument*) | 6 | CppDependencyGlobalMembers.matchArgument2(Definition*,FileDef* ,Argument*,Definition*,FileDef*,Argument*) |
writeXMLLink(QTextStream&,constchar*,constchar*,constchar*,constchar* ,constchar*) | 6 | CppDependencyGlobalMembers.writeXMLLink(QTextStream&,constchar* ,constchar*,constchar*,constchar*,constchar*) |
writeXMLDocBlock(QTextStream&,constQCString&,int,Definition* ,MemberDef*,constQCString&) | 6 | CppDependencyGlobalMembers.writeXMLDocBlock(QTextStream& ,constQCString&,int,Definition*,MemberDef*,constQCString&) |
addIndexItem(constchar*,constchar*,constchar*,constchar*,constchar* ,constMemberDef*) | 6 | IndexIntf.addIndexItem(constchar*,constchar*,constchar*,constchar* ,constchar*,constMemberDef*) |
foreach<A1,A2,A3,A4,A5>(void(IndexIntf::*)(A1,A2,A3,A4,A5),A1,A2,A3,A4 ,A5) | 6 | IndexList.foreach<A1,A2,A3,A4,A5>(void(IndexIntf::*)(A1,A2,A3,A4,A5) ,A1,A2,A3,A4,A5) |
addIndexItem(constchar*,constchar*,constchar*,constchar*,constchar* ,constMemberDef*) | 6 | IndexList.addIndexItem(constchar*,constchar*,constchar*,constchar* ,constchar*,constMemberDef*) |
Definition(constchar*,int,constchar*,constchar*,constchar*,bool) | 6 | Definition.Definition(constchar*,int,constchar*,constchar*,constchar* ,bool) |
writeDocumentation(MemberList*,OutputList&,constchar*,Definition*,bool ,bool) | 6 | MemberDef.writeDocumentation(MemberList*,OutputList&,constchar* ,Definition*,bool,bool) |
writeLink(OutputList&,ClassDef*,NamespaceDef*,FileDef*,GroupDef*,bool) | 6 | MemberDef.writeLink(OutputList&,ClassDef*,NamespaceDef*,FileDef* ,GroupDef*,bool) |
parseDoc(constchar*,int,constchar*,MemberDef*,constQCString&,bool) | 6 | BaseOutputDocInterface.parseDoc(constchar*,int,constchar*,MemberDef* ,constQCString&,bool) |
forall(void(OutputGenerator::*)(constchar*,constchar*,constchar* ,constchar*,constchar*),constchar*,constchar*,constchar*,constchar* ,constchar*) | 6 | OutputList.forall(void(OutputGenerator::*)(constchar*,constchar* ,constchar*,constchar*,constchar*),constchar*,constchar*,constchar* ,constchar*,constchar*) |
Statistics
Stat | # Parameters |
---|---|
Sum: | 363 |
Average: | 7.7234 |
Minimum: | 6 |
Maximum: | 13 |
Standard deviation: | 2.0803 |
Variance: | 4.3277 |
Rule warning: Methods with too many local variables |
// <Name>Methods with too many local variables</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.NbVariables > 15
orderby m.NbVariables descending
select new { m, m.NbVariables }
// Methods where NbVariables > 8 are hard to understand and maintain.
// Methods where NbVariables > 15 are extremely complex
// and should be split in smaller methods.
// See the definition of the Nbvariables metric here
// http://www.cppdepend.com/Metrics.aspx#Nbvariables
warnif count > 0 from m in JustMyCode.Methods where
m.NbVariables > 15
orderby m.NbVariables descending
select new { m, m.NbVariables }
// Methods where NbVariables > 8 are hard to understand and maintain.
// Methods where NbVariables > 15 are extremely complex
// and should be split in smaller methods.
// See the definition of the Nbvariables metric here
// http://www.cppdepend.com/Metrics.aspx#Nbvariables
66 methods matched
methods | # Variables | Full Name |
---|---|---|
methods | # Variables | Full Name |
codeYYlex() | 101 | CppDependencyGlobalMembers.codeYYlex() |
findMember(EntryNav*,QCString,bool,bool) | 85 | CppDependencyGlobalMembers.findMember(EntryNav*,QCString,bool,bool) |
scanYYlex() | 50 | CppDependencyGlobalMembers.scanYYlex() |
check() | 46 | Config.check() |
getDefs(constQCString&,constQCString&,constchar*,MemberDef*& ,ClassDef*&,FileDef*&,NamespaceDef*&,GroupDef*&,bool,FileDef*,bool ,bool) | 41 | CppDependencyGlobalMembers.getDefs(constQCString&,constQCString& ,constchar*,MemberDef*&,ClassDef*&,FileDef*&,NamespaceDef*&,GroupDef*& ,bool,FileDef*,bool,bool) |
preYYlex() | 40 | CppDependencyGlobalMembers.preYYlex() |
parseAttType() | 39 | QXmlSimpleReader.parseAttType() |
mergeMembers() | 39 | ClassDef.mergeMembers() |
parseInput() | 37 | CppDependencyGlobalMembers.parseInput() |
parseElementDecl() | 36 | QXmlSimpleReader.parseElementDecl() |
generateXMLForMember(MemberDef*,QTextStream&,QTextStream&,Definition* ,bool) | 36 | CppDependencyGlobalMembers.generateXMLForMember(MemberDef* ,QTextStream&,QTextStream&,Definition*,bool) |
readDirEntries(constQString&,int,int) | 34 | QDir.readDirEntries(constQString&,int,int) |
parseFiles(Entry*,EntryNav*) | 34 | CppDependencyGlobalMembers.parseFiles(Entry*,EntryNav*) |
parseContent() | 32 | QXmlSimpleReader.parseContent() |
findBases(QCString,Definition*,FileDef*,bool) | 32 | CppDependencyGlobalMembers.findBases(QCString,Definition*,FileDef* ,bool) |
buildFunctionList(EntryNav*) | 32 | CppDependencyGlobalMembers.buildFunctionList(EntryNav*) |
parseEntityDecl() | 30 | QXmlSimpleReader.parseEntityDecl() |
preprocessFile(constchar*,BufStr&,BufStr&) | 29 | CppDependencyGlobalMembers.preprocessFile(constchar*,BufStr&,BufStr&) |
writeAlphabeticalClassList(OutputList&) | 29 | CppDependencyGlobalMembers.writeAlphabeticalClassList(OutputList&) |
sprintf(constchar*) | 28 | QString.sprintf(constchar*) |
parseAttlistDecl() | 28 | QXmlSimpleReader.parseAttlistDecl() |
parseExternalID(bool) | 27 | QXmlSimpleReader.parseExternalID(bool) |
parsePI(bool) | 26 | QXmlSimpleReader.parsePI(bool) |
doctokenizerYYlex() | 26 | CppDependencyGlobalMembers.doctokenizerYYlex() |
parseElement() | 25 | QXmlSimpleReader.parseElement() |
parseDoctype() | 25 | QXmlSimpleReader.parseDoctype() |
findFile(constchar*,bool,bool&,bool) | 25 | CppDependencyGlobalMembers.findFile(constchar*,bool,bool&,bool) |
parseMarkupdecl() | 24 | QXmlSimpleReader.parseMarkupdecl() |
linkifyText(constTextGeneratorIntf&,Definition*,FileDef*,constchar* ,constchar*,QDict<int>&,bool,bool,bool) | 24 | CppDependencyGlobalMembers.linkifyText(constTextGeneratorIntf& ,Definition*,FileDef*,constchar*,constchar*,QDict<int>&,bool,bool,bool ) |
findUsedClassesForClass(EntryNav*,Definition*,ClassDef*,ClassDef*,bool ,ArgumentList*,QDict<int>*) | 24 | CppDependencyGlobalMembers.findUsedClassesForClass(EntryNav* ,Definition*,ClassDef*,ClassDef*,bool,ArgumentList*,QDict<int>*) |
addEnumValuesToEnums(EntryNav*) | 24 | CppDependencyGlobalMembers.addEnumValuesToEnums(EntryNav*) |
getResolvedClassRec(Definition*,FileDef*,constchar*,MemberDef** ,QCString*,QCString*,bool) | 24 | CppDependencyGlobalMembers.getResolvedClassRec(Definition*,FileDef* ,constchar*,MemberDef**,QCString*,QCString*,bool) |
addVariable(EntryNav*,int) | 23 | CppDependencyGlobalMembers.addVariable(EntryNav*,int) |
ts_getbuf(QChar*,uint) | 22 | QTextStream.ts_getbuf(QChar*,uint) |
parseProlog() | 22 | QXmlSimpleReader.parseProlog() |
parseReference(bool&,QXmlSimpleReader::EntityRecognitionContext) | 22 | QXmlSimpleReader.parseReference(bool& ,QXmlSimpleReader::EntityRecognitionContext) |
replaceFunctionMacro(constQCString&,QCString*,int,int&,constDefine* ,QCString&) | 22 | CppDependencyGlobalMembers.replaceFunctionMacro(constQCString& ,QCString*,int,int&,constDefine*,QCString&) |
readIncludeFile(QCString&) | 22 | CppDependencyGlobalMembers.readIncludeFile(QCString&) |
findClassRelation(EntryNav*,Definition*,ClassDef*,BaseInfo*,QDict<int >*,FindBaseClassRelation_Mode,bool) | 21 | CppDependencyGlobalMembers.findClassRelation(EntryNav*,Definition* ,ClassDef*,BaseInfo*,QDict<int>*,FindBaseClassRelation_Mode,bool) |
input_double() | 20 | QTextStream.input_double() |
parseChoiceSeq() | 20 | QXmlSimpleReader.parseChoiceSeq() |
parseEntityValue() | 20 | QXmlSimpleReader.parseEntityValue() |
resolveRef(constchar*,constchar*,bool,Definition**,MemberDef**,bool) | 20 | CppDependencyGlobalMembers.resolveRef(constchar*,constchar*,bool ,Definition**,MemberDef**,bool) |
defargsYYlex() | 20 | CppDependencyGlobalMembers.defargsYYlex() |
computeTemplateClassRelations() | 20 | CppDependencyGlobalMembers.computeTemplateClassRelations() |
QTextCodecFromIOD(QIODevice*) | 19 | QTextCodecFromIOD.QTextCodecFromIOD(QIODevice*) |
generateClassOrGlobalLink(CodeOutputInterface&,char*,QCString&,bool ,bool,bool) | 19 | CppDependencyGlobalMembers.generateClassOrGlobalLink (CodeOutputInterface&,char*,QCString&,bool,bool,bool) |
writeMemberList(OutputList&,bool,int,MemberIndexList* ,DefinitionIntf::DefType) | 19 | CppDependencyGlobalMembers.writeMemberList(OutputList&,bool,int ,MemberIndexList*,DefinitionIntf::DefType) |
generateXMLForFile(FileDef*,QTextStream&,bool) | 19 | CppDependencyGlobalMembers.generateXMLForFile(FileDef*,QTextStream& ,bool) |
addVariable(constQCString&,constQCString&,bool,bool) | 19 | VariableContext.addVariable(constQCString&,constQCString&,bool,bool) |
parseAttValue() | 18 | QXmlSimpleReader.parseAttValue() |
getLinkInScope(constQCString&,constQCString&,constchar* ,CodeOutputInterface&,constchar*,bool) | 18 | CppDependencyGlobalMembers.getLinkInScope(constQCString& ,constQCString&,constchar*,CodeOutputInterface&,constchar*,bool) |
readCodeFragment(constchar*,int&,int&,QCString&) | 18 | CppDependencyGlobalMembers.readCodeFragment(constchar*,int&,int& ,QCString&) |
CheckFileEntry(FileDef*,EntryNav*) | 18 | CppDependencyGlobalMembers.CheckFileEntry(FileDef*,EntryNav*) |
transferFunctionReferences() | 18 | CppDependencyGlobalMembers.transferFunctionReferences() |
writeDefArgumentList(OutputList&,ClassDef*,constQCString&,MemberDef*) | 18 | CppDependencyGlobalMembers.writeDefArgumentList(OutputList&,ClassDef* ,constQCString&,MemberDef*) |
visual(int,int) | 17 | QString.visual(int,int) |
resolveTypeDef(Definition*,constQCString&,Definition**) | 17 | CppDependencyGlobalMembers.resolveTypeDef(Definition*,constQCString& ,Definition**) |
isAccessibleFromWithExpScope(Definition*,FileDef*,Definition* ,constQCString&) | 17 | CppDependencyGlobalMembers.isAccessibleFromWithExpScope(Definition* ,FileDef*,Definition*,constQCString&) |
generateMemberLink(CodeOutputInterface&,constQCString&,char*) | 17 | CppDependencyGlobalMembers.generateMemberLink(CodeOutputInterface& ,constQCString&,char*) |
addIncludedUsingDirectives() | 17 | FileDef.addIncludedUsingDirectives() |
compile() | 16 | QRegExp.compile() |
parseNotationDecl() | 16 | QXmlSimpleReader.parseNotationDecl() |
findFileDef(constFileNameDict*,constchar*,bool&) | 16 | CppDependencyGlobalMembers.findFileDef(constFileNameDict*,constchar* ,bool&) |
generateXML() | 16 | CppDependencyGlobalMembers.generateXML() |
splitKnRArg(QCString&,QCString&) | 16 | CppDependencyGlobalMembers.splitKnRArg(QCString&,QCString&) |
Statistics
Stat | # Variables |
---|---|
Sum: | 1 774 |
Average: | 26.879 |
Minimum: | 16 |
Maximum: | 101 |
Standard deviation: | 14.183 |
Variance: | 201.17 |
Rule warning: Methods with too many overloads |
// <Name>Methods with too many overloads</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.NbOverloads > 6 &&
!m.IsOperator // Don't report operator overload
orderby m.NbOverloads descending
select new { m, m.NbOverloads }
// Methods where NbOverloads > 6 might
// be a problem to maintain and provoke higher coupling
// than necessary.
// This might also reveal a potential misused of the
// C# and VB.NET language that since C#3 and VB9 support
// object initialization. This feature helps reducing the number
// of constructors of a class.
// See the definition of the NbOverloads metric here
// http://www.cppdepend.com/Metrics.aspx#NbOverloads
warnif count > 0 from m in JustMyCode.Methods where
m.NbOverloads > 6 &&
!m.IsOperator // Don't report operator overload
orderby m.NbOverloads descending
select new { m, m.NbOverloads }
// Methods where NbOverloads > 6 might
// be a problem to maintain and provoke higher coupling
// than necessary.
// This might also reveal a potential misused of the
// C# and VB.NET language that since C#3 and VB9 support
// object initialization. This feature helps reducing the number
// of constructors of a class.
// See the definition of the NbOverloads metric here
// http://www.cppdepend.com/Metrics.aspx#NbOverloads
76 methods matched
methods | # Overloads | Full Name |
---|---|---|
methods | # Overloads | Full Name |
forall(void(OutputGenerator::*)()) | 25 | OutputList.forall(void(OutputGenerator::*)()) |
forall(void(OutputGenerator::*)(constchar*),constchar*) | 25 | OutputList.forall(void(OutputGenerator::*)(constchar*),constchar*) |
forall(void(OutputGenerator::*)(char),char) | 25 | OutputList.forall(void(OutputGenerator::*)(char),char) |
forall(void(OutputGenerator::*)(int),int) | 25 | OutputList.forall(void(OutputGenerator::*)(int),int) |
forall(void(OutputGenerator::*)(BaseOutputDocInterface::SectionTypes) ,BaseOutputDocInterface::SectionTypes) | 25 | OutputList.forall(void(OutputGenerator::*) (BaseOutputDocInterface::SectionTypes) ,BaseOutputDocInterface::SectionTypes) |
forall(void(OutputGenerator::*)(bool),bool) | 25 | OutputList.forall(void(OutputGenerator::*)(bool),bool) |
forall(void(OutputGenerator::*)(bool,int),bool,int) | 25 | OutputList.forall(void(OutputGenerator::*)(bool,int),bool,int) |
forall(void(OutputGenerator::*)(bool,bool),bool,bool) | 25 | OutputList.forall(void(OutputGenerator::*)(bool,bool),bool,bool) |
forall(void(OutputGenerator::*)(constchar*,constchar*,constchar*,int) ,constchar*,constchar*,constchar*,int) | 25 | OutputList.forall(void(OutputGenerator::*)(constchar*,constchar* ,constchar*,int),constchar*,constchar*,constchar*,int) |
forall(void(OutputGenerator::*)(int,bool),int,bool) | 25 | OutputList.forall(void(OutputGenerator::*)(int,bool),int,bool) |
forall(void(OutputGenerator::*)(bool,constchar*),bool,constchar*) | 25 | OutputList.forall(void(OutputGenerator::*)(bool,constchar*),bool ,constchar*) |
forall(void(OutputGenerator::*)(BaseOutputDocInterface::ParamListTypes ,constchar*),BaseOutputDocInterface::ParamListTypes,constchar*) | 25 | OutputList.forall(void(OutputGenerator::*) (BaseOutputDocInterface::ParamListTypes,constchar*) ,BaseOutputDocInterface::ParamListTypes,constchar*) |
forall(void(OutputGenerator::*)(constchar*,constchar*),constchar* ,constchar*) | 25 | OutputList.forall(void(OutputGenerator::*)(constchar*,constchar*) ,constchar*,constchar*) |
forall(void(OutputGenerator::*)(constchar*,bool),constchar*,bool) | 25 | OutputList.forall(void(OutputGenerator::*)(constchar*,bool),constchar* ,bool) |
forall(void(OutputGenerator::*)(constchar*,SectionInfo::SectionType) ,constchar*,SectionInfo::SectionType) | 25 | OutputList.forall(void(OutputGenerator::*)(constchar* ,SectionInfo::SectionType),constchar*,SectionInfo::SectionType) |
forall(void(OutputGenerator::*)(bool,bool,bool),bool,bool,bool) | 25 | OutputList.forall(void(OutputGenerator::*)(bool,bool,bool),bool,bool ,bool) |
forall(void(OutputGenerator::*)(constchar*,constchar*,bool),constchar* ,constchar*,bool) | 25 | OutputList.forall(void(OutputGenerator::*)(constchar*,constchar*,bool) ,constchar*,constchar*,bool) |
forall(void(OutputGenerator::*)(constchar*,constchar* ,SectionInfo::SectionType),constchar*,constchar* ,SectionInfo::SectionType) | 25 | OutputList.forall(void(OutputGenerator::*)(constchar*,constchar* ,SectionInfo::SectionType),constchar*,constchar* ,SectionInfo::SectionType) |
forall(void(OutputGenerator::*)(uchar,uchar,uchar),uchar,uchar,uchar) | 25 | OutputList.forall(void(OutputGenerator::*)(uchar,uchar,uchar),uchar ,uchar,uchar) |
forall(void(OutputGenerator::*)(constchar*,constchar*,constchar*) ,constchar*,constchar*,constchar*) | 25 | OutputList.forall(void(OutputGenerator::*)(constchar*,constchar* ,constchar*),constchar*,constchar*,constchar*) |
forall(void(OutputGenerator::*)(constClassDiagram&,constchar* ,constchar*),constClassDiagram&,constchar*,constchar*) | 25 | OutputList.forall(void(OutputGenerator::*)(constClassDiagram& ,constchar*,constchar*),constClassDiagram&,constchar*,constchar*) |
forall(void(OutputGenerator::*)(BaseOutputDocInterface::SectionTypes ,constchar*,constchar*,constchar*) ,BaseOutputDocInterface::SectionTypes,constchar*,constchar*,constchar* ) | 25 | OutputList.forall(void(OutputGenerator::*) (BaseOutputDocInterface::SectionTypes,constchar*,constchar*,constchar* ),BaseOutputDocInterface::SectionTypes,constchar*,constchar* ,constchar*) |
forall(void(OutputGenerator::*)(constchar*,constchar*,constchar* ,constchar*),constchar*,constchar*,constchar*,constchar*) | 25 | OutputList.forall(void(OutputGenerator::*)(constchar*,constchar* ,constchar*,constchar*),constchar*,constchar*,constchar*,constchar*) |
forall(void(OutputGenerator::*)(constchar*,constchar*,constchar*,bool) ,constchar*,constchar*,constchar*,bool) | 25 | OutputList.forall(void(OutputGenerator::*)(constchar*,constchar* ,constchar*,bool),constchar*,constchar*,constchar*,bool) |
forall(void(OutputGenerator::*)(constchar*,constchar*,constchar* ,constchar*,constchar*),constchar*,constchar*,constchar*,constchar* ,constchar*) | 25 | OutputList.forall(void(OutputGenerator::*)(constchar*,constchar* ,constchar*,constchar*,constchar*),constchar*,constchar*,constchar* ,constchar*,constchar*) |
arg(long,int,int) | 10 | QString.arg(long,int,int) |
arg(ulong,int,int) | 10 | QString.arg(ulong,int,int) |
arg(int,int,int) | 10 | QString.arg(int,int,int) |
arg(uint,int,int) | 10 | QString.arg(uint,int,int) |
arg(short,int,int) | 10 | QString.arg(short,int,int) |
arg(ushort,int,int) | 10 | QString.arg(ushort,int,int) |
arg(char,int) | 10 | QString.arg(char,int) |
arg(QChar,int) | 10 | QString.arg(QChar,int) |
arg(constQString&,int) | 10 | QString.arg(constQString&,int) |
arg(double,int,char,int) | 10 | QString.arg(double,int,char,int) |
QChar() | 9 | QChar.QChar() |
QChar(char) | 9 | QChar.QChar(char) |
QChar(uchar) | 9 | QChar.QChar(uchar) |
QChar(uchar,uchar) | 9 | QChar.QChar(uchar,uchar) |
QChar(constQChar&) | 9 | QChar.QChar(constQChar&) |
QChar(ushort) | 9 | QChar.QChar(ushort) |
QChar(short) | 9 | QChar.QChar(short) |
QChar(uint) | 9 | QChar.QChar(uint) |
QChar(int) | 9 | QChar.QChar(int) |
QString() | 9 | QString.QString() |
QString(QChar) | 9 | QString.QString(QChar) |
QString(constQString&) | 9 | QString.QString(constQString&) |
QString(constQByteArray&) | 9 | QString.QString(constQByteArray&) |
QString(constQCString&) | 9 | QString.QString(constQCString&) |
QString(constQChar*,uint) | 9 | QString.QString(constQChar*,uint) |
QString(constchar*) | 9 | QString.QString(constchar*) |
QString(int,bool) | 9 | QString.QString(int,bool) |
QString(QStringData*,bool) | 9 | QString.QString(QStringData*,bool) |
setNum(short) | 8 | QCString.setNum(short) |
setNum(ushort) | 8 | QCString.setNum(ushort) |
setNum(int) | 8 | QCString.setNum(int) |
setNum(uint) | 8 | QCString.setNum(uint) |
setNum(long) | 8 | QCString.setNum(long) |
setNum(ulong) | 8 | QCString.setNum(ulong) |
setNum(float,char,int) | 8 | QCString.setNum(float,char,int) |
setNum(double,char,int) | 8 | QCString.setNum(double,char,int) |
setNum(short,int) | 8 | QString.setNum(short,int) |
setNum(ushort,int) | 8 | QString.setNum(ushort,int) |
setNum(int,int) | 8 | QString.setNum(int,int) |
setNum(uint,int) | 8 | QString.setNum(uint,int) |
setNum(long,int) | 8 | QString.setNum(long,int) |
setNum(ulong,int) | 8 | QString.setNum(ulong,int) |
setNum(float,char,int) | 8 | QString.setNum(float,char,int) |
setNum(double,char,int) | 8 | QString.setNum(double,char,int) |
QTextStream() | 7 | QTextStream.QTextStream() |
QTextStream(QIODevice*) | 7 | QTextStream.QTextStream(QIODevice*) |
QTextStream(QString*,int) | 7 | QTextStream.QTextStream(QString*,int) |
QTextStream(QString&,int) | 7 | QTextStream.QTextStream(QString&,int) |
QTextStream(QByteArray,int) | 7 | QTextStream.QTextStream(QByteArray,int) |
QTextStream(FILE*,int) | 7 | QTextStream.QTextStream(FILE*,int) |
QTextStream(constQTextStream&) | 7 | QTextStream.QTextStream(constQTextStream&) |
Statistics
Stat | # Overloads |
---|---|
Sum: | 1 064 |
Average: | 14 |
Minimum: | 7 |
Maximum: | 25 |
Standard deviation: | 7.7409 |
Variance: | 59.921 |
Rule warning: Types with too many methods |
// <Name>Types with too many methods</Name>
warnif count > 0 from t in JustMyCode.Types where
t.Methods.Count() > 20 && !t.IsGlobal
orderby t.Methods.Count() descending
select new { t, t.InstanceMethods, t.StaticMethods }
// Types where Methods.Count() > 20 might be hard to
// understand and maintain
// but there might be cases where it is relevant
// to have a high number of methods.
// For example, the System.Windows.Forms.DataGridView
// standard class has more than 1000 methods.
warnif count > 0 from t in JustMyCode.Types where
t.Methods.Count() > 20 && !t.IsGlobal
orderby t.Methods.Count() descending
select new { t, t.InstanceMethods, t.StaticMethods }
// Types where Methods.Count() > 20 might be hard to
// understand and maintain
// but there might be cases where it is relevant
// to have a high number of methods.
// For example, the System.Windows.Forms.DataGridView
// standard class has more than 1000 methods.
74 types matched
types | InstanceMethods | StaticMethods | Full Name |
---|---|---|---|
types | InstanceMethods | StaticMethods | Full Name |
Translator | 224 methods | 0 method | Translator |
TranslatorDecoder | 222 methods | 0 method | TranslatorDecoder |
TranslatorCroatian | 219 methods | 0 method | TranslatorCroatian |
TranslatorSerbian | 219 methods | 0 method | TranslatorSerbian |
TranslatorEnglish | 218 methods | 0 method | TranslatorEnglish |
TranslatorDutch | 218 methods | 0 method | TranslatorDutch |
TranslatorCzech | 218 methods | 0 method | TranslatorCzech |
TranslatorItalian | 218 methods | 0 method | TranslatorItalian |
TranslatorGerman | 218 methods | 0 method | TranslatorGerman |
TranslatorSpanish | 218 methods | 0 method | TranslatorSpanish |
TranslatorFinnish | 218 methods | 0 method | TranslatorFinnish |
TranslatorRussian | 218 methods | 0 method | TranslatorRussian |
TranslatorKorean | 218 methods | 0 method | TranslatorKorean |
TranslatorChinese | 218 methods | 0 method | TranslatorChinese |
TranslatorChinesetraditional | 218 methods | 0 method | TranslatorChinesetraditional |
TranslatorBrazilian | 218 methods | 0 method | TranslatorBrazilian |
TranslatorCatalan | 218 methods | 0 method | TranslatorCatalan |
TranslatorPersian | 218 methods | 0 method | TranslatorPersian |
TranslatorMacedonian | 216 methods | 0 method | TranslatorMacedonian |
TranslatorJapanese | 206 methods | 0 method | TranslatorJapanese |
TranslatorPolish | 205 methods | 0 method | TranslatorPolish |
TranslatorGreek | 205 methods | 0 method | TranslatorGreek |
TranslatorIndonesian | 204 methods | 0 method | TranslatorIndonesian |
TranslatorNorwegian | 204 methods | 0 method | TranslatorNorwegian |
TranslatorUkrainian | 204 methods | 0 method | TranslatorUkrainian |
TranslatorArabic | 204 methods | 0 method | TranslatorArabic |
TranslatorRomanian | 203 methods | 0 method | TranslatorRomanian |
TranslatorDanish | 197 methods | 0 method | TranslatorDanish |
TranslatorFrench | 196 methods | 0 method | TranslatorFrench |
TranslatorHungarian | 195 methods | 0 method | TranslatorHungarian |
TranslatorSwedish | 194 methods | 0 method | TranslatorSwedish |
TranslatorSlovene | 194 methods | 0 method | TranslatorSlovene |
TranslatorLithuanian | 194 methods | 0 method | TranslatorLithuanian |
TranslatorAfrikaans | 194 methods | 0 method | TranslatorAfrikaans |
TranslatorPortuguese | 192 methods | 0 method | TranslatorPortuguese |
OutputList | 191 methods | 0 method | OutputList |
TranslatorSlovak | 184 methods | 0 method | TranslatorSlovak |
MemberDef | 157 methods | 0 method | MemberDef |
QString | 109 methods | 14 methods | QString |
ClassDef | 120 methods | 0 method | ClassDef |
OutputGenerator | 110 methods | 0 method | OutputGenerator |
QXmlSimpleReader | 74 methods | 0 method | QXmlSimpleReader |
FileDef | 73 methods | 0 method | FileDef |
QTextStream | 72 methods | 0 method | QTextStream |
Definition | 70 methods | 2 methods | Definition |
QCString | 61 methods | 1 method | QCString |
BaseOutputDocInterface | 60 methods | 0 method | BaseOutputDocInterface |
SCString | 58 methods | 1 method | SCString |
QDir | 42 methods | 15 methods | QDir |
NamespaceDef | 46 methods | 0 method | NamespaceDef |
QGList | 45 methods | 0 method | QGList |
QIODevice | 41 methods | 0 method | QIODevice |
QDataStream | 39 methods | 0 method | QDataStream |
QList<type> | 39 methods | 0 method | QList<type> |
QValueList<T> | 37 methods | 0 method | QValueList<T> |
QFileInfo | 34 methods | 2 methods | QFileInfo |
QFile | 28 methods | 6 methods | QFile |
DirDef | 31 methods | 3 methods | DirDef |
QCharRef | 33 methods | 0 method | QCharRef |
QArray<type> | 32 methods | 0 method | QArray<type> |
QGDict | 31 methods | 0 method | QGDict |
MemberList | 31 methods | 0 method | MemberList |
QChar | 28 methods | 1 method | QChar |
QDate | 23 methods | 5 methods | QDate |
QXmlDefaultHandler | 28 methods | 0 method | QXmlDefaultHandler |
QGArray | 26 methods | 1 method | QGArray |
QTime | 23 methods | 3 methods | QTime |
QGVector | 25 methods | 1 method | QGVector |
QTextCodec | 16 methods | 10 methods | QTextCodec |
Config | 23 methods | 2 methods | Config |
TranslatorAdapter_1_5_4 | 25 methods | 0 method | TranslatorAdapter_1_5_4 |
QVector<type> | 23 methods | 0 method | QVector<type> |
QDateTime | 20 methods | 1 method | QDateTime |
QXmlReader | 21 methods | 0 method | QXmlReader |
Statistics
Stat | InstanceMethods | StaticMethods |
---|---|---|
Sum: | 0 | 0 |
Average: | 0 | 0 |
Minimum: | 0 | 0 |
Maximum: | 0 | 0 |
Standard deviation: | 0 | 0 |
Variance: | 0 | 0 |
Rule warning: Types with too many fields |
// <Name>Types with too many fields</Name>
warnif count > 0 from t in JustMyCode.Types where
t.Fields.Count() > 20 &&
!t.IsEnumeration && !t.IsGlobal
orderby t.Fields.Count() descending
select new { t, t.InstanceFields, t.StaticFields}
// Types where Fields.Count() > 20 and not IsEnumeration
// might be hard to understand and maintain
// but there might be cases where it is relevant
// to have a high number of fields.
// For example, the System.Windows.Forms.Control
// standard class has more than 200 fields.
warnif count > 0 from t in JustMyCode.Types where
t.Fields.Count() > 20 &&
!t.IsEnumeration && !t.IsGlobal
orderby t.Fields.Count() descending
select new { t, t.InstanceFields, t.StaticFields}
// Types where Fields.Count() > 20 and not IsEnumeration
// might be hard to understand and maintain
// but there might be cases where it is relevant
// to have a high number of fields.
// For example, the System.Windows.Forms.Control
// standard class has more than 200 fields.
6 types matched
types | InstanceFields | StaticFields | Full Name |
---|---|---|---|
types | InstanceFields | StaticFields | Full Name |
Doxygen | 0 field | 62 fields | Doxygen |
MemberDefImpl | 41 fields | 0 field | MemberDefImpl |
ClassDefImpl | 37 fields | 0 field | ClassDefImpl |
Entry | 27 fields | 1 field | Entry |
FileDef | 26 fields | 0 field | FileDef |
QXmlSimpleReader | 24 fields | 1 field | QXmlSimpleReader |
Statistics
Stat | InstanceFields | StaticFields |
---|---|---|
Sum: | 0 | 0 |
Average: | 0 | 0 |
Minimum: | 0 | 0 |
Maximum: | 0 | 0 |
Standard deviation: | 0 | 0 |
Variance: | 0 | 0 |
Rule warning: Types with poor cohesion |
// <Name>Types with poor cohesion</Name>
warnif count > 0 from t in JustMyCode.Types where
(t.LCOM > 0.8 || t.LCOMHS > 0.95) &&
t.NbFields > 10 &&
t.NbMethods >10 && !t.IsGlobal
orderby t.LCOM descending, t.LCOMHS descending
select new { t, t.LCOM, t.LCOMHS,
t.NbMethods, t.NbFields }
// Types where LCOM > 0.8 and NbFields > 10
// and NbMethods >10 might be problematic.
// However, it is very hard to avoid such
// non-cohesive types. The LCOMHS metric
// is often considered as more efficient to
// detect non-cohesive types.
// See the definition of the LCOM metric here
// http://www.cppdepend.com/Metrics.aspx#LCOM
warnif count > 0 from t in JustMyCode.Types where
(t.LCOM > 0.8 || t.LCOMHS > 0.95) &&
t.NbFields > 10 &&
t.NbMethods >10 && !t.IsGlobal
orderby t.LCOM descending, t.LCOMHS descending
select new { t, t.LCOM, t.LCOMHS,
t.NbMethods, t.NbFields }
// Types where LCOM > 0.8 and NbFields > 10
// and NbMethods >10 might be problematic.
// However, it is very hard to avoid such
// non-cohesive types. The LCOMHS metric
// is often considered as more efficient to
// detect non-cohesive types.
// See the definition of the LCOM metric here
// http://www.cppdepend.com/Metrics.aspx#LCOM
6 types matched
types | Lack of Cohesion Of Methods (LCOM) | LCOM Henderson-Sellers (LCOMHS) | # Methods | # Fields | Full Name |
---|---|---|---|---|---|
types | Lack of Cohesion Of Methods (LCOM) | LCOM Henderson-Sellers (LCOMHS) | # Methods | # Fields | Full Name |
FileDef | 0.9589 | 0.97222 | 75 | 26 | FileDef |
NamespaceDef | 0.93478 | 0.95556 | 48 | 11 | NamespaceDef |
QXmlSimpleReader | 0.91216 | 0.92466 | 76 | 25 | QXmlSimpleReader |
QTextStream | 0.90416 | 0.91575 | 79 | 17 | QTextStream |
MemberList | 0.84821 | 0.87558 | 34 | 14 | MemberList |
Entry | 0.83704 | 0.89683 | 15 | 28 | Entry |
Statistics
Stat | Lack of Cohesion Of Methods (LCOM) | LCOM Henderson-Sellers (LCOMHS) | # Methods | # Fields |
---|---|---|---|---|
Sum: | 5.3953 | 5.5406 | 327 | 121 |
Average: | 0.89921 | 0.92343 | 54.5 | 20.167 |
Minimum: | 0.83704 | 0.87558 | 15 | 11 |
Maximum: | 0.9589 | 0.97222 | 79 | 28 |
Standard deviation: | 0.043756 | 0.03284 | 24.171 | 6.4657 |
Variance: | 0.0019146 | 0.0010785 | 584.25 | 41.806 |
Object Oriented Design |
|
|
Rule warning: Base class should not use derivatives |
// <Name>Base class should not use derivatives</Name>
warnif count > 0
from baseClass in JustMyCode.Types
where baseClass.IsClass && baseClass.NbChildren > 0 // <-- for optimization!
let derivedClassesUsed = baseClass.DerivedTypes.UsedBy(baseClass)
where derivedClassesUsed.Count() > 0
select new { baseClass, derivedClassesUsed }
warnif count > 0
from baseClass in JustMyCode.Types
where baseClass.IsClass && baseClass.NbChildren > 0 // <-- for optimization!
let derivedClassesUsed = baseClass.DerivedTypes.UsedBy(baseClass)
where derivedClassesUsed.Count() > 0
select new { baseClass, derivedClassesUsed }
2 types matched
types | derivedClassesUsed | Full Name |
---|---|---|
types | derivedClassesUsed | Full Name |
QTextCodec | 2 types | QTextCodec |
Definition | 2 types | Definition |
Statistics
Stat | derivedClassesUsed |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
Rule warning: Class shouldn't be too deep in inheritance tree |
// <Name>Class shouldn't be too deep in inheritance tree</Name>
warnif count > 0 from t in JustMyCode.Types
where t.IsClass
let baseClasses = t.BaseClasses.ExceptThirdParty()
// Warn for classes with 3 or more base classes.
// Notice that we don't count third-party classes
// because this rule concerns your code design,
// not third-party libraries consumed design.
where baseClasses.Count() >= 3
select new { t, baseClasses,
// The metric value DepthOfInheritance takes account
// of third-party base classes
t.DepthOfInheritance }
// Branches too long in the derivation should be avoided.
// See the definition of the DepthOfInheritance metric here
// http://www.cppdepend.com/Metrics.aspx#DIT
warnif count > 0 from t in JustMyCode.Types
where t.IsClass
let baseClasses = t.BaseClasses.ExceptThirdParty()
// Warn for classes with 3 or more base classes.
// Notice that we don't count third-party classes
// because this rule concerns your code design,
// not third-party libraries consumed design.
where baseClasses.Count() >= 3
select new { t, baseClasses,
// The metric value DepthOfInheritance takes account
// of third-party base classes
t.DepthOfInheritance }
// Branches too long in the derivation should be avoided.
// See the definition of the DepthOfInheritance metric here
// http://www.cppdepend.com/Metrics.aspx#DIT
70 types matched
types | baseClasses | Depth of inheritance | Full Name |
---|---|---|---|
types | baseClasses | Depth of inheritance | Full Name |
QStrList | 3 types | 3 | QStrList |
QStrIList | 4 types | 4 | QStrIList |
QCList | 3 types | 3 | QCList |
QGDItList | 3 types | 3 | QGDItList |
QXmlDefaultHandler | 6 types | 1 | QXmlDefaultHandler |
QSortedList<type> | 3 types | 3 | QSortedList<type> |
QStrVec | 3 types | 3 | QStrVec |
QStrIVec | 4 types | 4 | QStrIVec |
MemberList | 3 types | 3 | MemberList |
MemberDict | 3 types | 3 | MemberDict |
ClassDef | 3 types | 2 | ClassDef |
UsesClassDict | 3 types | 3 | UsesClassDict |
BaseClassList | 3 types | 3 | BaseClassList |
ClassList | 3 types | 3 | ClassList |
ClassDict | 3 types | 3 | ClassDict |
FileDef | 3 types | 2 | FileDef |
FileList | 3 types | 3 | FileList |
OutputNameList | 3 types | 3 | OutputNameList |
OutputNameDict | 3 types | 3 | OutputNameDict |
MemberName | 3 types | 3 | MemberName |
MemberNameInfo | 3 types | 3 | MemberNameInfo |
FileName | 4 types | 4 | FileName |
FileNameList | 3 types | 3 | FileNameList |
FileNameDict | 3 types | 3 | FileNameDict |
NamespaceDef | 3 types | 2 | NamespaceDef |
NamespaceList | 3 types | 3 | NamespaceList |
NamespaceDict | 3 types | 3 | NamespaceDict |
DirList | 3 types | 3 | DirList |
DirDef | 3 types | 2 | DirDef |
StringDict | 3 types | 3 | StringDict |
ArgumentList | 3 types | 3 | ArgumentList |
DefinitionList | 4 types | 3 | DefinitionList |
SList<T> | 3 types | 3 | SList<T> |
SIntList<T> | 3 types | 3 | SIntList<T> |
MemberDef | 3 types | 2 | MemberDef |
SectionDict | 3 types | 3 | SectionDict |
OutputList | 3 types | 3 | OutputList |
DefineList | 3 types | 3 | DefineList |
DefineName | 3 types | 3 | DefineName |
DefineNameList | 3 types | 3 | DefineNameList |
FileStorage | 3 types | 2 | FileStorage |
MemberIndexList | 3 types | 3 | MemberIndexList |
PrefixIgnoreClassList | 4 types | 4 | PrefixIgnoreClassList |
TranslatorAdapter_1_4_6 | 3 types | 3 | TranslatorAdapter_1_4_6 |
TranslatorAdapter_1_4_1 | 4 types | 4 | TranslatorAdapter_1_4_1 |
TranslatorAdapter_1_3_9 | 5 types | 5 | TranslatorAdapter_1_3_9 |
TranslatorAdapter_1_3_8 | 6 types | 6 | TranslatorAdapter_1_3_8 |
TranslatorAdapter_1_3_3 | 7 types | 7 | TranslatorAdapter_1_3_3 |
TranslatorAdapter_1_3_1 | 8 types | 8 | TranslatorAdapter_1_3_1 |
TranslatorAdapter_1_3 | 9 types | 9 | TranslatorAdapter_1_3 |
TranslatorAdapter_1_2_18 | 10 types | 10 | TranslatorAdapter_1_2_18 |
TranslatorSwedish | 4 types | 4 | TranslatorSwedish |
TranslatorFrench | 3 types | 3 | TranslatorFrench |
TranslatorIndonesian | 4 types | 4 | TranslatorIndonesian |
TranslatorJapanese | 3 types | 3 | TranslatorJapanese |
TranslatorSpanish | 3 types | 3 | TranslatorSpanish |
TranslatorPolish | 4 types | 4 | TranslatorPolish |
TranslatorPortuguese | 8 types | 8 | TranslatorPortuguese |
TranslatorHungarian | 4 types | 4 | TranslatorHungarian |
TranslatorRomanian | 5 types | 5 | TranslatorRomanian |
TranslatorSlovene | 4 types | 4 | TranslatorSlovene |
TranslatorNorwegian | 4 types | 4 | TranslatorNorwegian |
TranslatorDanish | 3 types | 3 | TranslatorDanish |
TranslatorSlovak | 11 types | 11 | TranslatorSlovak |
TranslatorUkrainian | 5 types | 5 | TranslatorUkrainian |
TranslatorGreek | 3 types | 3 | TranslatorGreek |
TranslatorLithuanian | 4 types | 4 | TranslatorLithuanian |
TranslatorAfrikaans | 4 types | 4 | TranslatorAfrikaans |
TranslatorArabic | 4 types | 4 | TranslatorArabic |
XmlSectionMapper | 3 types | 3 | XmlSectionMapper |
Statistics
Stat | baseClasses | Depth of inheritance |
---|---|---|
Sum: | 0 | 260 |
Average: | 0 | 3.7143 |
Minimum: | 0 | 1 |
Maximum: | 0 | 11 |
Standard deviation: | 0 | 1.79 |
Variance: | 0 | 3.2041 |
Rule warning: Constructor should not call a virtual methods |
// <Name>Constructor should not call a virtual methods</Name>
// Returns constructor of a non-sealed type calling virtual methods.
// In such a situation, if a derived class overrides the method,
// then the override method will be called before the derived constructor.
// This makes the class fragile to derive from.
//
// Violations reported can be solved by re-designing object initialisation
// or by marking the parent class as sealed, if possible.
warnif count > 0
from t in Application.Types where
t.IsClass &&
!t.IsGeneratedByCompiler
from ctor in t.Constructors
let virtualMethodsCalled = from mCalled in ctor.MethodsCalled
where mCalled.IsVirtual &&
(mCalled.ParentType == t ||
t.DeriveFrom(mCalled.ParentType))
select mCalled
where virtualMethodsCalled.Count() > 0
select new { ctor ,
virtualMethodsCalled,
// If there is no derived type, it might be
// an opportunity to mark t as sealed.
t.DerivedTypes }
// Returns constructor of a non-sealed type calling virtual methods.
// In such a situation, if a derived class overrides the method,
// then the override method will be called before the derived constructor.
// This makes the class fragile to derive from.
//
// Violations reported can be solved by re-designing object initialisation
// or by marking the parent class as sealed, if possible.
warnif count > 0
from t in Application.Types where
t.IsClass &&
!t.IsGeneratedByCompiler
from ctor in t.Constructors
let virtualMethodsCalled = from mCalled in ctor.MethodsCalled
where mCalled.IsVirtual &&
(mCalled.ParentType == t ||
t.DeriveFrom(mCalled.ParentType))
select mCalled
where virtualMethodsCalled.Count() > 0
select new { ctor ,
virtualMethodsCalled,
// If there is no derived type, it might be
// an opportunity to mark t as sealed.
t.DerivedTypes }
8 methods matched
methods | virtualMethodsCalled | DerivedTypes | Full Name |
---|---|---|---|
methods | virtualMethodsCalled | DerivedTypes | Full Name |
QGArray() | 1 method | 1 type | QGArray.QGArray() |
QGArray(int) | 1 method | 1 type | QGArray.QGArray(int) |
QFileInfo(constQDir&,constQString&) | 1 method | 0 type | QFileInfo.QFileInfo(constQDir&,constQString&) |
QGVector(constQGVector&) | 1 method | 3 types | QGVector.QGVector(constQGVector&) |
QTextCodecFromIOD(QIODevice*) | 1 method | 0 type | QTextCodecFromIOD.QTextCodecFromIOD(QIODevice*) |
QXmlInputSource(QTextStream&) | 2 methods | 0 type | QXmlInputSource.QXmlInputSource(QTextStream&) |
LockingPtr<T>(constLockableObj*,constT*) | 1 method | 0 type | LockingPtr<T>.LockingPtr<T>(constLockableObj*,constT*) |
TranslatorDecoder(Translator*) | 1 method | 0 type | TranslatorDecoder.TranslatorDecoder(Translator*) |
Statistics
Stat | virtualMethodsCalled | DerivedTypes |
---|---|---|
Sum: | 0 | 0 |
Average: | 0 | 0 |
Minimum: | 0 | 0 |
Maximum: | 0 | 0 |
Standard deviation: | 0 | 0 |
Variance: | 0 | 0 |
Rule warning: Don't assign static fields from instance methods |
// <Name>Don't assign static fields from instance methods</Name>
// Assigning static fields from instance methods leads to
// poorly maintainable and non thread-safe code.
// It is advised to assign static fields inline or from class constructor.
warnif count > 0
from f in Application.Fields where
f.IsStatic &&
!f.IsGeneratedByCompiler && !f.IsGlobal
let assignedBy = f.MethodsAssigningMe.Where(m => !m.IsStatic)
where assignedBy .Count() > 0
select new { f, assignedBy }
// Assigning static fields from instance methods leads to
// poorly maintainable and non thread-safe code.
// It is advised to assign static fields inline or from class constructor.
warnif count > 0
from f in Application.Fields where
f.IsStatic &&
!f.IsGeneratedByCompiler && !f.IsGlobal
let assignedBy = f.MethodsAssigningMe.Where(m => !m.IsStatic)
where assignedBy .Count() > 0
select new { f, assignedBy }
38 fields matched
fields | assignedBy | Full Name |
---|---|---|
fields | assignedBy | Full Name |
null | 1 method | QString.null |
shared_null | 2 methods | QString.shared_null |
floatfield | 1 method | QTextStream.floatfield |
classSDict | 2 methods | Doxygen.classSDict |
hiddenClasses | 1 method | Doxygen.hiddenClasses |
externalReferences | 2 methods | Doxygen.externalReferences |
externalmlist | 1 method | Doxygen.externalmlist |
externalinputFilesDict | 2 methods | Doxygen.externalinputFilesDict |
allinputFilesDict | 1 method | Doxygen.allinputFilesDict |
duplicateClasses | 1 method | Doxygen.duplicateClasses |
filesTogenerate | 1 method | Doxygen.filesTogenerate |
filesPreprocessed | 1 method | Doxygen.filesPreprocessed |
idlfiles | 1 method | Doxygen.idlfiles |
includeNameDict | 1 method | Doxygen.includeNameDict |
inputNameDict | 1 method | Doxygen.inputNameDict |
inputNameList | 2 methods | Doxygen.inputNameList |
memberNameSDict | 3 methods | Doxygen.memberNameSDict |
functionNameSDict | 3 methods | Doxygen.functionNameSDict |
namespaceSDict | 4 methods | Doxygen.namespaceSDict |
globalScope | 4 methods | Doxygen.globalScope |
htmlFileExtension | 1 method | Doxygen.htmlFileExtension |
parseSourcesNeeded | 1 method | Doxygen.parseSourcesNeeded |
symbolMap | 2 methods | Doxygen.symbolMap |
outputToWizard | 1 method | Doxygen.outputToWizard |
lookupCache | 1 method | Doxygen.lookupCache |
directories | 3 methods | Doxygen.directories |
parserManager | 1 method | Doxygen.parserManager |
suppressDocWarnings | 6 methods | Doxygen.suppressDocWarnings |
symbolCache | 1 method | Doxygen.symbolCache |
symbolStorage | 1 method | Doxygen.symbolStorage |
isPragma | 2 methods | Doxygen.isPragma |
fileDictionary | 1 method | Doxygen.fileDictionary |
fileIndex | 1 method | Doxygen.fileIndex |
CacheFilesDict | 1 method | Doxygen.CacheFilesDict |
StorageFilesDict | 1 method | Doxygen.StorageFilesDict |
Koi8RToWindows1251Tab | 1 method | Translator.Koi8RToWindows1251Tab |
Windows1251ToKoi8RTab | 1 method | Translator.Windows1251ToKoi8RTab |
misses | 1 method | ObjCache.misses |
Statistics
Stat | assignedBy |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
Rule warning: Avoid Abstract Classes with too many methods |
// <Name>Avoid Abstract Classes with too many methods</Name>
// An abstract class should abstract a clear and well-defined concept.
// Such concept shoudln't be represented with too many methods and property getter.
warnif count > 0 from t in JustMyCode.Types where
t.IsAbstract
let methodsAndGetters = t.Methods
where methodsAndGetters.Count() > 10
select new { t, methodsAndGetters }
// An abstract class should abstract a clear and well-defined concept.
// Such concept shoudln't be represented with too many methods and property getter.
warnif count > 0 from t in JustMyCode.Types where
t.IsAbstract
let methodsAndGetters = t.Methods
where methodsAndGetters.Count() > 10
select new { t, methodsAndGetters }
10 types matched
types | methodsAndGetters | Full Name |
---|---|---|
types | methodsAndGetters | Full Name |
QIODevice | 41 methods | QIODevice |
QTextCodec | 26 methods | QTextCodec |
QXmlReader | 21 methods | QXmlReader |
QXmlContentHandler | 14 methods | QXmlContentHandler |
ConfigOption | 17 methods | ConfigOption |
Definition | 72 methods | Definition |
CodeOutputInterface | 13 methods | CodeOutputInterface |
BaseOutputDocInterface | 60 methods | BaseOutputDocInterface |
OutputGenerator | 110 methods | OutputGenerator |
Translator | 224 methods | Translator |
Statistics
Stat | methodsAndGetters |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
Design |
|
|
Rule warning: Nested types should not be visible |
// <Name>Nested types should not be visible</Name>
warnif count > 0 from t in JustMyCode.Types where
t.IsNested &&
!t.IsGeneratedByCompiler &&
!t.IsPrivate
select new { t, t.NbLinesOfCode, t.Visibility }
// A nested type is a type declared within the
// scope of another type. Nested types are useful
// for encapsulating private implementation details
// of the containing type. Used for this purpose,
// nested types should not be externally visible.
// Do not use externally visible nested types for
// logical grouping or to avoid name collisions;
// instead, use namespaces.
warnif count > 0 from t in JustMyCode.Types where
t.IsNested &&
!t.IsGeneratedByCompiler &&
!t.IsPrivate
select new { t, t.NbLinesOfCode, t.Visibility }
// A nested type is a type declared within the
// scope of another type. Nested types are useful
// for encapsulating private implementation details
// of the containing type. Used for this purpose,
// nested types should not be externally visible.
// Do not use externally visible nested types for
// logical grouping or to avoid name collisions;
// instead, use namespaces.
40 types matched
types | # lines of code (LOC) | Visibility | Full Name |
---|---|---|---|
types | # lines of code (LOC) | Visibility | Full Name |
QGArray+array_data | 2 | Public | QGArray+array_data |
QChar+Category | N/A | Public | QChar+Category |
QChar+Direction | N/A | Public | QChar+Direction |
QChar+Decomposition | N/A | Public | QChar+Decomposition |
QChar+Joining | N/A | Public | QChar+Joining |
QDataStream+ByteOrder | N/A | Public | QDataStream+ByteOrder |
QFileInfo+PermissionSpec | N/A | Public | QFileInfo+PermissionSpec |
QDir+FilterSpec | N/A | Public | QDir+FilterSpec |
QDir+SortSpec | N/A | Public | QDir+SortSpec |
QGDict+KeyType | N/A | Protected | QGDict+KeyType |
QGCache+KeyType | N/A | Protected | QGCache+KeyType |
QMapNodeBase+Color | N/A | Public | QMapNodeBase+Color |
QTextStream+Encoding | N/A | Public | QTextStream+Encoding |
QTextStream+AnonymousEnum | N/A | Public | QTextStream+AnonymousEnum |
QTextStreamPrivate+SourceType | N/A | Public | QTextStreamPrivate+SourceType |
CPPValue+Type | N/A | Public | CPPValue+Type |
MemberList+ListType | N/A | Public | MemberList+ListType |
ClassDef+CompoundType | N/A | Public | ClassDef+CompoundType |
ConfigOption+OptionType | N/A | Public | ConfigOption+OptionType |
ConfigOption+AnonymousEnum | N/A | Public | ConfigOption+AnonymousEnum |
ConfigList+WidgetType | N/A | Public | ConfigList+WidgetType |
ConfigString+WidgetType | N/A | Public | ConfigString+WidgetType |
DirEntry+EntryKind | N/A | Public | DirEntry+EntryKind |
Debug+DebugMask | N/A | Public | Debug+DebugMask |
Entry+Sections | N/A | Public | Entry+Sections |
Entry+MemberSpecifier | N/A | Public | Entry+MemberSpecifier |
Entry+ClassSpecifier | N/A | Public | Entry+ClassSpecifier |
Entry+GroupDocType | N/A | Public | Entry+GroupDocType |
DefinitionIntf+DefType | N/A | Public | DefinitionIntf+DefType |
SDict<T>+Iterator | 7 | Public | SDict<T>+Iterator |
SDict<T>+IteratorDict | 8 | Public | SDict<T>+IteratorDict |
SIntDict<T>+Iterator | 7 | Public | SIntDict<T>+Iterator |
MemberDef+MemberType | N/A | Public | MemberDef+MemberType |
SectionInfo+SectionType | N/A | Public | SectionInfo+SectionType |
BaseOutputDocInterface+ParamListTypes | N/A | Public | BaseOutputDocInterface+ParamListTypes |
BaseOutputDocInterface+SectionTypes | N/A | Public | BaseOutputDocInterface+SectionTypes |
OutputGenerator+OutputType | N/A | Public | OutputGenerator+OutputType |
VariableContext+Scope | 10 | Public | VariableContext+Scope |
CallContext+Ctx | 0 | Public | CallContext+Ctx |
TokenInfo+ParamDir | N/A | Public | TokenInfo+ParamDir |
Statistics
Stat | # lines of code (LOC) | Visibility |
---|---|---|
Sum: | 34 | 0 |
Average: | 5.6667 | 0 |
Minimum: | 0 | 0 |
Maximum: | 10 | 0 |
Standard deviation: | 3.496 | 0 |
Variance: | 12.222 | 0 |
Architecture and Layering |
|
|
Rule warning: Projects that don't satisfy the Abstractness/Instability principle |
// <Name>Projects that don't satisfy the Abstractness/Instability principle</Name>
warnif percentage > 15 from a in Application.Projects where
a.NormDistFromMainSeq > 0.7
orderby a.NormDistFromMainSeq descending
select new { a, a.NormDistFromMainSeq }
// See the definition of the NormDistFromMainSeq metric here
// http://www.cppdepend.com/Metrics.aspx#DitFromMainSeq
warnif percentage > 15 from a in Application.Projects where
a.NormDistFromMainSeq > 0.7
orderby a.NormDistFromMainSeq descending
select new { a, a.NormDistFromMainSeq }
// See the definition of the NormDistFromMainSeq metric here
// http://www.cppdepend.com/Metrics.aspx#DitFromMainSeq
1 projects matched
project | Normalized dist from main seq | Full Name |
---|---|---|
project | Normalized dist from main seq | Full Name |
qtools | 0.87719 | qtools |
Statistics
Stat | Normalized dist from main seq |
---|---|
Sum: | 0.87719 |
Average: | 0.87719 |
Minimum: | 0.87719 |
Maximum: | 0.87719 |
Standard deviation: | 0.00013726 |
Variance: | 1.884086E-08 |
Dead Code |
|
|
Rule warning: Potentially dead Types |
// <Name>Potentially dead Types</Name>
warnif count > 0
let tt=Types.UsedByAny(Application.Methods)
// 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 }
warnif count > 0
let tt=Types.UsedByAny(Application.Methods)
// 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 }
120 types matched
The following list of types is truncated and contains only the first 100 types of the 120 types matched. All matched types could be listed in the report by unchecking the option:
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched types.
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched types.
types | Full Name |
---|---|
types | Full Name |
QConstString | QConstString |
QStrIList | QStrIList |
QFileInfo+PermissionSpec | QFileInfo+PermissionSpec |
QValueListPrivate<T> | QValueListPrivate<T> |
QMapPrivate<Key,T> | QMapPrivate<Key,T> |
QTextIStream | QTextIStream |
QTSManip | QTSManip |
QTextOStreamIterator<T> | QTextOStreamIterator<T> |
QSimpleTextCodec | QSimpleTextCodec |
QLatin1Codec | QLatin1Codec |
QUtf8Codec | QUtf8Codec |
QUtf16Codec | QUtf16Codec |
QXmlDefaultHandler | QXmlDefaultHandler |
QXmlNamespaceSupportPrivate | QXmlNamespaceSupportPrivate |
QXmlAttributesPrivate | QXmlAttributesPrivate |
QXmlInputSourcePrivate | QXmlInputSourcePrivate |
QXmlParseExceptionPrivate | QXmlParseExceptionPrivate |
QXmlLocatorPrivate | QXmlLocatorPrivate |
QXmlDefaultHandlerPrivate | QXmlDefaultHandlerPrivate |
QCacheIterator<type> | QCacheIterator<type> |
QIntDictIterator<type> | QIntDictIterator<type> |
QPtrDictIterator<type> | QPtrDictIterator<type> |
QQueue<type> | QQueue<type> |
QSortedList<type> | QSortedList<type> |
QStrIVec | QStrIVec |
SCString | SCString |
CPPValue | CPPValue |
MemberDict | MemberDict |
UsesClassDictIterator | UsesClassDictIterator |
ClassListIterator | ClassListIterator |
ClassDict | ClassDict |
OutputNameList | OutputNameList |
OutputNameDict | OutputNameDict |
Directory | Directory |
MemberNameIterator | MemberNameIterator |
MemberNameSDict | MemberNameSDict |
FileNameIterator | FileNameIterator |
FileNameListIterator | FileNameListIterator |
FileNameDict | FileNameDict |
NamespaceListIterator | NamespaceListIterator |
NamespaceDict | NamespaceDict |
DirRelation | DirRelation |
DirSDict | DirSDict |
EntryCache | EntryCache |
FileCache | FileCache |
StringDict | StringDict |
LookupInfo | LookupInfo |
IndexList | IndexList |
IndexSections | IndexSections |
ClassHighlight | ClassHighlight |
Entry+GroupDocType | Entry+GroupDocType |
DocInfo | DocInfo |
BriefInfo | BriefInfo |
DefinitionListIterator | DefinitionListIterator |
SList<T> | SList<T> |
SDict<T>+IteratorDict | SDict<T>+IteratorDict |
SIntList<T> | SIntList<T> |
SIntDict<T>+Iterator | SIntDict<T>+Iterator |
SourceReference | SourceReference |
TextGeneratorOLImpl | TextGeneratorOLImpl |
SectionDict | SectionDict |
Mapper | Mapper |
Mappers | Mappers |
MethodContext | MethodContext |
VariableContext | VariableContext |
CallContext | CallContext |
BufStr | BufStr |
CondCtx | CondCtx |
ConfigFileState | ConfigFileState |
LabelMapper | LabelMapper |
DefineList | DefineList |
DefineNameList | DefineNameList |
StreamStorage | StreamStorage |
DocLexerContext | DocLexerContext |
CLanguageScanner | CLanguageScanner |
MemberIndexList | MemberIndexList |
PrefixIgnoreClassList | PrefixIgnoreClassList |
TranslatorDecoder | TranslatorDecoder |
TranslatorDutch | TranslatorDutch |
TranslatorSwedish | TranslatorSwedish |
TranslatorCzech | TranslatorCzech |
TranslatorFrench | TranslatorFrench |
TranslatorIndonesian | TranslatorIndonesian |
TranslatorItalian | TranslatorItalian |
TranslatorGerman | TranslatorGerman |
TranslatorJapanese | TranslatorJapanese |
TranslatorJapaneseEn | TranslatorJapaneseEn |
TranslatorSpanish | TranslatorSpanish |
TranslatorFinnish | TranslatorFinnish |
TranslatorRussian | TranslatorRussian |
TranslatorCroatian | TranslatorCroatian |
TranslatorPolish | TranslatorPolish |
TranslatorPortuguese | TranslatorPortuguese |
TranslatorHungarian | TranslatorHungarian |
TranslatorKoreanEn | TranslatorKoreanEn |
TranslatorKorean | TranslatorKorean |
TranslatorRomanian | TranslatorRomanian |
TranslatorSlovene | TranslatorSlovene |
TranslatorChinese | TranslatorChinese |
TranslatorChinesetraditional | TranslatorChinesetraditional |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Rule warning: Potentially dead Methods |
// <Name>Potentially dead Methods</Name>
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.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] }
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.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] }
144 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 144 methods matched. All matched methods could be listed in the report by unchecking the option:
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched methods.
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched methods.
methods | MethodsCallingMe | depth | Full Name |
---|---|---|---|
methods | MethodsCallingMe | depth | Full Name |
operator=(constQGArray&) | 0 method | 0 | QGArray.operator=(constQGArray&) |
assign(constQGArray&) | 1 method | 1 | QGArray.assign(constQGArray&) |
assign(constchar*,uint) | 0 method | 0 | QGArray.assign(constchar*,uint) |
store(constchar*,uint) | 0 method | 0 | QGArray.store(constchar*,uint) |
sharedBlock() | 0 method | 0 | QGArray.sharedBlock() |
setSharedBlock(QGArray::array_data*) | 0 method | 0 | QGArray.setSharedBlock(QGArray::array_data*) |
setExpand(uint,constchar*,uint) | 0 method | 0 | QGArray.setExpand(uint,constchar*,uint) |
deleteItem(QCollection::Item) | 0 method | 0 | qtoolsGlobalMembers.deleteItem(QCollection::Item) |
deleteItem(Item) | 0 method | 0 | qtoolsGlobalMembers.deleteItem(Item) |
deleteItem(QCollection::Item) | 0 method | 0 | qtoolsGlobalMembers.deleteItem(QCollection::Item) |
deleteItem(QCollection::Item) | 0 method | 0 | qtoolsGlobalMembers.deleteItem(QCollection::Item) |
msg_index(uint) | 0 method | 0 | QCString.msg_index(uint) |
QIODevice(constQIODevice&) | 0 method | 0 | QIODevice.QIODevice(constQIODevice&) |
operator=(constQIODevice&) | 0 method | 0 | QIODevice.operator=(constQIODevice&) |
asciiToUnicode(constchar*,uint*,uint) | 0 method | 0 | QString.asciiToUnicode(constchar*,uint*,uint) |
asciiToUnicode(constQByteArray&,uint*) | 0 method | 0 | QString.asciiToUnicode(constQByteArray&,uint*) |
QBuffer(constQBuffer&) | 0 method | 0 | QBuffer.QBuffer(constQBuffer&) |
operator=(constQBuffer&) | 0 method | 0 | QBuffer.operator=(constQBuffer&) |
QDataStream(constQDataStream&) | 0 method | 0 | QDataStream.QDataStream(constQDataStream&) |
operator=(constQDataStream&) | 0 method | 0 | QDataStream.operator=(constQDataStream&) |
takeLast() | 0 method | 0 | QGList.takeLast() |
at(uint) | 0 method | 0 | QGList.at(uint) |
at() | 0 method | 0 | QGList.at() |
deleteItem(QCollection::Item) | 0 method | 0 | QList<type>.deleteItem(QCollection::Item) |
newItem(QCollection::Item) | 0 method | 0 | QStrList.newItem(QCollection::Item) |
deleteItem(QCollection::Item) | 0 method | 0 | QStrList.deleteItem(QCollection::Item) |
compareItems(QCollection::Item,QCollection::Item) | 0 method | 0 | QStrList.compareItems(QCollection::Item,QCollection::Item) |
read(QDataStream&,QCollection::Item&) | 0 method | 0 | QStrList.read(QDataStream&,QCollection::Item&) |
write(QDataStream&,QCollection::Item) | 0 method | 0 | QStrList.write(QDataStream&,QCollection::Item) |
compareItems(QCollection::Item,QCollection::Item) | 0 method | 0 | QStrIList.compareItems(QCollection::Item,QCollection::Item) |
QFile(constQFile&) | 0 method | 0 | QFile.QFile(constQFile&) |
operator=(constQFile&) | 0 method | 0 | QFile.operator=(constQFile&) |
matchstr(uint*,constchar*,uint,constchar*) | 0 method | 0 | QRegExp.matchstr(uint*,constchar*,uint,constchar*) |
insert_string(constQString&,QCollection::Item,int,int) | 0 method | 0 | QGCache.insert_string(constQString&,QCollection::Item,int,int) |
remove_string(constQString&) | 0 method | 0 | QGCache.remove_string(constQString&) |
take_string(constQString&) | 1 method | 1 | QGCache.take_string(constQString&) |
find_string(constQString&,bool) | 0 method | 0 | QGCache.find_string(constQString&,bool) |
~QGCacheIterator() | 0 method | 0 | QGCacheIterator.~QGCacheIterator() |
getKeyString() | 0 method | 0 | QGCacheIterator.getKeyString() |
getKeyInt() | 0 method | 0 | QGCacheIterator.getKeyInt() |
deleteItem(Item) | 0 method | 0 | QDict<type>.deleteItem(Item) |
insertExpand(uint,Item) | 0 method | 0 | QGVector.insertExpand(uint,Item) |
deleteItem(Item) | 0 method | 0 | QStack<type>.deleteItem(Item) |
QTextStream(constQTextStream&) | 0 method | 0 | QTextStream.QTextStream(constQTextStream&) |
operator=(constQTextStream&) | 0 method | 0 | QTextStream.operator=(constQTextStream&) |
QStringBuffer(constQStringBuffer&) | 0 method | 0 | QStringBuffer.QStringBuffer(constQStringBuffer&) |
operator=(constQStringBuffer&) | 0 method | 0 | QStringBuffer.operator=(constQStringBuffer&) |
nameAddC(constQChar&) | 0 method | 0 | QXmlSimpleReader.nameAddC(constQChar&) |
refAddC(constQChar&) | 0 method | 0 | QXmlSimpleReader.refAddC(constQChar&) |
deleteItem(Item) | 0 method | 0 | QCache<type>.deleteItem(Item) |
deleteItem(Item) | 0 method | 0 | QIntDict<type>.deleteItem(Item) |
deleteItem(Item) | 0 method | 0 | QPtrDict<type>.deleteItem(Item) |
deleteItem(Item) | 0 method | 0 | QQueue<type>.deleteItem(Item) |
deleteItem(Item) | 0 method | 0 | QVector<type>.deleteItem(Item) |
newItem(Item) | 0 method | 0 | QStrVec.newItem(Item) |
deleteItem(Item) | 0 method | 0 | QStrVec.deleteItem(Item) |
compareItems(Item,Item) | 0 method | 0 | QStrVec.compareItems(Item,Item) |
read(QDataStream&,Item&) | 0 method | 0 | QStrVec.read(QDataStream&,Item&) |
write(QDataStream&,Item) | 0 method | 0 | QStrVec.write(QDataStream&,Item) |
compareItems(Item,Item) | 0 method | 0 | QStrIVec.compareItems(Item,Item) |
msg_index(int) | 0 method | 0 | SCString.msg_index(int) |
duplicate(constSCString&) | 0 method | 0 | SCString.duplicate(constSCString&) |
duplicate(constchar*) | 1 method | 1 | SCString.duplicate(constchar*) |
duplicate(constchar*,int) | 0 method | 0 | SCString.duplicate(constchar*,int) |
addUsedInterfaceClasses(MemberDef*,constchar*) | 0 method | 0 | ClassDef.addUsedInterfaceClasses(MemberDef*,constchar*) |
showUsedFiles(OutputList&) | 0 method | 0 | ClassDef.showUsedFiles(OutputList&) |
writeMemberDeclarations(OutputList&,MemberList::ListType ,constQCString&,constchar*) | 0 method | 0 | ClassDef.writeMemberDeclarations(OutputList&,MemberList::ListType ,constQCString&,constchar*) |
writeMemberDocumentation(OutputList&,MemberList::ListType ,constQCString&) | 0 method | 0 | ClassDef.writeMemberDocumentation(OutputList&,MemberList::ListType ,constQCString&) |
writePlainMemberDeclaration(OutputList&,MemberList::ListType,bool) | 0 method | 0 | ClassDef.writePlainMemberDeclaration(OutputList&,MemberList::ListType ,bool) |
writeBriefDescription(OutputList&,bool) | 0 method | 0 | ClassDef.writeBriefDescription(OutputList&,bool) |
writeDetailedDescription(OutputList&,constQCString&,bool ,constQCString&) | 0 method | 0 | ClassDef.writeDetailedDescription(OutputList&,constQCString&,bool ,constQCString&) |
writeIncludeFiles(OutputList&) | 0 method | 0 | ClassDef.writeIncludeFiles(OutputList&) |
writeAllMembersLink(OutputList&) | 0 method | 0 | ClassDef.writeAllMembersLink(OutputList&) |
writeInheritanceGraph(OutputList&) | 0 method | 0 | ClassDef.writeInheritanceGraph(OutputList&) |
writeCollaborationGraph(OutputList&) | 0 method | 0 | ClassDef.writeCollaborationGraph(OutputList&) |
writeMemberGroups(OutputList&) | 0 method | 0 | ClassDef.writeMemberGroups(OutputList&) |
writeNestedClasses(OutputList&,constQCString&) | 0 method | 0 | ClassDef.writeNestedClasses(OutputList&,constQCString&) |
startMemberDeclarations(OutputList&) | 0 method | 0 | ClassDef.startMemberDeclarations(OutputList&) |
endMemberDeclarations(OutputList&) | 0 method | 0 | ClassDef.endMemberDeclarations(OutputList&) |
startMemberDocumentation(OutputList&) | 0 method | 0 | ClassDef.startMemberDocumentation(OutputList&) |
endMemberDocumentation(OutputList&) | 0 method | 0 | ClassDef.endMemberDocumentation(OutputList&) |
writeAuthorSection(OutputList&) | 0 method | 0 | ClassDef.writeAuthorSection(OutputList&) |
~Config() | 0 method | 0 | Config.~Config() |
writeMemberDeclarations(OutputList&,MemberList::ListType ,constQCString&) | 0 method | 0 | FileDef.writeMemberDeclarations(OutputList&,MemberList::ListType ,constQCString&) |
writeMemberDocumentation(OutputList&,MemberList::ListType ,constQCString&) | 0 method | 0 | FileDef.writeMemberDocumentation(OutputList&,MemberList::ListType ,constQCString&) |
writeIncludeFiles(OutputList&) | 0 method | 0 | FileDef.writeIncludeFiles(OutputList&) |
writeIncludeGraph(OutputList&) | 0 method | 0 | FileDef.writeIncludeGraph(OutputList&) |
writeIncludedByGraph(OutputList&) | 0 method | 0 | FileDef.writeIncludedByGraph(OutputList&) |
writeMemberGroups(OutputList&) | 0 method | 0 | FileDef.writeMemberGroups(OutputList&) |
writeAuthorSection(OutputList&) | 0 method | 0 | FileDef.writeAuthorSection(OutputList&) |
writeSourceLink(OutputList&) | 0 method | 0 | FileDef.writeSourceLink(OutputList&) |
writeNamespaceDeclarations(OutputList&,constQCString&) | 0 method | 0 | FileDef.writeNamespaceDeclarations(OutputList&,constQCString&) |
writeClassDeclarations(OutputList&,constQCString&) | 0 method | 0 | FileDef.writeClassDeclarations(OutputList&,constQCString&) |
startMemberDeclarations(OutputList&) | 0 method | 0 | FileDef.startMemberDeclarations(OutputList&) |
endMemberDeclarations(OutputList&) | 0 method | 0 | FileDef.endMemberDeclarations(OutputList&) |
startMemberDocumentation(OutputList&) | 0 method | 0 | FileDef.startMemberDocumentation(OutputList&) |
endMemberDocumentation(OutputList&) | 0 method | 0 | FileDef.endMemberDocumentation(OutputList&) |
writeDetailedDescription(OutputList&,constQCString&) | 0 method | 0 | FileDef.writeDetailedDescription(OutputList&,constQCString&) |
writeBriefDescription(OutputList&) | 0 method | 0 | FileDef.writeBriefDescription(OutputList&) |
writeMemberDeclarations(OutputList&,MemberList::ListType ,constQCString&) | 0 method | 0 | NamespaceDef.writeMemberDeclarations(OutputList&,MemberList::ListType ,constQCString&) |
Statistics
Stat | MethodsCallingMe | depth |
---|---|---|
Sum: | 0 | 3 |
Average: | 0 | 0.020833 |
Minimum: | 0 | 0 |
Maximum: | 0 | 1 |
Standard deviation: | 0 | 0.14283 |
Variance: | 0 | 0.020399 |
Rule warning: Potentially dead Fields |
// <Name>Potentially dead Fields</Name>
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
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
11 fields matched
fields | Full Name |
---|---|
fields | Full Name |
d | QFile.d |
ungetcBuf | QTextStream.ungetcBuf |
reserved_ptr | QTextStream.reserved_ptr |
forwardIndex | QLatin1Codec.forwardIndex |
d | QXmlNamespaceSupport.d |
d | QXmlAttributes.d |
d | QXmlInputSource.d |
d | QXmlParseException.d |
d | QXmlLocator.d |
d | QXmlDefaultHandler.d |
num | DirEntry.num |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Visibility |
|
|
Rule warning: Fields should be declared as private |
// <Name>Fields should be declared as private</Name>
warnif count > 0 from f in Application.Fields where
!f.IsPrivate &&
// These conditions filter cases where fields
// doesn't represent state that should be encapsulated.
!f.IsGeneratedByCompiler &&
!f.IsEnumValue
select new { f }
warnif count > 0 from f in Application.Fields where
!f.IsPrivate &&
// These conditions filter cases where fields
// doesn't represent state that should be encapsulated.
!f.IsGeneratedByCompiler &&
!f.IsEnumValue
select new { f }
1,398 fields matched
The following list of fields is truncated and contains only the first 100 fields of the 1398 fields matched. All matched fields could be listed in the report by unchecking the option:
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched fields.
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched fields.
fields | Full Name |
---|---|
fields | Full Name |
count | QShared.count |
data | QGArray+array_data.data |
len | QGArray+array_data.len |
FALSE | qtoolsGlobalMembers.FALSE |
TRUE | qtoolsGlobalMembers.TRUE |
systemWordSize | qtoolsGlobalMembers.systemWordSize |
systemBigEndian | qtoolsGlobalMembers.systemBigEndian |
DefaultStreamVersion | qtoolsGlobalMembers.DefaultStreamVersion |
FIRST_DAY | qtoolsGlobalMembers.FIRST_DAY |
FIRST_YEAR | qtoolsGlobalMembers.FIRST_YEAR |
SECS_PER_DAY | qtoolsGlobalMembers.SECS_PER_DAY |
MSECS_PER_DAY | qtoolsGlobalMembers.MSECS_PER_DAY |
SECS_PER_HOUR | qtoolsGlobalMembers.SECS_PER_HOUR |
MSECS_PER_HOUR | qtoolsGlobalMembers.MSECS_PER_HOUR |
SECS_PER_MIN | qtoolsGlobalMembers.SECS_PER_MIN |
MSECS_PER_MIN | qtoolsGlobalMembers.MSECS_PER_MIN |
monthDays | qtoolsGlobalMembers.monthDays |
qt_cmp_si_sortSpec | qtoolsGlobalMembers.qt_cmp_si_sortSpec |
encoder | qtoolsGlobalMembers.encoder |
decoder | qtoolsGlobalMembers.decoder |
nobodyID | qtoolsGlobalMembers.nobodyID |
cmp_item_size | qtoolsGlobalMembers.cmp_item_size |
op_find | qtoolsGlobalMembers.op_find |
op_insert | qtoolsGlobalMembers.op_insert |
op_replace | qtoolsGlobalMembers.op_replace |
si_alreadyDone | qtoolsGlobalMembers.si_alreadyDone |
si_wordSize | qtoolsGlobalMembers.si_wordSize |
si_bigEndian | qtoolsGlobalMembers.si_bigEndian |
handler | qtoolsGlobalMembers.handler |
suppressObsolete | qtoolsGlobalMembers.suppressObsolete |
qt_winunicode | qtoolsGlobalMembers.qt_winunicode |
sort_vec | qtoolsGlobalMembers.sort_vec |
END | qtoolsGlobalMembers.END |
PWS | qtoolsGlobalMembers.PWS |
PDG | qtoolsGlobalMembers.PDG |
CCL | qtoolsGlobalMembers.CCL |
CCN | qtoolsGlobalMembers.CCN |
CHR | qtoolsGlobalMembers.CHR |
BOL | qtoolsGlobalMembers.BOL |
EOL | qtoolsGlobalMembers.EOL |
BOW | qtoolsGlobalMembers.BOW |
EOW | qtoolsGlobalMembers.EOW |
ANY | qtoolsGlobalMembers.ANY |
CLO | qtoolsGlobalMembers.CLO |
OPT | qtoolsGlobalMembers.OPT |
MCC | qtoolsGlobalMembers.MCC |
MCD | qtoolsGlobalMembers.MCD |
MVL | qtoolsGlobalMembers.MVL |
PatOk | qtoolsGlobalMembers.PatOk |
PatNull | qtoolsGlobalMembers.PatNull |
PatSyntax | qtoolsGlobalMembers.PatSyntax |
PatOverflow | qtoolsGlobalMembers.PatOverflow |
maxlen | qtoolsGlobalMembers.maxlen |
rxarray | qtoolsGlobalMembers.rxarray |
ui_00 | qtoolsGlobalMembers.ui_00 |
ui_01 | qtoolsGlobalMembers.ui_01 |
ui_02 | qtoolsGlobalMembers.ui_02 |
ui_03 | qtoolsGlobalMembers.ui_03 |
ui_04 | qtoolsGlobalMembers.ui_04 |
ui_05 | qtoolsGlobalMembers.ui_05 |
ui_06 | qtoolsGlobalMembers.ui_06 |
ui_07 | qtoolsGlobalMembers.ui_07 |
ui_08 | qtoolsGlobalMembers.ui_08 |
ui_09 | qtoolsGlobalMembers.ui_09 |
ui_0A | qtoolsGlobalMembers.ui_0A |
ui_0B | qtoolsGlobalMembers.ui_0B |
ui_0C | qtoolsGlobalMembers.ui_0C |
ui_0D | qtoolsGlobalMembers.ui_0D |
ui_0E | qtoolsGlobalMembers.ui_0E |
ui_0F | qtoolsGlobalMembers.ui_0F |
ui_10 | qtoolsGlobalMembers.ui_10 |
ui_11 | qtoolsGlobalMembers.ui_11 |
ui_12 | qtoolsGlobalMembers.ui_12 |
ui_13 | qtoolsGlobalMembers.ui_13 |
ui_14 | qtoolsGlobalMembers.ui_14 |
ui_15 | qtoolsGlobalMembers.ui_15 |
ui_16 | qtoolsGlobalMembers.ui_16 |
ui_17 | qtoolsGlobalMembers.ui_17 |
ui_18 | qtoolsGlobalMembers.ui_18 |
ui_1E | qtoolsGlobalMembers.ui_1E |
ui_1F | qtoolsGlobalMembers.ui_1F |
ui_20 | qtoolsGlobalMembers.ui_20 |
ui_21 | qtoolsGlobalMembers.ui_21 |
ui_22 | qtoolsGlobalMembers.ui_22 |
ui_23 | qtoolsGlobalMembers.ui_23 |
ui_24 | qtoolsGlobalMembers.ui_24 |
ui_25 | qtoolsGlobalMembers.ui_25 |
ui_26 | qtoolsGlobalMembers.ui_26 |
ui_27 | qtoolsGlobalMembers.ui_27 |
ui_28 | qtoolsGlobalMembers.ui_28 |
ui_2E | qtoolsGlobalMembers.ui_2E |
ui_2F | qtoolsGlobalMembers.ui_2F |
ui_30 | qtoolsGlobalMembers.ui_30 |
ui_31 | qtoolsGlobalMembers.ui_31 |
ui_32 | qtoolsGlobalMembers.ui_32 |
ui_33 | qtoolsGlobalMembers.ui_33 |
ui_34 | qtoolsGlobalMembers.ui_34 |
ui_4D | qtoolsGlobalMembers.ui_4D |
ui_9F | qtoolsGlobalMembers.ui_9F |
ui_A4 | qtoolsGlobalMembers.ui_A4 |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Rule warning: Constructors of abstract classes should be declared as protected or private |
// <Name>Constructors of abstract classes should be declared as protected or private</Name>
// 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.
// 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.
25 types matched
types | ctors | Full Name |
---|---|---|
types | ctors | Full Name |
QIODevice | 1 method | QIODevice |
QTextEncoder | 2 methods | QTextEncoder |
QTextDecoder | 2 methods | QTextDecoder |
QTextCodec | 1 method | QTextCodec |
QXmlReader | 2 methods | QXmlReader |
QXmlContentHandler | 2 methods | QXmlContentHandler |
QXmlErrorHandler | 2 methods | QXmlErrorHandler |
QXmlDTDHandler | 2 methods | QXmlDTDHandler |
QXmlEntityResolver | 2 methods | QXmlEntityResolver |
QXmlLexicalHandler | 2 methods | QXmlLexicalHandler |
QXmlDeclHandler | 2 methods | QXmlDeclHandler |
ConfigOption | 2 methods | ConfigOption |
IndexIntf | 2 methods | IndexIntf |
LockableObj | 2 methods | LockableObj |
DefinitionIntf | 2 methods | DefinitionIntf |
Definition | 3 methods | Definition |
TextGeneratorIntf | 2 methods | TextGeneratorIntf |
CodeOutputInterface | 2 methods | CodeOutputInterface |
BaseOutputDocInterface | 2 methods | BaseOutputDocInterface |
OutputGenerator | 1 method | OutputGenerator |
OutputDocInterface | 1 method | OutputDocInterface |
Translator | 1 method | Translator |
ParserInterface | 1 method | ParserInterface |
StorageIntf | 2 methods | StorageIntf |
TranslatorAdapterBase | 2 methods | TranslatorAdapterBase |
Statistics
Stat | ctors |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
Purity - Immutability - Side-Effects |
|
|
Rule warning: Structures should be immutable |
// <Name>Structures should be immutable</Name>
warnif count > 0 from t in Application.Types where
t.IsStructure &&
!t.IsImmutable
let mutableFields = t.Fields.Where(f => !f.IsImmutable)
select new { t, t.NbLinesOfCode, mutableFields }
// It is deemed as a good practice to make
// your structure immutable.
// An object is immutable if its state doesn’t
// change once the object has been created.
// Consequently, a structure is immutable if
// its instances are immutable.
// Immutable types naturally simplify code by
// limiting side-effects.
// See some explanations on immutability and
// how NDepend supports it here:
// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/13/immutable-types-understand-them-and-use-them.aspx
warnif count > 0 from t in Application.Types where
t.IsStructure &&
!t.IsImmutable
let mutableFields = t.Fields.Where(f => !f.IsImmutable)
select new { t, t.NbLinesOfCode, mutableFields }
// It is deemed as a good practice to make
// your structure immutable.
// An object is immutable if its state doesn’t
// change once the object has been created.
// Consequently, a structure is immutable if
// its instances are immutable.
// Immutable types naturally simplify code by
// limiting side-effects.
// See some explanations on immutability and
// how NDepend supports it here:
// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/13/immutable-types-understand-them-and-use-them.aspx
51 types matched
types | # lines of code (LOC) | mutableFields | Full Name |
---|---|---|---|
types | # lines of code (LOC) | mutableFields | Full Name |
QShared | 3 | 1 field | QShared |
QGArray+array_data | 2 | 2 fields | QGArray+array_data |
QStringData | 6 | 5 fields | QStringData |
QDirSortItem | 0 | 2 fields | QDirSortItem |
QFileInfoCache | 0 | 2 fields | QFileInfoCache |
QCacheItem | 0 | 6 fields | QCacheItem |
QMapNodeBase | 8 | 4 fields | QMapNodeBase |
QMapNode<K,T> | 5 | 2 fields | QMapNode<K,T> |
QMultiByteUnicodeTable | 2 | 2 fields | QMultiByteUnicodeTable |
Anonymous | 0 | 3 fields | Anonymous |
QXmlSimpleReaderPrivate+ExternParameterEntity | 0 | 2 fields | QXmlSimpleReaderPrivate+ExternParameterEntity |
QXmlSimpleReaderPrivate+ExternEntity | 0 | 3 fields | QXmlSimpleReaderPrivate+ExternEntity |
yy_buffer_state | 0 | 10 fields | yy_buffer_state |
UsesClassDef | 5 | 4 fields | UsesClassDef |
BaseClassDef | 0 | 5 fields | BaseClassDef |
IncludeInfo | 2 | 4 fields | IncludeInfo |
MemberInfo | 0 | 7 fields | MemberInfo |
EntryCache | 0 | 6 fields | EntryCache |
FileCache | 0 | 3 fields | FileCache |
LookupInfo | 0 | 4 fields | LookupInfo |
ListItemInfo | 0 | 2 fields | ListItemInfo |
BaseInfo | 0 | 3 fields | BaseInfo |
Argument | 13 | 6 fields | Argument |
DocInfo | 0 | 3 fields | DocInfo |
BriefInfo | 0 | 4 fields | BriefInfo |
BodyInfo | 1 | 3 fields | BodyInfo |
SourceReference | 0 | 2 fields | SourceReference |
SectionInfo | 7 | 7 fields | SectionInfo |
CommandMap | 0 | 2 fields | CommandMap |
yy_buffer_state | 0 | 10 fields | yy_buffer_state |
CallContext+Ctx | 0 | 4 fields | CallContext+Ctx |
yy_buffer_state | 0 | 10 fields | yy_buffer_state |
CondCtx | 0 | 3 fields | CondCtx |
yy_buffer_state | 0 | 10 fields | yy_buffer_state |
ConfigFileState | 0 | 5 fields | ConfigFileState |
LabelMap | 0 | 2 fields | LabelMap |
yy_buffer_state | 0 | 10 fields | yy_buffer_state |
yy_buffer_state | 0 | 10 fields | yy_buffer_state |
PreproData | 0 | 4 fields | PreproData |
MD5Context | 0 | 3 fields | MD5Context |
Store+Node | 0 | 2 fields | Store+Node |
yy_buffer_state | 0 | 10 fields | yy_buffer_state |
TokenInfo | 0 | 13 fields | TokenInfo |
DocLexerContext | 0 | 5 fields | DocLexerContext |
ObjCache+CacheNode | 0 | 3 fields | ObjCache+CacheNode |
ObjCache+HashNode | 0 | 4 fields | ObjCache+HashNode |
STLInfo | 0 | 9 fields | STLInfo |
yy_buffer_state | 0 | 10 fields | yy_buffer_state |
FileState | 0 | 6 fields | FileState |
yy_buffer_state | 0 | 10 fields | yy_buffer_state |
FindFileCacheElem | 0 | 2 fields | FindFileCacheElem |
Statistics
Stat | # lines of code (LOC) | mutableFields |
---|---|---|
Sum: | 54 | 0 |
Average: | 1.0588 | 0 |
Minimum: | 0 | 0 |
Maximum: | 13 | 0 |
Standard deviation: | 2.5546 | 0 |
Variance: | 6.526 | 0 |
Rule warning: Avoid static fields with a mutable field type |
// <Name>Avoid static fields with a mutable field type</Name>
warnif count > 0
from f in Application.Fields
where f.IsStatic && !f.IsEnumValue && !f.IsGeneratedByCompiler
let fieldType = f.FieldType
where fieldType != null &&
!fieldType.IsThirdParty &&
!fieldType.IsInterface &&
!fieldType.IsImmutable
select new { f,
mutableFieldType = fieldType ,
isFieldImmutable = f.IsImmutable }
// As explained in this blog post
// http://codebetter.com/patricksmacchia/2011/05/04/back-to-basics-usage-of-static-members
// static fields should be used to hold only constant and immutable states.
warnif count > 0
from f in Application.Fields
where f.IsStatic && !f.IsEnumValue && !f.IsGeneratedByCompiler
let fieldType = f.FieldType
where fieldType != null &&
!fieldType.IsThirdParty &&
!fieldType.IsInterface &&
!fieldType.IsImmutable
select new { f,
mutableFieldType = fieldType ,
isFieldImmutable = f.IsImmutable }
// As explained in this blog post
// http://codebetter.com/patricksmacchia/2011/05/04/back-to-basics-usage-of-static-members
// static fields should be used to hold only constant and immutable states.
219 fields matched
The following list of fields is truncated and contains only the first 100 fields of the 219 fields matched. All matched fields could be listed in the report by unchecking the option:
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched fields.
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched fields.
fields | mutableFieldType | isFieldImmutable | Full Name |
---|---|---|---|
fields | mutableFieldType | isFieldImmutable | Full Name |
sort_vec | QGVector | False | qtoolsGlobalMembers.sort_vec |
resolv | QChar+Direction | False | qtoolsGlobalMembers.resolv |
all | QList<type> | False | qtoolsGlobalMembers.all |
unicodevalues | Anonymous | False | qtoolsGlobalMembers.unicodevalues |
reverseMap | QArray<type> | False | qtoolsGlobalMembers.reverseMap |
null | QString | False | QString.null |
shared_null | QStringData | False | QString.shared_null |
yy_current_buffer | yy_buffer_state | False | CppDependencyGlobalMembers.yy_current_buffer |
yy_current_buffer | yy_buffer_state | False | CppDependencyGlobalMembers.yy_current_buffer |
g_curClassName | QCString | False | CppDependencyGlobalMembers.g_curClassName |
g_curClassBases | QStrList | False | CppDependencyGlobalMembers.g_curClassBases |
g_parmType | QCString | False | CppDependencyGlobalMembers.g_parmType |
g_parmName | QCString | False | CppDependencyGlobalMembers.g_parmName |
g_exampleName | QCString | False | CppDependencyGlobalMembers.g_exampleName |
g_exampleFile | QCString | False | CppDependencyGlobalMembers.g_exampleFile |
g_type | QCString | False | CppDependencyGlobalMembers.g_type |
g_castclass | ClassDef | False | CppDependencyGlobalMembers.g_castclass |
g_arrayclass | ClassDef | False | CppDependencyGlobalMembers.g_arrayclass |
g_name | QCString | False | CppDependencyGlobalMembers.g_name |
g_args | QCString | False | CppDependencyGlobalMembers.g_args |
g_classScope | QCString | False | CppDependencyGlobalMembers.g_classScope |
g_realScope | QCString | False | CppDependencyGlobalMembers.g_realScope |
g_scopeStack | QStack<type> | False | CppDependencyGlobalMembers.g_scopeStack |
g_methodStack | QStack<type> | False | CppDependencyGlobalMembers.g_methodStack |
g_methodArgs | QList<type> | False | CppDependencyGlobalMembers.g_methodArgs |
g_sourceFileDef | FileDef | False | CppDependencyGlobalMembers.g_sourceFileDef |
g_currentClass | ClassDef | False | CppDependencyGlobalMembers.g_currentClass |
g_currentMemberDef | MemberDef | False | CppDependencyGlobalMembers.g_currentMemberDef |
g_currentMemberDefForTemplate | MemberDef | False | CppDependencyGlobalMembers.g_currentMemberDefForTemplate |
g_saveName | QCString | False | CppDependencyGlobalMembers.g_saveName |
g_saveType | QCString | False | CppDependencyGlobalMembers.g_saveType |
currentContext | MethodContext | False | CppDependencyGlobalMembers.currentContext |
g_classScopeLengthStack | QStack<type> | False | CppDependencyGlobalMembers.g_classScopeLengthStack |
yy_current_buffer | yy_buffer_state | False | CppDependencyGlobalMembers.yy_current_buffer |
g_inBuf | BufStr | False | CppDependencyGlobalMembers.g_inBuf |
g_outBuf | BufStr | False | CppDependencyGlobalMembers.g_outBuf |
g_fileName | QCString | False | CppDependencyGlobalMembers.g_fileName |
g_condStack | QStack<type> | False | CppDependencyGlobalMembers.g_condStack |
g_blockName | QCString | False | CppDependencyGlobalMembers.g_blockName |
g_aliasString | QCString | False | CppDependencyGlobalMembers.g_aliasString |
g_lang | SrcLangExt | False | CppDependencyGlobalMembers.g_lang |
yy_current_buffer | yy_buffer_state | False | CppDependencyGlobalMembers.yy_current_buffer |
yyFileName | QCString | False | CppDependencyGlobalMembers.yyFileName |
tmpString | QCString | False | CppDependencyGlobalMembers.tmpString |
s | QCString | False | CppDependencyGlobalMembers.s |
l | QStrList | False | CppDependencyGlobalMembers.l |
elemStr | QCString | False | CppDependencyGlobalMembers.elemStr |
includeName | QCString | False | CppDependencyGlobalMembers.includeName |
includePathList | QStrList | False | CppDependencyGlobalMembers.includePathList |
includeStack | QStack<type> | False | CppDependencyGlobalMembers.includeStack |
tabSizeString | QCString | False | CppDependencyGlobalMembers.tabSizeString |
maxInitLinesString | QCString | False | CppDependencyGlobalMembers.maxInitLinesString |
colsInAlphaIndexString | QCString | False | CppDependencyGlobalMembers.colsInAlphaIndexString |
enumValuesPerLineString | QCString | False | CppDependencyGlobalMembers.enumValuesPerLineString |
treeViewWidthString | QCString | False | CppDependencyGlobalMembers.treeViewWidthString |
maxDotGraphWidthString | QCString | False | CppDependencyGlobalMembers.maxDotGraphWidthString |
maxDotGraphHeightString | QCString | False | CppDependencyGlobalMembers.maxDotGraphHeightString |
encoding | QCString | False | CppDependencyGlobalMembers.encoding |
config | Config | False | CppDependencyGlobalMembers.config |
s_labels | LabelMap | False | CppDependencyGlobalMembers.s_labels |
yy_current_buffer | yy_buffer_state | False | CppDependencyGlobalMembers.yy_current_buffer |
scope | QCString | False | CppDependencyGlobalMembers.scope |
className | QCString | False | CppDependencyGlobalMembers.className |
classTempList | QCString | False | CppDependencyGlobalMembers.classTempList |
funcTempList | QCString | False | CppDependencyGlobalMembers.funcTempList |
type | QCString | False | CppDependencyGlobalMembers.type |
name | QCString | False | CppDependencyGlobalMembers.name |
args | QCString | False | CppDependencyGlobalMembers.args |
tmpType | QCString | False | CppDependencyGlobalMembers.tmpType |
exceptionString | QCString | False | CppDependencyGlobalMembers.exceptionString |
yy_current_buffer | yy_buffer_state | False | CppDependencyGlobalMembers.yy_current_buffer |
g_argList | ArgumentList | False | CppDependencyGlobalMembers.g_argList |
g_copyArgValue | QCString | False | CppDependencyGlobalMembers.g_copyArgValue |
g_curArgTypeName | QCString | False | CppDependencyGlobalMembers.g_curArgTypeName |
g_curArgDefValue | QCString | False | CppDependencyGlobalMembers.g_curArgDefValue |
g_curArgName | QCString | False | CppDependencyGlobalMembers.g_curArgName |
g_curArgDocs | QCString | False | CppDependencyGlobalMembers.g_curArgDocs |
g_curArgAttrib | QCString | False | CppDependencyGlobalMembers.g_curArgAttrib |
g_curArgArray | QCString | False | CppDependencyGlobalMembers.g_curArgArray |
g_extraTypeChars | QCString | False | CppDependencyGlobalMembers.g_extraTypeChars |
yy_current_buffer | yy_buffer_state | False | CppDependencyGlobalMembers.yy_current_buffer |
g_fileName | QString | False | CppDependencyGlobalMembers.g_fileName |
g_definition | Definition | False | CppDependencyGlobalMembers.g_definition |
g_secLabel | QCString | False | CppDependencyGlobalMembers.g_secLabel |
g_secTitle | QCString | False | CppDependencyGlobalMembers.g_secTitle |
g_secType | SectionInfo+SectionType | False | CppDependencyGlobalMembers.g_secType |
g_endMarker | QCString | False | CppDependencyGlobalMembers.g_endMarker |
g_lexerStack | QStack<type> | False | CppDependencyGlobalMembers.g_lexerStack |
classEntries | QDict<type> | False | CppDependencyGlobalMembers.classEntries |
excludeNameDict | StringDict | False | CppDependencyGlobalMembers.excludeNameDict |
compoundKeywordDict | QDict<type> | False | CppDependencyGlobalMembers.compoundKeywordDict |
outputList | OutputList | False | CppDependencyGlobalMembers.outputList |
g_usingDeclarations | QDict<type> | False | CppDependencyGlobalMembers.g_usingDeclarations |
g_stlinfo | STLInfo | False | CppDependencyGlobalMembers.g_stlinfo |
g_memberIndexLetterUsed | MemberIndexList | False | CppDependencyGlobalMembers.g_memberIndexLetterUsed |
g_fileIndexLetterUsed | MemberIndexList | False | CppDependencyGlobalMembers.g_fileIndexLetterUsed |
g_namespaceIndexLetterUsed | MemberIndexList | False | CppDependencyGlobalMembers.g_namespaceIndexLetterUsed |
outputFormat | QCString | False | CppDependencyGlobalMembers.outputFormat |
yy_current_buffer | yy_buffer_state | False | CppDependencyGlobalMembers.yy_current_buffer |
g_yyFileName | QCString | False | CppDependencyGlobalMembers.g_yyFileName |
Statistics
Stat | mutableFieldType | isFieldImmutable |
---|---|---|
Sum: | 0 | 0 |
Average: | 0 | 0 |
Minimum: | 0 | 0 |
Maximum: | 0 | 0 |
Standard deviation: | 0 | 0 |
Variance: | 0 | 0 |
Naming Conventions |
|
|
Rule warning: Instance fields should be prefixed with a 'm_' |
// <Name>Instance fields should be prefixed with a 'm_'</Name>
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
select new { f }).Take(10)
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
select new { f }).Take(10)
10 fields matched
fields | Full Name |
---|---|
fields | Full Name |
tm_sec | tm.tm_sec |
tm_min | tm.tm_min |
tm_hour | tm.tm_hour |
tm_mday | tm.tm_mday |
tm_mon | tm.tm_mon |
tm_year | tm.tm_year |
wYear | _SYSTEMTIME.wYear |
wMonth | _SYSTEMTIME.wMonth |
wDay | _SYSTEMTIME.wDay |
wHour | _SYSTEMTIME.wHour |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Rule warning: Static fields should be prefixed with a 's_' |
// <Name>Static fields should be prefixed with a 's_'</Name>
warnif count > 0 (from f in Fields where
!f.NameLike (@"^s_") &&
f.IsStatic
select new { f }).Take(10)
// Don't hesitate to customize the regex of NameLike to your preference.
warnif count > 0 (from f in Fields where
!f.NameLike (@"^s_") &&
f.IsStatic
select new { f }).Take(10)
// Don't hesitate to customize the regex of NameLike to your preference.
10 fields matched
fields | Full Name |
---|---|
fields | Full Name |
systemWordSize | qtoolsGlobalMembers.systemWordSize |
systemBigEndian | qtoolsGlobalMembers.systemBigEndian |
DefaultStreamVersion | qtoolsGlobalMembers.DefaultStreamVersion |
FIRST_DAY | qtoolsGlobalMembers.FIRST_DAY |
FIRST_YEAR | qtoolsGlobalMembers.FIRST_YEAR |
SECS_PER_DAY | qtoolsGlobalMembers.SECS_PER_DAY |
MSECS_PER_DAY | qtoolsGlobalMembers.MSECS_PER_DAY |
SECS_PER_HOUR | qtoolsGlobalMembers.SECS_PER_HOUR |
MSECS_PER_HOUR | qtoolsGlobalMembers.MSECS_PER_HOUR |
SECS_PER_MIN | qtoolsGlobalMembers.SECS_PER_MIN |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Rule warning: Types name should begin with an Upper character |
// <Name>Types name should begin with an Upper character</Name>
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)
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)
9 types matched
types | # lines of code (LOC) | Full Name |
---|---|---|
types | # lines of code (LOC) | Full Name |
yy_buffer_state | 0 | yy_buffer_state |
yy_buffer_state | 0 | yy_buffer_state |
yy_buffer_state | 0 | yy_buffer_state |
yy_buffer_state | 0 | yy_buffer_state |
yy_buffer_state | 0 | yy_buffer_state |
yy_buffer_state | 0 | yy_buffer_state |
yy_buffer_state | 0 | yy_buffer_state |
yy_buffer_state | 0 | yy_buffer_state |
yy_buffer_state | 0 | yy_buffer_state |
Statistics
Stat | # lines of code (LOC) |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
Rule warning: Avoid methods with name too long |
// <Name>Avoid methods with name too long</Name>
warnif count > 0 from m in Application.Methods where
!m.IsGeneratedByCompiler
&& m.SimpleName.Length > 35
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).
warnif count > 0 from m in Application.Methods where
!m.IsGeneratedByCompiler
&& m.SimpleName.Length > 35
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).
22 methods matched
methods | SimpleName | Full Name |
---|---|---|
methods | SimpleName | Full Name |
doctokenizerYYsetStateTitleAttrValue() | doctokenizerYYsetStateTitleAttrValue | CppDependencyGlobalMembers.doctokenizerYYsetStateTitleAttrValue() |
transferRelatedFunctionDocumentation() | transferRelatedFunctionDocumentation | CppDependencyGlobalMembers.transferRelatedFunctionDocumentation() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | Translator.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorDecoder.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorEnglish.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorAdapter_1_5_4.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorDutch.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorCzech.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorItalian.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorGerman.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorSpanish.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorFinnish.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorRussian.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorCroatian.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorKorean.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorChinese.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorChinesetraditional.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorBrazilian.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorSerbian.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorCatalan.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorPersian.trMemberFunctionDocumentationFortran() |
trMemberFunctionDocumentationFortran() | trMemberFunctionDocumentationFortran | TranslatorMacedonian.trMemberFunctionDocumentationFortran() |
Statistics
Stat | SimpleName |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
Source Files Organization |
|
|
Rule warning: Avoid defining multiple types in a source file |
// <Name>Avoid defining multiple types in a source file</Name>
warnif count > 0
// Build a lookup indexed by source files, values being a sequence of types defined in the source file.
let lookup = Application.Types.Where(t =>
!t.IsGlobal &&
// except nested types and types generated by compilers!
!t.IsGeneratedByCompiler &&
!t.IsNested)
// It could make sense to not apply this rule for enumerations.
// && !t.IsEnumeration)
// We use multi-key, since a type can be declared in multiple source files.
.ToMultiKeyLookup(t => t.SourceDecls.Select(d => d.SourceFile))
from @group in lookup where @group.Count() > 1
let sourceFile = @group.Key
// CQLinq doesn't let indexing result with sourceFile
// so we choose a typeIndex in types,
// preferably the type that has the file name.
let typeWithSourceFileName = @group.FirstOrDefault(t => t.SimpleName == sourceFile.FileNameWithoutExtension)
let typeIndex = typeWithSourceFileName ?? @group.First()
select new { typeIndex,
types = @group as IEnumerable<IType>,
sourceFile.FilePathString }
warnif count > 0
// Build a lookup indexed by source files, values being a sequence of types defined in the source file.
let lookup = Application.Types.Where(t =>
!t.IsGlobal &&
// except nested types and types generated by compilers!
!t.IsGeneratedByCompiler &&
!t.IsNested)
// It could make sense to not apply this rule for enumerations.
// && !t.IsEnumeration)
// We use multi-key, since a type can be declared in multiple source files.
.ToMultiKeyLookup(t => t.SourceDecls.Select(d => d.SourceFile))
from @group in lookup where @group.Count() > 1
let sourceFile = @group.Key
// CQLinq doesn't let indexing result with sourceFile
// so we choose a typeIndex in types,
// preferably the type that has the file name.
let typeWithSourceFileName = @group.FirstOrDefault(t => t.SimpleName == sourceFile.FileNameWithoutExtension)
let typeIndex = typeWithSourceFileName ?? @group.First()
select new { typeIndex,
types = @group as IEnumerable<IType>,
sourceFile.FilePathString }
61 types matched
types | types | FilePathString | Full Name |
---|---|---|---|
types | types | FilePathString | Full Name |
QChar | 5 types | c:\doxygen-1.5.7.3\qtools\qstring.h | QChar |
QDate | 3 types | c:\doxygen-1.5.7.3\qtools\qdatetime.h | QDate |
QLNode | 3 types | c:\doxygen-1.5.7.3\qtools\qglist.h | QLNode |
QList<type> | 2 types | c:\doxygen-1.5.7.3\qtools\qlist.h | QList<type> |
QStrList | 2 types | c:\doxygen-1.5.7.3\qtools\qstrlist.h | QStrList |
QDir | 2 types | c:\doxygen-1.5.7.3\qtools\qdir.h | QDir |
QValueListNode<T> | 5 types | c:\doxygen-1.5.7.3\qtools\qvaluelist.h | QValueListNode<T> |
QBaseBucket | 7 types | c:\doxygen-1.5.7.3\qtools\qgdict.h | QBaseBucket |
QGCache | 2 types | c:\doxygen-1.5.7.3\qtools\qgcache.h | QGCache |
QDict<type> | 2 types | c:\doxygen-1.5.7.3\qtools\qasciidict.h | QDict<type> |
QCacheItem | 4 types | c:\doxygen-1.5.7.3\qtools\qgcache.cpp | QCacheItem |
QMapNodeBase | 7 types | c:\doxygen-1.5.7.3\qtools\qmap.h | QMapNodeBase |
QTextEncoder | 3 types | c:\doxygen-1.5.7.3\qtools\qtextcodec.h | QTextEncoder |
QLigature | 2 types | c:\doxygen-1.5.7.3\qtools\qstring.cpp | QLigature |
QTextStream | 4 types | c:\doxygen-1.5.7.3\qtools\qtextstream.h | QTextStream |
QTextStatelessEncoder | 9 types | c:\doxygen-1.5.7.3\qtools\qtextcodec.cpp | QTextStatelessEncoder |
QTextStreamPrivate | 2 types | c:\doxygen-1.5.7.3\qtools\qtextstream.cpp | QTextStreamPrivate |
QUtf8Codec | 2 types | c:\doxygen-1.5.7.3\qtools\qutfcodec.h | QUtf8Codec |
QUtf8Decoder | 3 types | c:\doxygen-1.5.7.3\qtools\qutfcodec.cpp | QUtf8Decoder |
QXmlNamespaceSupport | 14 types | c:\doxygen-1.5.7.3\qtools\qxml.h | QXmlNamespaceSupport |
QXmlNamespaceSupportPrivate | 7 types | c:\doxygen-1.5.7.3\qtools\qxml.cpp | QXmlNamespaceSupportPrivate |
QCache<type> | 2 types | c:\doxygen-1.5.7.3\qtools\qcache.h | QCache<type> |
QIntDict<type> | 2 types | c:\doxygen-1.5.7.3\qtools\qintdict.h | QIntDict<type> |
QPtrDict<type> | 2 types | c:\doxygen-1.5.7.3\qtools\qptrdict.h | QPtrDict<type> |
QStrVec | 2 types | c:\doxygen-1.5.7.3\qtools\qstrvec.h | QStrVec |
MemberList | 4 types | c:\doxygen-1.5.7.3\src\memberlist.h | MemberList |
ClassDef | 7 types | c:\doxygen-1.5.7.3\src\classdef.h | ClassDef |
ClassList | 4 types | c:\doxygen-1.5.7.3\src\classlist.h | ClassList |
ConfigOption | 9 types | c:\doxygen-1.5.7.3\src\config.h | ConfigOption |
IncludeInfo | 7 types | c:\doxygen-1.5.7.3\src\filedef.h | IncludeInfo |
MemberName | 7 types | c:\doxygen-1.5.7.3\src\membername.h | MemberName |
FileName | 5 types | c:\doxygen-1.5.7.3\src\filename.h | FileName |
NamespaceDef | 5 types | c:\doxygen-1.5.7.3\src\namespacedef.h | NamespaceDef |
DirList | 7 types | c:\doxygen-1.5.7.3\src\dirdef.h | DirList |
EntryCache | 5 types | c:\doxygen-1.5.7.3\src\doxygen.h | EntryCache |
IndexIntf | 8 types | c:\doxygen-1.5.7.3\src\index.h | IndexIntf |
Protection | 11 types | c:\doxygen-1.5.7.3\src\entry.h | Protection |
LockableObj | 2 types | c:\doxygen-1.5.7.3\src\lockingptr.h | LockableObj |
DocInfo | 7 types | c:\doxygen-1.5.7.3\src\definition.h | DocInfo |
SList<T> | 4 types | c:\doxygen-1.5.7.3\src\sortdict.h | SList<T> |
SourceReference | 2 types | c:\doxygen-1.5.7.3\src\memberdef.h | SourceReference |
TextGeneratorIntf | 3 types | c:\doxygen-1.5.7.3\src\util.h | TextGeneratorIntf |
SectionInfo | 2 types | c:\doxygen-1.5.7.3\src\section.h | SectionInfo |
CodeOutputInterface | 4 types | c:\doxygen-1.5.7.3\src\outputgen.h | CodeOutputInterface |
CommandMap | 5 types | c:\doxygen-1.5.7.3\src\cmdmapper.h | CommandMap |
yy_buffer_state | 4 types | c:\doxygen-1.5.7.3\src\code.cpp | yy_buffer_state |
yy_buffer_state | 2 types | c:\doxygen-1.5.7.3\src\commentcnv.cpp | yy_buffer_state |
yy_buffer_state | 2 types | c:\doxygen-1.5.7.3\src\config.cpp | yy_buffer_state |
LabelMap | 2 types | c:\doxygen-1.5.7.3\src\debug.cpp | LabelMap |
Define | 5 types | c:\doxygen-1.5.7.3\src\define.h | Define |
ParserInterface | 2 types | c:\doxygen-1.5.7.3\src\parserintf.h | ParserInterface |
StorageIntf | 2 types | c:\doxygen-1.5.7.3\src\store.h | StorageIntf |
FileStorage | 2 types | c:\doxygen-1.5.7.3\src\marshal.h | FileStorage |
yy_buffer_state | 2 types | c:\doxygen-1.5.7.3\src\doctokenizer.cpp | yy_buffer_state |
Tokens | 2 types | c:\doxygen-1.5.7.3\src\doctokenizer.h | Tokens |
STLInfo | 2 types | c:\doxygen-1.5.7.3\src\doxygen.cpp | STLInfo |
MemberIndexList | 2 types | c:\doxygen-1.5.7.3\src\index.cpp | MemberIndexList |
TranslatorAdapterBase | 10 types | c:\doxygen-1.5.7.3\src\translator_adapter.h | TranslatorAdapterBase |
yy_buffer_state | 2 types | c:\doxygen-1.5.7.3\src\pre.cpp | yy_buffer_state |
TemplateCtx | 2 types | c:\doxygen-1.5.7.3\src\util.cpp | TemplateCtx |
XmlSectionMapper | 4 types | c:\doxygen-1.5.7.3\src\xmlgen.cpp | XmlSectionMapper |
Statistics
Stat | types | FilePathString |
---|---|---|
Sum: | 0 | 0 |
Average: | 0 | 0 |
Minimum: | 0 | 0 |
Maximum: | 0 | 0 |
Standard deviation: | 0 | 0 |
Variance: | 0 | 0 |
Rule warning: Types declared in the same namespace, should have their source files stored in the same directory |
// <Name>Types declared in the same namespace, should have their source files stored in the same directory</Name>
warnif count > 0
from @namespace in Application.Namespaces
// Group types of @namespace in a lookup
// where groups are keyed with directories that contain the types' source file(s).
// Note that a type can be contained in several groups
// if it is declared in several source files stored in different directories.
let lookup = @namespace.ChildTypes.Where(t => !t.IsGlobal && JustMyCode.Contains(t))
.ToMultiKeyLookup(
t => t.SourceDecls.Select(
decl => decl.SourceFile.FilePath.ParentDirectoryPath).Distinct()
)
// Are types of @namespaces declared in more than one directory?
where lookup.Count > 1
// Infer the main directory, preferably the one that has the same name as the namespace.
let dirs = lookup.Select(types => types.Key)
let mainDirNullable = dirs.Where(d => d.DirectoryName == @namespace.SimpleName).FirstOrDefault()
let mainDir = mainDirNullable ?? dirs.First()
// Types declared out of mainDir, are types in group of types declared in a directory different than mainDir!
let typesDeclaredOutOfMainDir = lookup.Where(types => types.Key != mainDir)
.SelectMany(types => types)
// Filter types declared on several source files that contain generated methods
// because typically such type contains one or several partial definitions generated.
// These partially generated types would be false positive for the present rule.
.Where(t => t.SourceDecls.Count() == 1 ||
t.Methods.Count(m => JustMyCode.Contains(m)) == 0)
where typesDeclaredOutOfMainDir.Count() > 0
select new { @namespace,
// Typically a type in typesDeclaredOutOfMainDir ...
// 1) ... is contained in the wrong namespace but its source file(s) is stored in the right directory.
// --> In such situation the type parent namespace should be the namespace corresponding to the directory.
// 2) ... is contained in the right namespace but its source file(s) is stored in the wrong directory
// --> In such situation the type source file should be moved to mainDir.
// 3) ... is declared in multiple source files, stored in different directories.
// --> It would be preferable that all source files are stored in a single directory.
typesDeclaredOutOfMainDir ,
mainDir = mainDir.ToString() }
warnif count > 0
from @namespace in Application.Namespaces
// Group types of @namespace in a lookup
// where groups are keyed with directories that contain the types' source file(s).
// Note that a type can be contained in several groups
// if it is declared in several source files stored in different directories.
let lookup = @namespace.ChildTypes.Where(t => !t.IsGlobal && JustMyCode.Contains(t))
.ToMultiKeyLookup(
t => t.SourceDecls.Select(
decl => decl.SourceFile.FilePath.ParentDirectoryPath).Distinct()
)
// Are types of @namespaces declared in more than one directory?
where lookup.Count > 1
// Infer the main directory, preferably the one that has the same name as the namespace.
let dirs = lookup.Select(types => types.Key)
let mainDirNullable = dirs.Where(d => d.DirectoryName == @namespace.SimpleName).FirstOrDefault()
let mainDir = mainDirNullable ?? dirs.First()
// Types declared out of mainDir, are types in group of types declared in a directory different than mainDir!
let typesDeclaredOutOfMainDir = lookup.Where(types => types.Key != mainDir)
.SelectMany(types => types)
// Filter types declared on several source files that contain generated methods
// because typically such type contains one or several partial definitions generated.
// These partially generated types would be false positive for the present rule.
.Where(t => t.SourceDecls.Count() == 1 ||
t.Methods.Count(m => JustMyCode.Contains(m)) == 0)
where typesDeclaredOutOfMainDir.Count() > 0
select new { @namespace,
// Typically a type in typesDeclaredOutOfMainDir ...
// 1) ... is contained in the wrong namespace but its source file(s) is stored in the right directory.
// --> In such situation the type parent namespace should be the namespace corresponding to the directory.
// 2) ... is contained in the right namespace but its source file(s) is stored in the wrong directory
// --> In such situation the type source file should be moved to mainDir.
// 3) ... is declared in multiple source files, stored in different directories.
// --> It would be preferable that all source files are stored in a single directory.
typesDeclaredOutOfMainDir ,
mainDir = mainDir.ToString() }
1 namespaces matched
namespace | typesDeclaredOutOfMainDir | mainDir | Full Name |
---|---|---|---|
namespace | typesDeclaredOutOfMainDir | mainDir | Full Name |
1 type | c:\doxygen-1.5.7.3\src |
Statistics
Stat | typesDeclaredOutOfMainDir | mainDir |
---|---|---|
Sum: | 0 | 0 |
Average: | 0 | 0 |
Minimum: | 0 | 0 |
Maximum: | 0 | 0 |
Standard deviation: | 0 | 0 |
Variance: | 0 | 0 |
Object Oriented Design
Base class should not use derivatives
// <Name>Base class should not use derivatives</Name>
warnif count > 0
from baseClass in JustMyCode.Types
where baseClass.IsClass && baseClass.NbChildren > 0 // <-- for optimization!
let derivedClassesUsed = baseClass.DerivedTypes.UsedBy(baseClass)
where derivedClassesUsed.Count() > 0
select new { baseClass, derivedClassesUsed }
warnif count > 0
from baseClass in JustMyCode.Types
where baseClass.IsClass && baseClass.NbChildren > 0 // <-- for optimization!
let derivedClassesUsed = baseClass.DerivedTypes.UsedBy(baseClass)
where derivedClassesUsed.Count() > 0
select new { baseClass, derivedClassesUsed }
2 types matched
types | derivedClassesUsed | Full Name |
---|---|---|
types | derivedClassesUsed | Full Name |
QTextCodec | 2 types | QTextCodec |
Definition | 2 types | Definition |
Statistics
Stat | derivedClassesUsed |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
Class shouldn't be too deep in inheritance tree
// <Name>Class shouldn't be too deep in inheritance tree</Name>
warnif count > 0 from t in JustMyCode.Types
where t.IsClass
let baseClasses = t.BaseClasses.ExceptThirdParty()
// Warn for classes with 3 or more base classes.
// Notice that we don't count third-party classes
// because this rule concerns your code design,
// not third-party libraries consumed design.
where baseClasses.Count() >= 3
select new { t, baseClasses,
// The metric value DepthOfInheritance takes account
// of third-party base classes
t.DepthOfInheritance }
// Branches too long in the derivation should be avoided.
// See the definition of the DepthOfInheritance metric here
// http://www.cppdepend.com/Metrics.aspx#DIT
warnif count > 0 from t in JustMyCode.Types
where t.IsClass
let baseClasses = t.BaseClasses.ExceptThirdParty()
// Warn for classes with 3 or more base classes.
// Notice that we don't count third-party classes
// because this rule concerns your code design,
// not third-party libraries consumed design.
where baseClasses.Count() >= 3
select new { t, baseClasses,
// The metric value DepthOfInheritance takes account
// of third-party base classes
t.DepthOfInheritance }
// Branches too long in the derivation should be avoided.
// See the definition of the DepthOfInheritance metric here
// http://www.cppdepend.com/Metrics.aspx#DIT
70 types matched
types | baseClasses | Depth of inheritance | Full Name |
---|---|---|---|
types | baseClasses | Depth of inheritance | Full Name |
QStrList | 3 types | 3 | QStrList |
QStrIList | 4 types | 4 | QStrIList |
QCList | 3 types | 3 | QCList |
QGDItList | 3 types | 3 | QGDItList |
QXmlDefaultHandler | 6 types | 1 | QXmlDefaultHandler |
QSortedList<type> | 3 types | 3 | QSortedList<type> |
QStrVec | 3 types | 3 | QStrVec |
QStrIVec | 4 types | 4 | QStrIVec |
MemberList | 3 types | 3 | MemberList |
MemberDict | 3 types | 3 | MemberDict |
ClassDef | 3 types | 2 | ClassDef |
UsesClassDict | 3 types | 3 | UsesClassDict |
BaseClassList | 3 types | 3 | BaseClassList |
ClassList | 3 types | 3 | ClassList |
ClassDict | 3 types | 3 | ClassDict |
FileDef | 3 types | 2 | FileDef |
FileList | 3 types | 3 | FileList |
OutputNameList | 3 types | 3 | OutputNameList |
OutputNameDict | 3 types | 3 | OutputNameDict |
MemberName | 3 types | 3 | MemberName |
MemberNameInfo | 3 types | 3 | MemberNameInfo |
FileName | 4 types | 4 | FileName |
FileNameList | 3 types | 3 | FileNameList |
FileNameDict | 3 types | 3 | FileNameDict |
NamespaceDef | 3 types | 2 | NamespaceDef |
NamespaceList | 3 types | 3 | NamespaceList |
NamespaceDict | 3 types | 3 | NamespaceDict |
DirList | 3 types | 3 | DirList |
DirDef | 3 types | 2 | DirDef |
StringDict | 3 types | 3 | StringDict |
ArgumentList | 3 types | 3 | ArgumentList |
DefinitionList | 4 types | 3 | DefinitionList |
SList<T> | 3 types | 3 | SList<T> |
SIntList<T> | 3 types | 3 | SIntList<T> |
MemberDef | 3 types | 2 | MemberDef |
SectionDict | 3 types | 3 | SectionDict |
OutputList | 3 types | 3 | OutputList |
DefineList | 3 types | 3 | DefineList |
DefineName | 3 types | 3 | DefineName |
DefineNameList | 3 types | 3 | DefineNameList |
FileStorage | 3 types | 2 | FileStorage |
MemberIndexList | 3 types | 3 | MemberIndexList |
PrefixIgnoreClassList | 4 types | 4 | PrefixIgnoreClassList |
TranslatorAdapter_1_4_6 | 3 types | 3 | TranslatorAdapter_1_4_6 |
TranslatorAdapter_1_4_1 | 4 types | 4 | TranslatorAdapter_1_4_1 |
TranslatorAdapter_1_3_9 | 5 types | 5 | TranslatorAdapter_1_3_9 |
TranslatorAdapter_1_3_8 | 6 types | 6 | TranslatorAdapter_1_3_8 |
TranslatorAdapter_1_3_3 | 7 types | 7 | TranslatorAdapter_1_3_3 |
TranslatorAdapter_1_3_1 | 8 types | 8 | TranslatorAdapter_1_3_1 |
TranslatorAdapter_1_3 | 9 types | 9 | TranslatorAdapter_1_3 |
TranslatorAdapter_1_2_18 | 10 types | 10 | TranslatorAdapter_1_2_18 |
TranslatorSwedish | 4 types | 4 | TranslatorSwedish |
TranslatorFrench | 3 types | 3 | TranslatorFrench |
TranslatorIndonesian | 4 types | 4 | TranslatorIndonesian |
TranslatorJapanese | 3 types | 3 | TranslatorJapanese |
TranslatorSpanish | 3 types | 3 | TranslatorSpanish |
TranslatorPolish | 4 types | 4 | TranslatorPolish |
TranslatorPortuguese | 8 types | 8 | TranslatorPortuguese |
TranslatorHungarian | 4 types | 4 | TranslatorHungarian |
TranslatorRomanian | 5 types | 5 | TranslatorRomanian |
TranslatorSlovene | 4 types | 4 | TranslatorSlovene |
TranslatorNorwegian | 4 types | 4 | TranslatorNorwegian |
TranslatorDanish | 3 types | 3 | TranslatorDanish |
TranslatorSlovak | 11 types | 11 | TranslatorSlovak |
TranslatorUkrainian | 5 types | 5 | TranslatorUkrainian |
TranslatorGreek | 3 types | 3 | TranslatorGreek |
TranslatorLithuanian | 4 types | 4 | TranslatorLithuanian |
TranslatorAfrikaans | 4 types | 4 | TranslatorAfrikaans |
TranslatorArabic | 4 types | 4 | TranslatorArabic |
XmlSectionMapper | 3 types | 3 | XmlSectionMapper |
Statistics
Stat | baseClasses | Depth of inheritance |
---|---|---|
Sum: | 0 | 260 |
Average: | 0 | 3.7143 |
Minimum: | 0 | 1 |
Maximum: | 0 | 11 |
Standard deviation: | 0 | 1.79 |
Variance: | 0 | 3.2041 |
Constructor should not call a virtual methods
// <Name>Constructor should not call a virtual methods</Name>
// Returns constructor of a non-sealed type calling virtual methods.
// In such a situation, if a derived class overrides the method,
// then the override method will be called before the derived constructor.
// This makes the class fragile to derive from.
//
// Violations reported can be solved by re-designing object initialisation
// or by marking the parent class as sealed, if possible.
warnif count > 0
from t in Application.Types where
t.IsClass &&
!t.IsGeneratedByCompiler
from ctor in t.Constructors
let virtualMethodsCalled = from mCalled in ctor.MethodsCalled
where mCalled.IsVirtual &&
(mCalled.ParentType == t ||
t.DeriveFrom(mCalled.ParentType))
select mCalled
where virtualMethodsCalled.Count() > 0
select new { ctor ,
virtualMethodsCalled,
// If there is no derived type, it might be
// an opportunity to mark t as sealed.
t.DerivedTypes }
// Returns constructor of a non-sealed type calling virtual methods.
// In such a situation, if a derived class overrides the method,
// then the override method will be called before the derived constructor.
// This makes the class fragile to derive from.
//
// Violations reported can be solved by re-designing object initialisation
// or by marking the parent class as sealed, if possible.
warnif count > 0
from t in Application.Types where
t.IsClass &&
!t.IsGeneratedByCompiler
from ctor in t.Constructors
let virtualMethodsCalled = from mCalled in ctor.MethodsCalled
where mCalled.IsVirtual &&
(mCalled.ParentType == t ||
t.DeriveFrom(mCalled.ParentType))
select mCalled
where virtualMethodsCalled.Count() > 0
select new { ctor ,
virtualMethodsCalled,
// If there is no derived type, it might be
// an opportunity to mark t as sealed.
t.DerivedTypes }
8 methods matched
methods | virtualMethodsCalled | DerivedTypes | Full Name |
---|---|---|---|
methods | virtualMethodsCalled | DerivedTypes | Full Name |
QGArray() | 1 method | 1 type | QGArray.QGArray() |
QGArray(int) | 1 method | 1 type | QGArray.QGArray(int) |
QFileInfo(constQDir&,constQString&) | 1 method | 0 type | QFileInfo.QFileInfo(constQDir&,constQString&) |
QGVector(constQGVector&) | 1 method | 3 types | QGVector.QGVector(constQGVector&) |
QTextCodecFromIOD(QIODevice*) | 1 method | 0 type | QTextCodecFromIOD.QTextCodecFromIOD(QIODevice*) |
QXmlInputSource(QTextStream&) | 2 methods | 0 type | QXmlInputSource.QXmlInputSource(QTextStream&) |
LockingPtr<T>(constLockableObj*,constT*) | 1 method | 0 type | LockingPtr<T>.LockingPtr<T>(constLockableObj*,constT*) |
TranslatorDecoder(Translator*) | 1 method | 0 type | TranslatorDecoder.TranslatorDecoder(Translator*) |
Statistics
Stat | virtualMethodsCalled | DerivedTypes |
---|---|---|
Sum: | 0 | 0 |
Average: | 0 | 0 |
Minimum: | 0 | 0 |
Maximum: | 0 | 0 |
Standard deviation: | 0 | 0 |
Variance: | 0 | 0 |
Avoid the Singleton pattern
//<Name>Avoid the Singleton pattern</Name>
warnif count > 0
from t in Application.Types
where !t.IsStatic && !t.IsAbstract && (t.IsClass || t.IsStructure)
// All ctors of a singleton are private
where t.Constructors.Where(ctor => !ctor.IsPrivate).Count() == 0
// A singleton contains one static field of its parent type, to reference the unique instance
let staticFieldInstances = t.StaticFields.WithFieldType(t)
where staticFieldInstances.Count() == 1
select new { t, staticFieldInstance = staticFieldInstances.First() }
// The Singleton pattern consists in syntactically enforcing that a class
// has just one unique instance.
// At first glance, this pattern looks appealing and it is widely used.
// However, we discourage you from using singleton classes because experience
// shows that singletons often result in less testable and less maintainable code.
// More details available in these discussions:
// http://codebetter.com/patricksmacchia/2011/05/04/back-to-basics-usage-of-static-members/
// http://adamschepis.com/blog/2011/05/02/im-adam-and-im-a-recovering-singleton-addict/
warnif count > 0
from t in Application.Types
where !t.IsStatic && !t.IsAbstract && (t.IsClass || t.IsStructure)
// All ctors of a singleton are private
where t.Constructors.Where(ctor => !ctor.IsPrivate).Count() == 0
// A singleton contains one static field of its parent type, to reference the unique instance
let staticFieldInstances = t.StaticFields.WithFieldType(t)
where staticFieldInstances.Count() == 1
select new { t, staticFieldInstance = staticFieldInstances.First() }
// The Singleton pattern consists in syntactically enforcing that a class
// has just one unique instance.
// At first glance, this pattern looks appealing and it is widely used.
// However, we discourage you from using singleton classes because experience
// shows that singletons often result in less testable and less maintainable code.
// More details available in these discussions:
// http://codebetter.com/patricksmacchia/2011/05/04/back-to-basics-usage-of-static-members/
// http://adamschepis.com/blog/2011/05/02/im-adam-and-im-a-recovering-singleton-addict/
No types matched
Don't assign static fields from instance methods
// <Name>Don't assign static fields from instance methods</Name>
// Assigning static fields from instance methods leads to
// poorly maintainable and non thread-safe code.
// It is advised to assign static fields inline or from class constructor.
warnif count > 0
from f in Application.Fields where
f.IsStatic &&
!f.IsGeneratedByCompiler && !f.IsGlobal
let assignedBy = f.MethodsAssigningMe.Where(m => !m.IsStatic)
where assignedBy .Count() > 0
select new { f, assignedBy }
// Assigning static fields from instance methods leads to
// poorly maintainable and non thread-safe code.
// It is advised to assign static fields inline or from class constructor.
warnif count > 0
from f in Application.Fields where
f.IsStatic &&
!f.IsGeneratedByCompiler && !f.IsGlobal
let assignedBy = f.MethodsAssigningMe.Where(m => !m.IsStatic)
where assignedBy .Count() > 0
select new { f, assignedBy }
38 fields matched
fields | assignedBy | Full Name |
---|---|---|
fields | assignedBy | Full Name |
null | 1 method | QString.null |
shared_null | 2 methods | QString.shared_null |
floatfield | 1 method | QTextStream.floatfield |
classSDict | 2 methods | Doxygen.classSDict |
hiddenClasses | 1 method | Doxygen.hiddenClasses |
externalReferences | 2 methods | Doxygen.externalReferences |
externalmlist | 1 method | Doxygen.externalmlist |
externalinputFilesDict | 2 methods | Doxygen.externalinputFilesDict |
allinputFilesDict | 1 method | Doxygen.allinputFilesDict |
duplicateClasses | 1 method | Doxygen.duplicateClasses |
filesTogenerate | 1 method | Doxygen.filesTogenerate |
filesPreprocessed | 1 method | Doxygen.filesPreprocessed |
idlfiles | 1 method | Doxygen.idlfiles |
includeNameDict | 1 method | Doxygen.includeNameDict |
inputNameDict | 1 method | Doxygen.inputNameDict |
inputNameList | 2 methods | Doxygen.inputNameList |
memberNameSDict | 3 methods | Doxygen.memberNameSDict |
functionNameSDict | 3 methods | Doxygen.functionNameSDict |
namespaceSDict | 4 methods | Doxygen.namespaceSDict |
globalScope | 4 methods | Doxygen.globalScope |
htmlFileExtension | 1 method | Doxygen.htmlFileExtension |
parseSourcesNeeded | 1 method | Doxygen.parseSourcesNeeded |
symbolMap | 2 methods | Doxygen.symbolMap |
outputToWizard | 1 method | Doxygen.outputToWizard |
lookupCache | 1 method | Doxygen.lookupCache |
directories | 3 methods | Doxygen.directories |
parserManager | 1 method | Doxygen.parserManager |
suppressDocWarnings | 6 methods | Doxygen.suppressDocWarnings |
symbolCache | 1 method | Doxygen.symbolCache |
symbolStorage | 1 method | Doxygen.symbolStorage |
isPragma | 2 methods | Doxygen.isPragma |
fileDictionary | 1 method | Doxygen.fileDictionary |
fileIndex | 1 method | Doxygen.fileIndex |
CacheFilesDict | 1 method | Doxygen.CacheFilesDict |
StorageFilesDict | 1 method | Doxygen.StorageFilesDict |
Koi8RToWindows1251Tab | 1 method | Translator.Koi8RToWindows1251Tab |
Windows1251ToKoi8RTab | 1 method | Translator.Windows1251ToKoi8RTab |
misses | 1 method | ObjCache.misses |
Statistics
Stat | assignedBy |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
Avoid Abstract Classes with too many methods
// <Name>Avoid Abstract Classes with too many methods</Name>
// An abstract class should abstract a clear and well-defined concept.
// Such concept shoudln't be represented with too many methods and property getter.
warnif count > 0 from t in JustMyCode.Types where
t.IsAbstract
let methodsAndGetters = t.Methods
where methodsAndGetters.Count() > 10
select new { t, methodsAndGetters }
// An abstract class should abstract a clear and well-defined concept.
// Such concept shoudln't be represented with too many methods and property getter.
warnif count > 0 from t in JustMyCode.Types where
t.IsAbstract
let methodsAndGetters = t.Methods
where methodsAndGetters.Count() > 10
select new { t, methodsAndGetters }
10 types matched
types | methodsAndGetters | Full Name |
---|---|---|
types | methodsAndGetters | Full Name |
QIODevice | 41 methods | QIODevice |
QTextCodec | 26 methods | QTextCodec |
QXmlReader | 21 methods | QXmlReader |
QXmlContentHandler | 14 methods | QXmlContentHandler |
ConfigOption | 17 methods | ConfigOption |
Definition | 72 methods | Definition |
CodeOutputInterface | 13 methods | CodeOutputInterface |
BaseOutputDocInterface | 60 methods | BaseOutputDocInterface |
OutputGenerator | 110 methods | OutputGenerator |
Translator | 224 methods | Translator |
Statistics
Stat | methodsAndGetters |
---|---|
Sum: | 0 |
Average: | 0 |
Minimum: | 0 |
Maximum: | 0 |
Standard deviation: | 0 |
Variance: | 0 |
API Breaking Changes
|
API Breaking Changes: Types
// <Name>API Breaking Changes: Types</Name>
// 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()) }
// 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 types matched
API Breaking Changes: Methods
// <Name>API Breaking Changes: Methods</Name>
// 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()) }
// 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 methods matched
API Breaking Changes: Fields
// <Name>API Breaking Changes: Fields</Name>
// 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()) }
// 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 fields matched
API Breaking Changes: Interfaces and Abstract Classes
// <Name>API Breaking Changes: Interfaces and Abstract Classes</Name>
// 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 }
// 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 types matched
Avoid transforming immutable types into mutable types
// <Name>Avoid transforming immutable types into mutable types</Name>
// 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 }
// 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 types matched
API: New publicly visible types
// <Name>API: New publicly visible types</Name>
// List types that are new in the public surface of your Projects
from t in Application.Types
where t.IsPublic &&
// The type has been removed and its parent project hasn't been removed ...
( (t.WasAdded() && !t.ParentProject.WasAdded()) ||
// ... or the type existed but was not publicly visible
!t.WasAdded() && !t.OlderVersion().IsPublic)
select new { t,
OldVisibility = (t.WasAdded() ? " " : t.OlderVersion().Visibility.ToString()) }
// List types that are new in the public surface of your Projects
from t in Application.Types
where t.IsPublic &&
// The type has been removed and its parent project hasn't been removed ...
( (t.WasAdded() && !t.ParentProject.WasAdded()) ||
// ... or the type existed but was not publicly visible
!t.WasAdded() && !t.OlderVersion().IsPublic)
select new { t,
OldVisibility = (t.WasAdded() ? " " : t.OlderVersion().Visibility.ToString()) }
No types matched
API: New publicly visible methods
// <Name>API: New publicly visible methods</Name>
// List methods that are new in the public surface of your Projects
from m in Application.Methods
where m.IsPublic &&
// The method has been removed and its parent project hasn'm been removed ...
( (m.WasAdded() && !m.ParentType.WasAdded()) ||
// ... or the t existed but was not publicly visible
!m.WasAdded() && !m.OlderVersion().IsPublic)
select new { m,
OldVisibility = (m.WasAdded() ? " " : m.OlderVersion().Visibility.ToString()) }
// List methods that are new in the public surface of your Projects
from m in Application.Methods
where m.IsPublic &&
// The method has been removed and its parent project hasn'm been removed ...
( (m.WasAdded() && !m.ParentType.WasAdded()) ||
// ... or the t existed but was not publicly visible
!m.WasAdded() && !m.OlderVersion().IsPublic)
select new { m,
OldVisibility = (m.WasAdded() ? " " : m.OlderVersion().Visibility.ToString()) }
No methods matched
API: New publicly visible fields
// <Name>API: New publicly visible fields</Name>
// List fields that are new in the public surface of your Projects
from f in Application.Fields
where f.IsPublic &&
// The method has been removed and its parent project hasn'f been removed ...
( (f.WasAdded() && !f.ParentType.WasAdded()) ||
// ... or the t existed but was not publicly visible
!f.WasAdded() && !f.OlderVersion().IsPublic)
select new { f,
OldVisibility = (f.WasAdded() ? " " : f.OlderVersion().Visibility.ToString()) }
// List fields that are new in the public surface of your Projects
from f in Application.Fields
where f.IsPublic &&
// The method has been removed and its parent project hasn'f been removed ...
( (f.WasAdded() && !f.ParentType.WasAdded()) ||
// ... or the t existed but was not publicly visible
!f.WasAdded() && !f.OlderVersion().IsPublic)
select new { f,
OldVisibility = (f.WasAdded() ? " " : f.OlderVersion().Visibility.ToString()) }
No fields matched
Code Diff Summary
|
New Projects
// <Name>New Projects</Name>
from a in Application.Projects where a.WasAdded()
select new { a, a.NbLinesOfCode }
from a in Application.Projects where a.WasAdded()
select new { a, a.NbLinesOfCode }
No projects matched
Projects removed
// <Name>Projects removed</Name>
from a in codeBase.OlderVersion().Application.Projects where a.WasRemoved()
select new { a, a.NbLinesOfCode }
from a in codeBase.OlderVersion().Application.Projects where a.WasRemoved()
select new { a, a.NbLinesOfCode }
No projects matched
Projects where code was changed
// <Name>Projects where code was changed</Name>
from a in Application.Projects where a.CodeWasChanged()
select new { a, a.NbLinesOfCode,
oldNbLinesOfCode = a.OlderVersion().NbLinesOfCode ,
delta = (int) a.NbLinesOfCode - a.OlderVersion().NbLinesOfCode }
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 projects matched
New namespaces
// <Name>New namespaces</Name>
from n in Application.Namespaces where
!n.ParentProject.WasAdded() &&
n.WasAdded()
select new { n, n.NbLinesOfCode }
from n in Application.Namespaces where
!n.ParentProject.WasAdded() &&
n.WasAdded()
select new { n, n.NbLinesOfCode }
No namespaces matched
Namespaces removed
// <Name>Namespaces removed</Name>
from n in codeBase.OlderVersion().Application.Namespaces where
!n.ParentProject.WasRemoved() &&
n.WasRemoved()
select new { n, n.NbLinesOfCode }
from n in codeBase.OlderVersion().Application.Namespaces where
!n.ParentProject.WasRemoved() &&
n.WasRemoved()
select new { n, n.NbLinesOfCode }
No namespaces matched
Namespaces where code was changed
// <Name>Namespaces where code was changed</Name>
from n in Application.Namespaces where n.CodeWasChanged()
select new { n, n.NbLinesOfCode,
oldNbLinesOfCode = n.OlderVersion().NbLinesOfCode ,
delta = (int) n.NbLinesOfCode - n.OlderVersion().NbLinesOfCode }
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 namespaces matched
New types
// <Name>New types</Name>
from t in Application.Types where
!t.ParentNamespace.WasAdded() &&
t.WasAdded()
select new { t, t.NbLinesOfCode }
from t in Application.Types where
!t.ParentNamespace.WasAdded() &&
t.WasAdded()
select new { t, t.NbLinesOfCode }
No types matched
Types removed
// <Name>Types removed</Name>
from t in codeBase.OlderVersion().Application.Types where
!t.ParentNamespace.WasRemoved() &&
t.WasRemoved()
select new { t, t.NbLinesOfCode }
from t in codeBase.OlderVersion().Application.Types where
!t.ParentNamespace.WasRemoved() &&
t.WasRemoved()
select new { t, t.NbLinesOfCode }
No types matched
Types where code was changed
// <Name>Types where code was changed</Name>
// 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 }*/
// 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 types matched
Heuristic to find types moved from one namespace or project to another
// <Name>Heuristic to find types moved from one namespace or project to another</Name>
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
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 types matched
Types directly using one or several types changed
// <Name>Types directly using one or several types changed</Name>
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 }
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 types matched
Types indirectly using one or several types changed
// <Name>Types indirectly using one or several types changed</Name>
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 }
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 types matched
New methods
// <Name>New methods</Name>
from m in Application.Methods where
!m.ParentType.WasAdded() &&
m.WasAdded()
select new { m, m.NbLinesOfCode }
from m in Application.Methods where
!m.ParentType.WasAdded() &&
m.WasAdded()
select new { m, m.NbLinesOfCode }
No methods matched
Methods removed
// <Name>Methods removed</Name>
from m in codeBase.OlderVersion().Application.Methods where
!m.ParentType.WasRemoved() &&
m.WasRemoved()
select new { m, m.NbLinesOfCode }
from m in codeBase.OlderVersion().Application.Methods where
!m.ParentType.WasRemoved() &&
m.WasRemoved()
select new { m, m.NbLinesOfCode }
No methods matched
Methods where code was changed
// <Name>Methods where code was changed</Name>
// 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 }
// 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 methods matched
Methods directly calling one or several methods changed
// <Name>Methods directly calling one or several methods changed</Name>
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 }
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 methods matched
Methods indirectly calling one or several methods changed
// <Name>Methods indirectly calling one or several methods changed</Name>
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 }
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 methods matched
New fields
// <Name>New fields</Name>
from f in Application.Fields where
!f.ParentType.WasAdded() &&
f.WasAdded()
select new { f }
from f in Application.Fields where
!f.ParentType.WasAdded() &&
f.WasAdded()
select new { f }
No fields matched
Fields removed
// <Name>Fields removed</Name>
from f in codeBase.OlderVersion().Application.Fields where
!f.ParentType.WasRemoved() &&
f.WasRemoved()
select new { f }
from f in codeBase.OlderVersion().Application.Fields where
!f.ParentType.WasRemoved() &&
f.WasRemoved()
select new { f }
No fields matched
Third party types that were not used and that are now used
// <Name>Third party types that were not used and that are now used</Name>
from t in ThirdParty.Types where t.IsUsedRecently()
select new { t, t.Methods, t.Fields }
from t in ThirdParty.Types where t.IsUsedRecently()
select new { t, t.Methods, t.Fields }
No types matched
Third party types that were used and that are not used anymore
// <Name>Third party types that were used and that are not used anymore</Name>
from t in codeBase.OlderVersion().Types where t.IsNotUsedAnymore()
select new { t, t.Methods, t.Fields }
from t in codeBase.OlderVersion().Types where t.IsNotUsedAnymore()
select new { t, t.Methods, t.Fields }
No types matched
Third party methods that were not used and that are now used
// <Name>Third party methods that were not used and that are now used</Name>
from m in ThirdParty.Methods where
m.IsUsedRecently() &&
!m.ParentType.IsUsedRecently()
select m
from m in ThirdParty.Methods where
m.IsUsedRecently() &&
!m.ParentType.IsUsedRecently()
select m
No methods matched
Third party methods that were used and that are not used anymore
// <Name>Third party methods that were used and that are not used anymore</Name>
from m in codeBase.OlderVersion().Methods where
m.IsNotUsedAnymore() &&
!m.ParentType.IsNotUsedAnymore()
select m
from m in codeBase.OlderVersion().Methods where
m.IsNotUsedAnymore() &&
!m.ParentType.IsNotUsedAnymore()
select m
No methods matched
Third party fields that were not used and that are now used
// <Name>Third party fields that were not used and that are now used</Name>
from f in ThirdParty.Fields where
f.IsUsedRecently() &&
!f.ParentType.IsUsedRecently()
select f
from f in ThirdParty.Fields where
f.IsUsedRecently() &&
!f.ParentType.IsUsedRecently()
select f
No fields matched
Third party fields that were used and that are not used anymore
// <Name>Third party fields that were used and that are not used anymore</Name>
from f in codeBase.OlderVersion().Fields where
f.IsNotUsedAnymore() &&
!f.ParentType.IsNotUsedAnymore()
select f
from f in codeBase.OlderVersion().Fields where
f.IsNotUsedAnymore() &&
!f.ParentType.IsNotUsedAnymore()
select f
No fields matched
Dead Code
|
Potentially dead Types
// <Name>Potentially dead Types</Name>
warnif count > 0
let tt=Types.UsedByAny(Application.Methods)
// 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 }
warnif count > 0
let tt=Types.UsedByAny(Application.Methods)
// 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 }
120 types matched
The following list of types is truncated and contains only the first 100 types of the 120 types matched. All matched types could be listed in the report by unchecking the option:
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched types.
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched types.
types | Full Name |
---|---|
types | Full Name |
QConstString | QConstString |
QStrIList | QStrIList |
QFileInfo+PermissionSpec | QFileInfo+PermissionSpec |
QValueListPrivate<T> | QValueListPrivate<T> |
QMapPrivate<Key,T> | QMapPrivate<Key,T> |
QTextIStream | QTextIStream |
QTSManip | QTSManip |
QTextOStreamIterator<T> | QTextOStreamIterator<T> |
QSimpleTextCodec | QSimpleTextCodec |
QLatin1Codec | QLatin1Codec |
QUtf8Codec | QUtf8Codec |
QUtf16Codec | QUtf16Codec |
QXmlDefaultHandler | QXmlDefaultHandler |
QXmlNamespaceSupportPrivate | QXmlNamespaceSupportPrivate |
QXmlAttributesPrivate | QXmlAttributesPrivate |
QXmlInputSourcePrivate | QXmlInputSourcePrivate |
QXmlParseExceptionPrivate | QXmlParseExceptionPrivate |
QXmlLocatorPrivate | QXmlLocatorPrivate |
QXmlDefaultHandlerPrivate | QXmlDefaultHandlerPrivate |
QCacheIterator<type> | QCacheIterator<type> |
QIntDictIterator<type> | QIntDictIterator<type> |
QPtrDictIterator<type> | QPtrDictIterator<type> |
QQueue<type> | QQueue<type> |
QSortedList<type> | QSortedList<type> |
QStrIVec | QStrIVec |
SCString | SCString |
CPPValue | CPPValue |
MemberDict | MemberDict |
UsesClassDictIterator | UsesClassDictIterator |
ClassListIterator | ClassListIterator |
ClassDict | ClassDict |
OutputNameList | OutputNameList |
OutputNameDict | OutputNameDict |
Directory | Directory |
MemberNameIterator | MemberNameIterator |
MemberNameSDict | MemberNameSDict |
FileNameIterator | FileNameIterator |
FileNameListIterator | FileNameListIterator |
FileNameDict | FileNameDict |
NamespaceListIterator | NamespaceListIterator |
NamespaceDict | NamespaceDict |
DirRelation | DirRelation |
DirSDict | DirSDict |
EntryCache | EntryCache |
FileCache | FileCache |
StringDict | StringDict |
LookupInfo | LookupInfo |
IndexList | IndexList |
IndexSections | IndexSections |
ClassHighlight | ClassHighlight |
Entry+GroupDocType | Entry+GroupDocType |
DocInfo | DocInfo |
BriefInfo | BriefInfo |
DefinitionListIterator | DefinitionListIterator |
SList<T> | SList<T> |
SDict<T>+IteratorDict | SDict<T>+IteratorDict |
SIntList<T> | SIntList<T> |
SIntDict<T>+Iterator | SIntDict<T>+Iterator |
SourceReference | SourceReference |
TextGeneratorOLImpl | TextGeneratorOLImpl |
SectionDict | SectionDict |
Mapper | Mapper |
Mappers | Mappers |
MethodContext | MethodContext |
VariableContext | VariableContext |
CallContext | CallContext |
BufStr | BufStr |
CondCtx | CondCtx |
ConfigFileState | ConfigFileState |
LabelMapper | LabelMapper |
DefineList | DefineList |
DefineNameList | DefineNameList |
StreamStorage | StreamStorage |
DocLexerContext | DocLexerContext |
CLanguageScanner | CLanguageScanner |
MemberIndexList | MemberIndexList |
PrefixIgnoreClassList | PrefixIgnoreClassList |
TranslatorDecoder | TranslatorDecoder |
TranslatorDutch | TranslatorDutch |
TranslatorSwedish | TranslatorSwedish |
TranslatorCzech | TranslatorCzech |
TranslatorFrench | TranslatorFrench |
TranslatorIndonesian | TranslatorIndonesian |
TranslatorItalian | TranslatorItalian |
TranslatorGerman | TranslatorGerman |
TranslatorJapanese | TranslatorJapanese |
TranslatorJapaneseEn | TranslatorJapaneseEn |
TranslatorSpanish | TranslatorSpanish |
TranslatorFinnish | TranslatorFinnish |
TranslatorRussian | TranslatorRussian |
TranslatorCroatian | TranslatorCroatian |
TranslatorPolish | TranslatorPolish |
TranslatorPortuguese | TranslatorPortuguese |
TranslatorHungarian | TranslatorHungarian |
TranslatorKoreanEn | TranslatorKoreanEn |
TranslatorKorean | TranslatorKorean |
TranslatorRomanian | TranslatorRomanian |
TranslatorSlovene | TranslatorSlovene |
TranslatorChinese | TranslatorChinese |
TranslatorChinesetraditional | TranslatorChinesetraditional |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Potentially dead Methods
// <Name>Potentially dead Methods</Name>
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.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] }
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.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] }
144 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 144 methods matched. All matched methods could be listed in the report by unchecking the option:
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched methods.
CppDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a CQL Rule violated
It is recommended to use the CppDepend interactive UI capabilities to browse a large list of matched methods.
methods | MethodsCallingMe | depth | Full Name |
---|---|---|---|
methods | MethodsCallingMe | depth | Full Name |
operator=(constQGArray&) | 0 method | 0 | QGArray.operator=(constQGArray&) |
assign(constQGArray&) | 1 method | 1 | QGArray.assign(constQGArray&) |
assign(constchar*,uint) | 0 method | 0 | QGArray.assign(constchar*,uint) |
store(constchar*,uint) | 0 method | 0 | QGArray.store(constchar*,uint) |
sharedBlock() | 0 method | 0 | QGArray.sharedBlock() |
setSharedBlock(QGArray::array_data*) | 0 method | 0 | QGArray.setSharedBlock(QGArray::array_data*) |
setExpand(uint,constchar*,uint) | 0 method | 0 | QGArray.setExpand(uint,constchar*,uint) |
deleteItem(QCollection::Item) | 0 method | 0 | qtoolsGlobalMembers.deleteItem(QCollection::Item) |
deleteItem(Item) | 0 method | 0 | qtoolsGlobalMembers.deleteItem(Item) |
deleteItem(QCollection::Item) | 0 method | 0 | qtoolsGlobalMembers.deleteItem(QCollection::Item) |
deleteItem(QCollection::Item) | 0 method | 0 | qtoolsGlobalMembers.deleteItem(QCollection::Item) |
msg_index(uint) | 0 method | 0 | QCString.msg_index(uint) |
QIODevice(constQIODevice&) | 0 method | 0 | QIODevice.QIODevice(constQIODevice&) |
operator=(constQIODevice&) | 0 method | 0 | QIODevice.operator=(constQIODevice&) |
asciiToUnicode(constchar*,uint*,uint) | 0 method | 0 | QString.asciiToUnicode(constchar*,uint*,uint) |
asciiToUnicode(constQByteArray&,uint*) | 0 method | 0 | QString.asciiToUnicode(constQByteArray&,uint*) |
QBuffer(constQBuffer&) | 0 method | 0 | QBuffer.QBuffer(constQBuffer&) |
operator=(constQBuffer&) | 0 method | 0 | QBuffer.operator=(constQBuffer&) |
QDataStream(constQDataStream&) | 0 method | 0 | QDataStream.QDataStream(constQDataStream&) |
operator=(constQDataStream&) | 0 method | 0 | QDataStream.operator=(constQDataStream&) |
takeLast() | 0 method | 0 | QGList.takeLast() |
at(uint) | 0 method | 0 | QGList.at(uint) |
at() | 0 method | 0 | QGList.at() |
deleteItem(QCollection::Item) | 0 method | 0 | QList<type>.deleteItem(QCollection::Item) |
newItem(QCollection::Item) | 0 method | 0 | QStrList.newItem(QCollection::Item) |
deleteItem(QCollection::Item) | 0 method | 0 | QStrList.deleteItem(QCollection::Item) |
compareItems(QCollection::Item,QCollection::Item) | 0 method | 0 | QStrList.compareItems(QCollection::Item,QCollection::Item) |
read(QDataStream&,QCollection::Item&) | 0 method | 0 | QStrList.read(QDataStream&,QCollection::Item&) |
write(QDataStream&,QCollection::Item) | 0 method | 0 | QStrList.write(QDataStream&,QCollection::Item) |
compareItems(QCollection::Item,QCollection::Item) | 0 method | 0 | QStrIList.compareItems(QCollection::Item,QCollection::Item) |
QFile(constQFile&) | 0 method | 0 | QFile.QFile(constQFile&) |
operator=(constQFile&) | 0 method | 0 | QFile.operator=(constQFile&) |
matchstr(uint*,constchar*,uint,constchar*) | 0 method | 0 | QRegExp.matchstr(uint*,constchar*,uint,constchar*) |
insert_string(constQString&,QCollection::Item,int,int) | 0 method | 0 | QGCache.insert_string(constQString&,QCollection::Item,int,int) |
remove_string(constQString&) | 0 method | 0 | QGCache.remove_string(constQString&) |
take_string(constQString&) | 1 method | 1 | QGCache.take_string(constQString&) |
find_string(constQString&,bool) | 0 method | 0 | QGCache.find_string(constQString&,bool) |
~QGCacheIterator() | 0 method | 0 | QGCacheIterator.~QGCacheIterator() |
getKeyString() | 0 method | 0 | QGCacheIterator.getKeyString() |
getKeyInt() | 0 method | 0 | QGCacheIterator.getKeyInt() |
deleteItem(Item) | 0 method | 0 | QDict<type>.deleteItem(Item) |
insertExpand(uint,Item) | 0 method | 0 | QGVector.insertExpand(uint,Item) |
deleteItem(Item) | 0 method | 0 | QStack<type>.deleteItem(Item) |
QTextStream(constQTextStream&) | 0 method | 0 | QTextStream.QTextStream(constQTextStream&) |
operator=(constQTextStream&) | 0 method | 0 | QTextStream.operator=(constQTextStream&) |
QStringBuffer(constQStringBuffer&) | 0 method | 0 | QStringBuffer.QStringBuffer(constQStringBuffer&) |
operator=(constQStringBuffer&) | 0 method | 0 | QStringBuffer.operator=(constQStringBuffer&) |
nameAddC(constQChar&) | 0 method | 0 | QXmlSimpleReader.nameAddC(constQChar&) |
refAddC(constQChar&) | 0 method | 0 | QXmlSimpleReader.refAddC(constQChar&) |
deleteItem(Item) | 0 method | 0 | QCache<type>.deleteItem(Item) |
deleteItem(Item) | 0 method | 0 | QIntDict<type>.deleteItem(Item) |
deleteItem(Item) | 0 method | 0 | QPtrDict<type>.deleteItem(Item) |
deleteItem(Item) | 0 method | 0 | QQueue<type>.deleteItem(Item) |
deleteItem(Item) | 0 method | 0 | QVector<type>.deleteItem(Item) |
newItem(Item) | 0 method | 0 | QStrVec.newItem(Item) |
deleteItem(Item) | 0 method | 0 | QStrVec.deleteItem(Item) |
compareItems(Item,Item) | 0 method | 0 | QStrVec.compareItems(Item,Item) |
read(QDataStream&,Item&) | 0 method | 0 | QStrVec.read(QDataStream&,Item&) |
write(QDataStream&,Item) | 0 method | 0 | QStrVec.write(QDataStream&,Item) |
compareItems(Item,Item) | 0 method | 0 | QStrIVec.compareItems(Item,Item) |
msg_index(int) | 0 method | 0 | SCString.msg_index(int) |
duplicate(constSCString&) | 0 method | 0 | SCString.duplicate(constSCString&) |
duplicate(constchar*) | 1 method | 1 | SCString.duplicate(constchar*) |
duplicate(constchar*,int) | 0 method | 0 | SCString.duplicate(constchar*,int) |
addUsedInterfaceClasses(MemberDef*,constchar*) | 0 method | 0 | ClassDef.addUsedInterfaceClasses(MemberDef*,constchar*) |
showUsedFiles(OutputList&) | 0 method | 0 | ClassDef.showUsedFiles(OutputList&) |
writeMemberDeclarations(OutputList&,MemberList::ListType ,constQCString&,constchar*) | 0 method | 0 | ClassDef.writeMemberDeclarations(OutputList&,MemberList::ListType ,constQCString&,constchar*) |
writeMemberDocumentation(OutputList&,MemberList::ListType ,constQCString&) | 0 method | 0 | ClassDef.writeMemberDocumentation(OutputList&,MemberList::ListType ,constQCString&) |
writePlainMemberDeclaration(OutputList&,MemberList::ListType,bool) | 0 method | 0 | ClassDef.writePlainMemberDeclaration(OutputList&,MemberList::ListType ,bool) |
writeBriefDescription(OutputList&,bool) | 0 method | 0 | ClassDef.writeBriefDescription(OutputList&,bool) |
writeDetailedDescription(OutputList&,constQCString&,bool ,constQCString&) | 0 method | 0 | ClassDef.writeDetailedDescription(OutputList&,constQCString&,bool ,constQCString&) |
writeIncludeFiles(OutputList&) | 0 method | 0 | ClassDef.writeIncludeFiles(OutputList&) |
writeAllMembersLink(OutputList&) | 0 method | 0 | ClassDef.writeAllMembersLink(OutputList&) |
writeInheritanceGraph(OutputList&) | 0 method | 0 | ClassDef.writeInheritanceGraph(OutputList&) |
writeCollaborationGraph(OutputList&) | 0 method | 0 | ClassDef.writeCollaborationGraph(OutputList&) |
writeMemberGroups(OutputList&) | 0 method | 0 | ClassDef.writeMemberGroups(OutputList&) |
writeNestedClasses(OutputList&,constQCString&) | 0 method | 0 | ClassDef.writeNestedClasses(OutputList&,constQCString&) |
startMemberDeclarations(OutputList&) | 0 method | 0 | ClassDef.startMemberDeclarations(OutputList&) |
endMemberDeclarations(OutputList&) | 0 method | 0 | ClassDef.endMemberDeclarations(OutputList&) |
startMemberDocumentation(OutputList&) | 0 method | 0 | ClassDef.startMemberDocumentation(OutputList&) |
endMemberDocumentation(OutputList&) | 0 method | 0 | ClassDef.endMemberDocumentation(OutputList&) |
writeAuthorSection(OutputList&) | 0 method | 0 | ClassDef.writeAuthorSection(OutputList&) |
~Config() | 0 method | 0 | Config.~Config() |
writeMemberDeclarations(OutputList&,MemberList::ListType ,constQCString&) | 0 method | 0 | FileDef.writeMemberDeclarations(OutputList&,MemberList::ListType ,constQCString&) |
writeMemberDocumentation(OutputList&,MemberList::ListType ,constQCString&) | 0 method | 0 | FileDef.writeMemberDocumentation(OutputList&,MemberList::ListType ,constQCString&) |
writeIncludeFiles(OutputList&) | 0 method | 0 | FileDef.writeIncludeFiles(OutputList&) |
writeIncludeGraph(OutputList&) | 0 method | 0 | FileDef.writeIncludeGraph(OutputList&) |
writeIncludedByGraph(OutputList&) | 0 method | 0 | FileDef.writeIncludedByGraph(OutputList&) |
writeMemberGroups(OutputList&) | 0 method | 0 | FileDef.writeMemberGroups(OutputList&) |
writeAuthorSection(OutputList&) | 0 method | 0 | FileDef.writeAuthorSection(OutputList&) |
writeSourceLink(OutputList&) | 0 method | 0 | FileDef.writeSourceLink(OutputList&) |
writeNamespaceDeclarations(OutputList&,constQCString&) | 0 method | 0 | FileDef.writeNamespaceDeclarations(OutputList&,constQCString&) |
writeClassDeclarations(OutputList&,constQCString&) | 0 method | 0 | FileDef.writeClassDeclarations(OutputList&,constQCString&) |
startMemberDeclarations(OutputList&) | 0 method | 0 | FileDef.startMemberDeclarations(OutputList&) |
endMemberDeclarations(OutputList&) | 0 method | 0 | FileDef.endMemberDeclarations(OutputList&) |
startMemberDocumentation(OutputList&) | 0 method | 0 | FileDef.startMemberDocumentation(OutputList&) |
endMemberDocumentation(OutputList&) | 0 method | 0 | FileDef.endMemberDocumentation(OutputList&) |
writeDetailedDescription(OutputList&,constQCString&) | 0 method | 0 | FileDef.writeDetailedDescription(OutputList&,constQCString&) |
writeBriefDescription(OutputList&) | 0 method | 0 | FileDef.writeBriefDescription(OutputList&) |
writeMemberDeclarations(OutputList&,MemberList::ListType ,constQCString&) | 0 method | 0 | NamespaceDef.writeMemberDeclarations(OutputList&,MemberList::ListType ,constQCString&) |
Statistics
Stat | MethodsCallingMe | depth |
---|---|---|
Sum: | 0 | 3 |
Average: | 0 | 0.020833 |
Minimum: | 0 | 0 |
Maximum: | 0 | 1 |
Standard deviation: | 0 | 0.14283 |
Variance: | 0 | 0.020399 |
Potentially dead Fields
// <Name>Potentially dead Fields</Name>
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
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
11 fields matched
fields | Full Name |
---|---|
fields | Full Name |
d | QFile.d |
ungetcBuf | QTextStream.ungetcBuf |
reserved_ptr | QTextStream.reserved_ptr |
forwardIndex | QLatin1Codec.forwardIndex |
d | QXmlNamespaceSupport.d |
d | QXmlAttributes.d |
d | QXmlInputSource.d |
d | QXmlParseException.d |
d | QXmlLocator.d |
d | QXmlDefaultHandler.d |
num | DirEntry.num |
Statistics
Stat |
---|
Sum: |
Average: |
Minimum: |
Maximum: |
Standard deviation: |
Variance: |
Projects Dependencies
Project | Depends on | Is referenced by |
---|---|---|
Project | Depends on | Is referenced by |
WindowsAPI v1.0.0.0 | - | qtools v1.0.0.0 ; CppDependency v1.0.0.0 ; |
Externals v1.0.0.0 | - | qtools v1.0.0.0 ; CppDependency v1.0.0.0 ; |
qtools v1.0.0.0 | WindowsAPI v1.0.0.0 ; Externals v1.0.0.0 ; | CppDependency v1.0.0.0 ; |
CppDependency v1.0.0.0 | Externals v1.0.0.0 ; WindowsAPI v1.0.0.0 ; qtools v1.0.0.0 ; | - |
Projects Build Order
- qtools
- CppDependency
Analysis Log : Information and Warnings
Here are Logs emitted during CppDepend analysis.
The Warnings can reveal potential flaws concerning the health of the build process.
A particular warn can be disabled through the CppDepend interactive UI, panel Error List, tick the checkbox Disabled corresponding to the warn to disable.
The Warnings can reveal potential flaws concerning the health of the build process.
A particular warn can be disabled through the CppDepend interactive UI, panel Error List, tick the checkbox Disabled corresponding to the warn to disable.
Kind | Message |
---|---|
Kind | Message |
Warning | Evaluation: 14 days left |
Info | 07/29/2012 10:37:27 Begin full analysis with CppDepend v3.0.0 |
Info | No Baseline for Comparison loaded. |
Warning | Additional include directory ..\libpng not found for the project CppDependency : it can impact the result of analysis. |
Warning | expected a class or namespace at c:\doxygen-1.5.7.3\src\code.cpp:18409:73 |
Warning | expected a class or namespace at c:\doxygen-1.5.7.3\src\code.cpp:18454:60 |
Warning | expected a class or namespace at c:\doxygen-1.5.7.3\src\code.cpp:18568:63 |
Warning | expected a class or namespace at c:\doxygen-1.5.7.3\src\code.cpp:19283:91 |
Warning | expected a class or namespace at c:\doxygen-1.5.7.3\src\code.cpp:19303:93 |
Warning | expected a class or namespace at c:\doxygen-1.5.7.3\src\doxygen.cpp:3813:11 |
Warning | no matching function for call to 'readIncludeFile' at c:\doxygen-1.5.7.3\src\pre.cpp:4800:43 |
Warning | expected a class or namespace at c:\doxygen-1.5.7.3\src\util.cpp:4422:38 |
Warning | expected a class or namespace at c:\doxygen-1.5.7.3\src\xmlgen.cpp:615:35 |
Warning | expected a class or namespace at c:\doxygen-1.5.7.3\src\xmlgen.cpp:1151:110 |
Info | No dependency cycle detected in assemblies referencement graph. |
Info | 07/29/2012 10:37:59 Analyse dependencies of your application. |
Info | 07/29/2012 10:38:00 Building the report (standard). |
Warning | 3 critical rules are violated. - Types too big - critical - Methods too complex - critical - Methods with too many parameters - critical |