Analytical Architecture Report
Application:
Pegasus ERP Cargo Management System is one of the software solutions for cargo...
Methods
on
Interface
s
Public
Properti
es on
Classes
596
Classes
0.81 3.08 43 public properties on Pegasus.Common.Properti...
v1.0.0.0
Pegasus.Gene
ral v1.0.0.0
87 0 88574
121
68
0 0 146 231 1.82 0.61 0 0.39
Pegasus.Secur
ity v1.0.0.0
6 0 4577 642 ...
Assemblies Abstractness vs. Instability
Assemblies Dependencies
Assembly Depends on... Is referenced by...
Pegasus.Common
v1.0.0.0
mscorlib v4.0.0.0 ; NHibernate ...
v1.0.0.0 ; Pegasus.TMS
v1.0.0.0 ;
Pegasus.General
v1.0.0.0
mscorlib v4.0.0.0 ; PresentationFramework v4.0.0.0
; WindowsBas...
Pegasus.Common v1.0.0.0 ; Infragistics3.Wpf.v9.1
v9.1.20091.2091 ; Microsoft.VisualBasic v10.0.0.0 ;
System.Windows.Forms ...
v9.1.20091.2091 ; Infragistics3.Wpf.Editors.v9.1
v9.1.20091.2091 ; Pegasus.Common v1.0.0.0 ;
System.Windows.Forms v4.0.0.0...
Assemblies build order
Pegasus.Common
Pegasus.Controls
Pegasus.SearchEngine
Pegasus.General
Pegasus.Security
Pegasus.Accou...
0 source file parsed ; 543 source files not found ;
0 CQL constraint has been extracted from code.
No dependency cycle det...
WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.SearchEngine} referenced by
the PDB file of the assembl...
WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.ShippingLineUIElements}
referenced by the PDB file of t...
{Code Quality from Now!} All CQL queries compile and all CQL contraints are satisfied.
{Design} Some CQL constraints are n...
d
e
(L
O
C)
(CC
)
ty
(IL
CC)
th
CheckApproval()
5
8
289 N/A 12 1 0 3 1
Pegasus.Controls.AuthenticationProm
pt.CheckApprova...
3.
3
6
WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the
condition. --> Group {...
Variance:
26
781
WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the
condition. -...
WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the
condition. --> Group {Code Qu...
WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the
condition. --> Group {Code Qu...
Standard deviation:
2.3
259
Variance:
5.4
1
WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 te...
Maximum: 0 57
Standard deviation: 0
16.
367
Variance: 0
267
.89
WARNING: The following CQL constraint is not satisfied. 10...
CreateDataDrivenSubscription(BatchHea
der,String,ExtensionSettings,DataRetriev
alPlan,String,String,String,ParameterVal
ue...
ng(Object,CellActivatingEventArgs) BreakDetail_CellActivating(Object,CellActivatingEventArgs)
xamWHConMoveDetail_CellActiv...
HouseBillofLading 108 Pegasus.Cargo.UIElements.HouseBillofLading
MasterBillofLading 107 Pegasus.Cargo.UIElements.MasterBil...
HouseBillofLading 112 Pegasus.Cargo.UIElements.HouseBillofLading
NVHBL 108 Pegasus.NVOCC.UIElements.NVHBL
NVMBL 108 Pegasu...
Maximum: 0.97334 137 108
Standard
deviation:
0.0027582 28.782 26.176
Variance: 7.607416E-06 828.41 685.16
WARNING: The fol...
WARNING: The following CQL constraint is not satisfied. 1 assemblies on 33 tested match the
condition. --> Group {Design}
...
// More information available in this article:
// http://codebetter.com/blogs/patricksmacchia/archive/2008/02/15/code-
met...
// this rule indicates stateless types that might
// eventually be turned into static classes.
// See the definition of th...
MenuExpander 10 Pegasus.Main.MenuExpander
NavigationMain 10 Pegasus.Main.NavigationMain
frmFrameAddNew 9 Pegasus.SearchEng...
NVQuotation+CodeDesc 0 0 Pegasus.NVOCC.UIElements.NVQuotation+CodeDesc
Voucher+CodeDesc 0 0 Pegasus.Accounts.UIElements.Vo...
Desc
NVCosting+CodeDesc 8 0 1
Pegasus.NVOCC.UIElements.NVCosting+CodeDes
c
NVContainerTracking+Co
deDesc
8 0 1
Pegasus.NVO...
Maximum: 1
Standard deviation: 0
Variance: 0
WARNING: The following CQL constraint is not satisfied. 10 types on 1155 test...
IsInterface AND
NbMethods == 0
// Interfaces define members that provide a behavior
// or usage contract. The functionalit...
assemblies # Types Relational cohesion Full Name
Pegasus.Accounts 23 0.17391 Pegasus.Accounts
Pegasus.NVOCC 24 0.375 Pegas...
Average: 934
Minimum: 683
Maximum: 2 484
Standard deviation: 519.59
Variance: 269 977
WARNING: The following CQL constrain...
MethodCa == 0 AND // Ca=0 -> No Afferent Coupling ->
// The method is not used in the
// context of this application.
!IsP...
// <Name>Potentially unused fields</Name>
WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE
FieldCa == 0 AND // Ca=0 -> No A...
// context of this application.
!IsPublic AND // Public types might be used
// by client applications of your
// assemblie...
_this 4 Pegasus.Controls.AuthenticationPrompt._this
border 4 Pegasus.Controls.AuthenticationPrompt.border
gMain 4 Pegasus....
RegisterItem(String,ICollection<
T>)
8
Pegasus.Controls.ItemMonitor<T>.RegisterItem(String,ICollecti
on<T>)
RemoveNodes(It...
Maximum: 7
Standard deviation:
1.83
3
Variance: 3.36
WARNING: The following CQL constraint is not satisfied. 10 types on 1...
Sum: 0
Average: 0
Minimum: 0
Maximum: 0
Standard deviation: 0
Variance: 0
WARNING: The following CQL constraint is not sat...
border 4 Pegasus.Controls.AuthenticationPrompt.border
gMain 4 Pegasus.Controls.AuthenticationPrompt.gMain
lblCaption 4 Peg...
exit
y
(ILC
C)
pt
h
ge
CheckApproval() 289 12 1 0 3 1 0
Pegasus.Controls.AuthenticationPromp
t.CheckApproval()
RenderTree(...
// A field that matches the condition IsImmutable
// is a field that is assigned only by constructors
// of its class.
// ...
Average: 0
Minimum: 0
Maximum: 0
Standard deviation: 0
Variance: 0
WARNING: The following CQL constraint is not satisfied....
// This naming convention provokes debate.
// Don't hesitate to customize the regex of
// NameLike to your preference.
fie...
_BaseCurrencyMask 0 Pegasus.Common.Common._BaseCurrencyMask
_FinancialYearID 0 Pegasus.Common.Common._FinancialYearID
_Emp...
// Except if it is generated by compiler or ...
!IsGeneratedByCompiler AND
// ... if it is declared in a third party assem...
btnClose_Click(Object,RoutedEv
entArgs)
2
Pegasus.Controls.AuthenticationPrompt.btnClose_Click(Object,
RoutedEventArgs)
gM...
de
(L
O
C)
get_GetFreightCategoryAccessControlLi
st()
1
Pegasus.Common.Common.get_GetFreightCategoryAccess
ControlList()
s...
// <Name>Avoid types with name too long</Name>
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE
NameLike "^[^<]{35,}.*$" AND...
81
Variance:
11.2
1
WARNING: The following CQL constraint is not satisfied. 10 fields on 10218 tested match the
condition....
Variance: 0
To study pcms   pegasus erp cargo management system-release-6 from architecture perspective.
To study pcms   pegasus erp cargo management system-release-6 from architecture perspective.
To study pcms   pegasus erp cargo management system-release-6 from architecture perspective.
Upcoming SlideShare
Loading in …5
×

To study pcms pegasus erp cargo management system-release-6 from architecture perspective.

1,167 views

Published on

To study pcms pegasus erp cargo management system-release-6 from architecture perspective.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

To study pcms pegasus erp cargo management system-release-6 from architecture perspective.

  1. 1. Analytical Architecture Report Application: Pegasus ERP Cargo Management System is one of the software solutions for cargo industry, which is totally integrated with Accounts. Designed by experts from cargo and software industry it provides one stop solution for data entry and decision support. The implementation of detailed function level checks ensures reliability & date integrity of system. The embedded security through appropriate Access Controls allows complete control of user access and data manipulation. www.comsoftusa.us www.comsoftuae.com DevelopmentEnvironment:[Release-6,DesktopVersion] MicrosoftVisual Studio2008, .Net3.5, WindowsPresentationFoundation,Infragistic GUI Controls,SQL Server2008 Application Metrics Number of IL instructions: 894149 Number of lines of code: 121062 Number of lines of comment: 0 Percentage comment: 0 Number of assemblies: 15 Number of classes: 596 Number of types: 638 Number of abstract classes: 1 Number of interfaces: 4 Number of value types: 2 Number of exception classes: 2 Number of attribute classes: 0 Number of delegate classes: 1 Number of enumerations classes: 36 Number of generic type definitions: 5 Number of generic method definitions: 0 Percentage of public types: 90.6% Percentage of public methods: 42.45% Percentage of classes with at least one public field: 48.12% Stat # Occurren ces Avg StdD ev Max Properti es on Interface s 4 Interface s 0 0 0 properties on Pegasus.Common.ICommon Methods on Interface s 4 Interface s 26.25 44.31 103 methods on Pegasus.Main.RSServiceReference05.ReportingService2005Soap Argumen ts on 105 Methods 1 0 1 arguments on Pegasus.Common.ICommon.getPropertyValue(String)
  2. 2. Methods on Interface s Public Properti es on Classes 596 Classes 0.81 3.08 43 public properties on Pegasus.Common.Properties.Resources Public Methods on Classes 596 Classes 6.74 8.39 108 public methods on Pegasus.Main.RSServiceReference05.ReportingService2005SoapClien t Argumen ts on Public Methods on Classes 4019 Methods 0.49 1.11 10 arguments on Pegasus.Main.RSServiceReference05.GetDataDrivenSubscriptionProp ertiesResponse..ctor(ServerInfoHeader,String,ExtensionSettings,Dat aRetrievalPlan,String,ActiveState,String,String,String,ParameterVal ueOrFieldReference[]) IL Instructi ons in non- abstract Methods 9608 Methods 93.06 195.6 6 4585 IL instructions in Pegasus.Main.RibbonMenuTest.ApplyReportsTabSecurity() Cyclomat ic complexi ty on non abstract Methods 9608 Methods 6.69 14.69 CC = 561 for Pegasus.Main.RibbonMenuTest.System.Windows.Markup.IComponent Connector.Connect(Int32,Object) Assemblies Metrics Assembly # Typ es # Abstr act Type s # IL instruc tion # lin es of cod e # lines of comm ent % comm ent Affer ent Coupl ing Effer ent Coupl ing Relati onal Cohesi on Instab ility Abstrac tness Dista nce Pegasus.Com mon v1.0.0.0 8 2 1246 198 0 0 202 34 0.38 0.14 0.25 0.61 Pegasus.Contr ols v1.0.0.0 25 0 9811 144 9 0 0 225 168 1.52 0.43 0.04 0.53 Pegasus.Searc hEngine 5 0 11428 145 3 0 0 160 122 0.2 0.43 0 0.57
  3. 3. v1.0.0.0 Pegasus.Gene ral v1.0.0.0 87 0 88574 121 68 0 0 146 231 1.82 0.61 0 0.39 Pegasus.Secur ity v1.0.0.0 6 0 4577 642 0 0 0 96 0.17 1 0 0 Pegasus.Acco unts v1.0.0.0 23 0 49606 659 2 0 0 2 228 0.17 0.99 0 0.01 Pegasus.Job v1.0.0.0 3 0 514 66 0 0 0 62 0.33 1 0 0 Pegasus.NVOC C v1.0.0.0 24 0 85322 115 47 0 0 0 225 0.38 1 0 0 Pegasus.Ware house v1.0.0.0 22 0 95694 127 24 0 0 0 243 0.23 1 0 0 Pegasus.Shipp ingLine v1.0.0.0 24 0 86359 116 79 0 0 0 225 0.38 1 0 0 Pegasus.PRCI v1.0.0.0 12 0 44695 602 2 0 0 0 198 0.5 1 0 0 Pegasus.Cargo v1.0.0.0 42 0 149950 203 58 0 0 0 223 1.14 1 0 0 Pegasus.Flight Cargo v1.0.0.0 18 0 56634 753 9 0 0 0 183 0.39 1 0 0 Pegasus.Main v1.0.0.52 307 1 129476 177 81 0 0 0 282 2.55 1 0.01 0.01 Pegasus.TMS v1.0.0.0 32 0 80263 108 44 0 0 0 187 0.09 1 0 0 Visual NDepend View
  4. 4. Assemblies Abstractness vs. Instability
  5. 5. Assemblies Dependencies Assembly Depends on... Is referenced by... Pegasus.Common v1.0.0.0 mscorlib v4.0.0.0 ; NHibernate v2.1.0.4000 ; System v4.0.0.0 ; HibernatingRhinos.NHibernate.Profiler.Appender v0.9.0.0 ; System.Data v4.0.0.0 ; Pegasus.General v1.0.0.0 ; Pegasus.Security v1.0.0.0 ; Pegasus.Accounts v1.0.0.0 ; Pegasus.Controls v1.0.0.0 ; Pegasus.Job v1.0.0.0 ; Pegasus.SearchEngine v1.0.0.0 ; Pegasus.NVOCC v1.0.0.0 ; Pegasus.Warehouse v1.0.0.0 ; Pegasus.ShippingLine v1.0.0.0 ; Pegasus.PRCI v1.0.0.0 ; Pegasus.Cargo v1.0.0.0 ; Pegasus.FlightCargo v1.0.0.0 ; Pegasus.Main v1.0.0.52 ; Pegasus.TMS v1.0.0.0 ; Pegasus.Controls v1.0.0.0 PresentationFramework v4.0.0.0 ; WindowsBase v4.0.0.0 ; mscorlib v4.0.0.0 ; PresentationCore v4.0.0.0 ; System v4.0.0.0 ; Infragistics3.Wpf.Editors.v9.1 v9.1.20091.2091 ; Pegasus.Common v1.0.0.0 ; Pegasus.General v1.0.0.0 ; Pegasus.Security v1.0.0.0 ; Pegasus.Accounts v1.0.0.0 ; Pegasus.Job v1.0.0.0 ; Pegasus.SearchEngine v1.0.0.0 ; Pegasus.NVOCC v1.0.0.0 ; Pegasus.Warehouse v1.0.0.0 ; Pegasus.ShippingLine v1.0.0.0 ; Pegasus.PRCI v1.0.0.0 ; Pegasus.Cargo v1.0.0.0 ; Pegasus.FlightCargo v1.0.0.0 ; Pegasus.Main v1.0.0.52 ; Pegasus.TMS v1.0.0.0 ; Pegasus.SearchEngine v1.0.0.0 PresentationFramework v4.0.0.0 ; WindowsBase v4.0.0.0 ; mscorlib v4.0.0.0 ; System v4.0.0.0 ; PresentationCore v4.0.0.0 ; System.Data v4.0.0.0 ; Infragistics3.Wpf.Editors.v9.1 v9.1.20091.2091 ; Infragistics3.Wpf.DataPresenter.v9.1 v9.1.20091.2091 ; Pegasus.Common v1.0.0.0 ; Pegasus.Controls v1.0.0.0 ; Pegasus.General v1.0.0.0 ; Pegasus.Security v1.0.0.0 ; Pegasus.Accounts v1.0.0.0 ; Pegasus.NVOCC v1.0.0.0 ; Pegasus.Warehouse v1.0.0.0 ; Pegasus.ShippingLine v1.0.0.0 ; Pegasus.PRCI v1.0.0.0 ; Pegasus.Cargo v1.0.0.0 ; Pegasus.FlightCargo
  6. 6. v1.0.0.0 ; Pegasus.TMS v1.0.0.0 ; Pegasus.General v1.0.0.0 mscorlib v4.0.0.0 ; PresentationFramework v4.0.0.0 ; WindowsBase v4.0.0.0 ; System v4.0.0.0 ; PresentationCore v4.0.0.0 ; Infragistics3.Wpf.DataPresenter.v9.1 v9.1.20091.2091 ; Pegasus.Controls v1.0.0.0 ; Infragistics3.Wpf.Editors.v9.1 v9.1.20091.2091 ; System.Data v4.0.0.0 ; Infragistics3.Wpf.v9.1 v9.1.20091.2091 ; Pegasus.SearchEngine v1.0.0.0 ; Pegasus.Common v1.0.0.0 ; Microsoft.VisualBasic v10.0.0.0 ; System.Windows.Forms v4.0.0.0 ; Pegasus.Security v1.0.0.0 ; Pegasus.Accounts v1.0.0.0 ; Pegasus.Job v1.0.0.0 ; Pegasus.NVOCC v1.0.0.0 ; Pegasus.Warehouse v1.0.0.0 ; Pegasus.ShippingLine v1.0.0.0 ; Pegasus.PRCI v1.0.0.0 ; Pegasus.Cargo v1.0.0.0 ; Pegasus.FlightCargo v1.0.0.0 ; Pegasus.Main v1.0.0.52 ; Pegasus.TMS v1.0.0.0 ; Pegasus.Security v1.0.0.0 System v4.0.0.0 ; PresentationFramework v4.0.0.0 ; WindowsBase v4.0.0.0 ; mscorlib v4.0.0.0 ; Pegasus.Controls v1.0.0.0 ; Infragistics3.Wpf.Editors.v9.1 v9.1.20091.2091 ; PresentationCore v4.0.0.0 ; System.Data v4.0.0.0 ; Pegasus.General v1.0.0.0 ; Pegasus.Common v1.0.0.0 ; Pegasus.SearchEngine v1.0.0.0 ; Microsoft.VisualBasic v10.0.0.0 ; - Pegasus.Accounts v1.0.0.0 PresentationFramework v4.0.0.0 ; WindowsBase v4.0.0.0 ; mscorlib v4.0.0.0 ; System v4.0.0.0 ; System.Data v4.0.0.0 ; Pegasus.Controls v1.0.0.0 ; PresentationCore v4.0.0.0 ; Infragistics3.Wpf.DataPresenter.v9.1 v9.1.20091.2091 ; Infragistics3.Wpf.Editors.v9.1 v9.1.20091.2091 ; System.Drawing v4.0.0.0 ; Infragistics3.Wpf.v9.1 v9.1.20091.2091 ; Pegasus.General v1.0.0.0 ; Pegasus.SearchEngine v1.0.0.0 ; Microsoft.VisualBasic v10.0.0.0 ; Pegasus.Common v1.0.0.0 ; System.Core v4.0.0.0 ; Pegasus.Main v1.0.0.52 ; Pegasus.Job v1.0.0.0 mscorlib v4.0.0.0 ; System v4.0.0.0 ; PresentationFramework v4.0.0.0 ; WindowsBase v4.0.0.0 ; System.Data v4.0.0.0 ; Pegasus.Controls v1.0.0.0 ; Infragistics3.Wpf.Editors.v9.1 v9.1.20091.2091 ; Infragistics3.Wpf.DataPresenter.v9.1 v9.1.20091.2091 ; Pegasus.Common v1.0.0.0 ; PresentationCore v4.0.0.0 ; Pegasus.General v1.0.0.0 ; - Pegasus.NVOCC v1.0.0.0 PresentationFramework v4.0.0.0 ; WindowsBase v4.0.0.0 ; mscorlib v4.0.0.0 ; System v4.0.0.0 ; Pegasus.SearchEngine v1.0.0.0 ; Pegasus.Controls v1.0.0.0 ; System.Data v4.0.0.0 ; PresentationCore v4.0.0.0 ; Infragistics3.Wpf.DataPresenter.v9.1 v9.1.20091.2091 ; Infragistics3.Wpf.Editors.v9.1 v9.1.20091.2091 ; Pegasus.General v1.0.0.0 ; -
  7. 7. Pegasus.Common v1.0.0.0 ; Infragistics3.Wpf.v9.1 v9.1.20091.2091 ; Microsoft.VisualBasic v10.0.0.0 ; System.Windows.Forms v4.0.0.0 ; Pegasus.Warehouse v1.0.0.0 PresentationFramework v4.0.0.0 ; WindowsBase v4.0.0.0 ; mscorlib v4.0.0.0 ; System v4.0.0.0 ; Pegasus.Controls v1.0.0.0 ; System.Data v4.0.0.0 ; Pegasus.SearchEngine v1.0.0.0 ; Pegasus.General v1.0.0.0 ; PresentationCore v4.0.0.0 ; Infragistics3.Wpf.DataPresenter.v9.1 v9.1.20091.2091 ; Infragistics3.Wpf.Editors.v9.1 v9.1.20091.2091 ; Pegasus.Common v1.0.0.0 ; Microsoft.VisualBasic v10.0.0.0 ; Infragistics3.Wpf.v9.1 v9.1.20091.2091 ; NHibernate v2.1.0.4000 ; - Pegasus.ShippingLine v1.0.0.0 mscorlib v4.0.0.0 ; PresentationFramework v4.0.0.0 ; WindowsBase v4.0.0.0 ; System v4.0.0.0 ; Pegasus.Controls v1.0.0.0 ; PresentationCore v4.0.0.0 ; Infragistics3.Wpf.Editors.v9.1 v9.1.20091.2091 ; Infragistics3.Wpf.DataPresenter.v9.1 v9.1.20091.2091 ; Pegasus.SearchEngine v1.0.0.0 ; System.Data v4.0.0.0 ; Pegasus.General v1.0.0.0 ; Pegasus.Common v1.0.0.0 ; Microsoft.VisualBasic v10.0.0.0 ; System.Windows.Forms v4.0.0.0 ; Infragistics3.Wpf.v9.1 v9.1.20091.2091 ; - Pegasus.PRCI v1.0.0.0 PresentationFramework v4.0.0.0 ; WindowsBase v4.0.0.0 ; mscorlib v4.0.0.0 ; System v4.0.0.0 ; Pegasus.SearchEngine v1.0.0.0 ; Pegasus.Controls v1.0.0.0 ; System.Data v4.0.0.0 ; PresentationCore v4.0.0.0 ; Infragistics3.Wpf.DataPresenter.v9.1 v9.1.20091.2091 ; Infragistics3.Wpf.Editors.v9.1 v9.1.20091.2091 ; Pegasus.Common v1.0.0.0 ; Pegasus.General v1.0.0.0 ; Infragistics3.Wpf.v9.1 v9.1.20091.2091 ; Microsoft.VisualBasic v10.0.0.0 ; System.Windows.Forms v4.0.0.0 ; - Pegasus.Cargo v1.0.0.0 PresentationFramework v4.0.0.0 ; WindowsBase v4.0.0.0 ; System v4.0.0.0 ; mscorlib v4.0.0.0 ; Pegasus.Controls v1.0.0.0 ; Pegasus.General v1.0.0.0 ; Pegasus.SearchEngine v1.0.0.0 ; PresentationCore v4.0.0.0 ; Infragistics3.Wpf.Editors.v9.1 v9.1.20091.2091 ; Infragistics3.Wpf.DataPresenter.v9.1 v9.1.20091.2091 ; System.Data v4.0.0.0 ; Pegasus.Common v1.0.0.0 ; Infragistics3.Wpf.v9.1 v9.1.20091.2091 ; System.Xml v4.0.0.0 ; Microsoft.VisualBasic v10.0.0.0 ; - Pegasus.FlightCargo v1.0.0.0 PresentationFramework v4.0.0.0 ; WindowsBase v4.0.0.0 ; mscorlib v4.0.0.0 ; System v4.0.0.0 ; Pegasus.Controls v1.0.0.0 ; System.Data v4.0.0.0 ; Pegasus.SearchEngine v1.0.0.0 ; Pegasus.General v1.0.0.0 ; PresentationCore v4.0.0.0 ; Infragistics3.Wpf.DataPresenter.v9.1 -
  8. 8. v9.1.20091.2091 ; Infragistics3.Wpf.Editors.v9.1 v9.1.20091.2091 ; Pegasus.Common v1.0.0.0 ; System.Windows.Forms v4.0.0.0 ; Infragistics3.Wpf.v9.1 v9.1.20091.2091 ; Pegasus.Main v1.0.0.52 WindowsBase v4.0.0.0 ; PresentationFramework v4.0.0.0 ; mscorlib v4.0.0.0 ; System v4.0.0.0 ; System.ServiceModel v4.0.0.0 ; System.Windows.Forms v4.0.0.0 ; PresentationCore v4.0.0.0 ; Infragistics3.Wpf.DataPresenter.v9.1 v9.1.20091.2091 ; System.Data v4.0.0.0 ; Infragistics3.Wpf.Editors.v9.1 v9.1.20091.2091 ; Infragistics3.Wpf.v9.1 v9.1.20091.2091 ; Infragistics3.Wpf.Ribbon.v9.1 v9.1.20091.2091 ; System.Drawing v4.0.0.0 ; System.Xml v4.0.0.0 ; Pegasus.Accounts v1.0.0.0 ; Pegasus.General v1.0.0.0 ; Microsoft.VisualBasic v10.0.0.0 ; Pegasus.Controls v1.0.0.0 ; Pegasus.Common v1.0.0.0 ; NHibernate v2.1.0.4000 ; - Pegasus.TMS v1.0.0.0 PresentationFramework v4.0.0.0 ; WindowsBase v4.0.0.0 ; mscorlib v4.0.0.0 ; System v4.0.0.0 ; Pegasus.Controls v1.0.0.0 ; PresentationCore v4.0.0.0 ; Infragistics3.Wpf.Editors.v9.1 v9.1.20091.2091 ; Infragistics3.Wpf.DataPresenter.v9.1 v9.1.20091.2091 ; System.Data v4.0.0.0 ; Pegasus.SearchEngine v1.0.0.0 ; Pegasus.General v1.0.0.0 ; Pegasus.Common v1.0.0.0 ; Infragistics3.Wpf.v9.1 v9.1.20091.2091 ; - Assemblies Dependencies Diagram Blue : Assemblies of your application. Yellow : Tiers assemblies referenced by assemblies of your application.
  9. 9. Assemblies build order Pegasus.Common Pegasus.Controls Pegasus.SearchEngine Pegasus.General Pegasus.Security Pegasus.Accounts Pegasus.Job Pegasus.NVOCC Pegasus.Warehouse Pegasus.ShippingLine Pegasus.PRCI Pegasus.Cargo Pegasus.FlightCargo Pegasus.Main Pegasus.TMS NDepend information and warnings 11/05/2010 15:02:12 Begin full analysis with NDepend v3.2.0 No Baseline for Comparison loaded. Assemblies loaded from {C:WINDOWSMicrosoft.NETFrameworkv4.0.30319} mscorlib.dll v4.0.0.0 System.dll v4.0.0.0 System.Data.dll v4.0.0.0 Microsoft.VisualBasic.dll v10.0.0.0 System.Windows.Forms.dll v4.0.0.0 System.Drawing.dll v4.0.0.0 System.Core.dll v4.0.0.0 System.Xml.dll v4.0.0.0 System.ServiceModel.dll v4.0.0.0 Assemblies loaded from {C:WINDOWSMicrosoft.NETFrameworkv4.0.30319WPF} PresentationFramework.dll v4.0.0.0 WindowsBase.dll v4.0.0.0 PresentationCore.dll v4.0.0.0 Assemblies loaded from {D:ShareMePegasusPegasus.Common.BSLbinDebug} Pegasus.Common.dll v1.0.0.0 NHibernate.dll v2.1.0.4000 HibernatingRhinos.NHibernate.Profiler.Appender.dll v0.9.0.0 Assemblies loaded from {D:ShareMePegasusPegasus.GeneralbinDebug} Pegasus.General.dll v1.0.0.0 Pegasus.Controls.dll v1.0.0.0 Pegasus.SearchEngine.dll v1.0.0.0 Infragistics3.Wpf.DataPresenter.v9.1.dll v9.1.20091.2091 Infragistics3.Wpf.Editors.v9.1.dll v9.1.20091.2091 Infragistics3.Wpf.v9.1.dll v9.1.20091.2091 Assemblies loaded from {D:ShareMePegasusPegasus.SecuritybinDebug} Pegasus.Security.dll v1.0.0.0 Assemblies loaded from {D:ShareMePegasusPegasus.AccountsbinDebug} Pegasus.Accounts.dll v1.0.0.0 Assemblies loaded from {D:ShareMePegasusPegasus.JobbinDebug} Pegasus.Job.dll v1.0.0.0 Assemblies loaded from {D:ShareMePegasusPegasus.NVOCCbinDebug} Pegasus.NVOCC.dll v1.0.0.0 Assemblies loaded from {D:ShareMePegasusPegasus.WarehousebinDebug} Pegasus.Warehouse.dll v1.0.0.0 Assemblies loaded from {D:ShareMePegasusPegasus.ShippingLinebinDebug} Pegasus.ShippingLine.dll v1.0.0.0 Assemblies loaded from {D:ShareMePegasusPegasus.PRCIbinDebug} Pegasus.PRCI.dll v1.0.0.0 Assemblies loaded from {D:ShareMePegasusPegasus.AirFreightbinDebug} Pegasus.Cargo.dll v1.0.0.0 Assemblies loaded from {D:ShareMePegasusPegasus.FlightCargobinDebug} Pegasus.FlightCargo.dll v1.0.0.0 Assemblies loaded from {D:ShareMePegasusPegasusbinDebug} Pegasus.Main.exe v1.0.0.52 Pegasus.TMS.dll v1.0.0.0 Infragistics3.Wpf.Ribbon.v9.1.dll v9.1.20091.2091
  10. 10. 0 source file parsed ; 543 source files not found ; 0 CQL constraint has been extracted from code. No dependency cycle detected in assemblies referencement graph. 11/05/2010 15:02:37 Analyse dependencies of your application. 11/05/2010 15:02:38 Building the report (standard). WARNING: Cant' load the assembly {Pegasus.BusinessObjects}: Several .NET assemblies have the name {Pegasus.BusinessObjects} but they are different. - D:ShareMePegasusPegasus.GeneralbinDebugPegasus.BusinessObjects.dll v0.0 2 297 856 bytes - D:ShareMePegasusPegasus.SecuritybinDebugPegasus.BusinessObjects.dll v0.0 2 297 856 bytes - D:ShareMePegasusPegasus.AccountsbinDebugPegasus.BusinessObjects.dll v0.0 2 297 856 bytes - D:ShareMePegasusPegasus.JobbinDebugPegasus.BusinessObjects.dll v0.0 2 293 248 bytes - D:ShareMePegasusPegasus.NVOCCbinDebugPegasus.BusinessObjects.dll v0.0 2 297 856 bytes - D:ShareMePegasusPegasus.WarehousebinDebugPegasus.BusinessObjects.dll v0.0 2 297 856 bytes - D:ShareMePegasusPegasus.ShippingLinebinDebugPegasus.BusinessObjects.dll v0.0 2 297 856 bytes - D:ShareMePegasusPegasus.PRCIbinDebugPegasus.BusinessObjects.dll v0.0 2 297 856 bytes - D:ShareMePegasusPegasus.AirFreightbinDebugPegasus.BusinessObjects.dll v0.0 2 297 856 bytes - D:ShareMePegasusPegasus.FlightCargobinDebugPegasus.BusinessObjects.dll v0.0 2 297 856 bytes - D:ShareMePegasusPegasusbinDebugPegasus.BusinessObjects.dll v0.0 2 297 856 bytes WARNING: Cant' load the assembly {Microsoft.SqlServer.Smo}: Can't find the .NET assembly {Microsoft.SqlServer.Smo} in specified folders. Has it been compiled properly? Is the NDepend project missing the containing folder of the .NET assembly? WARNING: Cant' load the assembly {Microsoft.SqlServer.ConnectionInfo}: Can't find the .NET assembly {Microsoft.SqlServer.ConnectionInfo} in specified folders. Has it been compiled properly? Is the NDepend project missing the containing folder of the .NET assembly? WARNING: Assembly {Pegasus.BusinessObjects} is referenced by {Pegasus.General} but is not found. WARNING: Assembly {Pegasus.BusinessObjects} is referenced by {Pegasus.Security} but is not found. WARNING: Assembly {Pegasus.BusinessObjects} is referenced by {Pegasus.Accounts} but is not found. WARNING: Assembly {Pegasus.BusinessObjects} is referenced by {Pegasus.Controls} but is not found. WARNING: Assembly {Pegasus.BusinessObjects} is referenced by {Pegasus.Job} but is not found. WARNING: Assembly {Pegasus.BusinessObjects} is referenced by {Pegasus.SearchEngine} but is not found. WARNING: Assembly {Pegasus.BusinessObjects} is referenced by {Pegasus.NVOCC} but is not found. WARNING: Assembly {Pegasus.BusinessObjects} is referenced by {Pegasus.Warehouse} but is not found. WARNING: Assembly {Pegasus.BusinessObjects} is referenced by {Pegasus.ShippingLine} but is not found. WARNING: Assembly {Pegasus.BusinessObjects} is referenced by {Pegasus.PRCI} but is not found. WARNING: Assembly {Pegasus.BusinessObjects} is referenced by {Pegasus.Cargo} but is not found. WARNING: Assembly {Pegasus.BusinessObjects} is referenced by {Pegasus.FlightCargo} but is not found. WARNING: Assembly {Pegasus.BusinessObjects} is referenced by {Pegasus.Main} but is not found. WARNING: Assembly {Microsoft.SqlServer.Smo} is referenced by {Pegasus.Main} but is not found. WARNING: Assembly {Microsoft.SqlServer.ConnectionInfo} is referenced by {Pegasus.Main} but is not found. WARNING: Assembly {Pegasus.BusinessObjects} is referenced by {Pegasus.TMS} but is not found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.Common.BSLProperties} referenced by the PDB file of the assembly {Pegasus.Common} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.Common.BSL} referenced by the PDB file of the assembly {Pegasus.Common} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.Common.BSLUtilities} referenced by the PDB file of the assembly {Pegasus.Common} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.Common.BSLLanguages} referenced by the PDB file of the assembly {Pegasus.Common} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.Controls} referenced by the PDB file of the assembly {Pegasus.Controls} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.ControlsProperties} referenced by the PDB file of the assembly {Pegasus.Controls} can't be found.
  11. 11. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.SearchEngine} referenced by the PDB file of the assembly {Pegasus.SearchEngine} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.SearchEngineProperties} referenced by the PDB file of the assembly {Pegasus.SearchEngine} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.General} referenced by the PDB file of the assembly {Pegasus.General} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.GeneralUIElementsTransportRepair} referenced by the PDB file of the assembly {Pegasus.General} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.GeneralUIElementsCentral} referenced by the PDB file of the assembly {Pegasus.General} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.GeneralUIElementsCargo} referenced by the PDB file of the assembly {Pegasus.General} can't be found. WARNING: The source directory {e:Shoaib WorkProjectsPegasusPegasus.GeneralUIElements} referenced by the PDB file of the assembly {Pegasus.General} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.GeneralUIElementsMain} referenced by the PDB file of the assembly {Pegasus.General} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.GeneralUIElementsAdministration} referenced by the PDB file of the assembly {Pegasus.General} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.GeneralUIElementsHRPayroll} referenced by the PDB file of the assembly {Pegasus.General} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.GeneralUIElementsShippingLines} referenced by the PDB file of the assembly {Pegasus.General} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.GeneralUIElementsInventory} referenced by the PDB file of the assembly {Pegasus.General} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.GeneralControls} referenced by the PDB file of the assembly {Pegasus.General} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.GeneralProperties} referenced by the PDB file of the assembly {Pegasus.General} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.SecurityProperties} referenced by the PDB file of the assembly {Pegasus.Security} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.SecurityUIElements} referenced by the PDB file of the assembly {Pegasus.Security} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.AccountsUIElements} referenced by the PDB file of the assembly {Pegasus.Accounts} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.AccountsProperties} referenced by the PDB file of the assembly {Pegasus.Accounts} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.JobProperties} referenced by the PDB file of the assembly {Pegasus.Job} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.JobUIElements} referenced by the PDB file of the assembly {Pegasus.Job} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.NVOCCUIElements} referenced by the PDB file of the assembly {Pegasus.NVOCC} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.NVOCCProperties} referenced by the PDB file of the assembly {Pegasus.NVOCC} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.WarehouseUIElements} referenced by the PDB file of the assembly {Pegasus.Warehouse} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.WarehouseProperties} referenced by the PDB file of the assembly {Pegasus.Warehouse} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.ShippingLineProperties} referenced by the PDB file of the assembly {Pegasus.ShippingLine} can't be found.
  12. 12. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.ShippingLineUIElements} referenced by the PDB file of the assembly {Pegasus.ShippingLine} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.PRCIUIElements} referenced by the PDB file of the assembly {Pegasus.PRCI} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.PRCIProperties} referenced by the PDB file of the assembly {Pegasus.PRCI} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.AirFreightUIElements} referenced by the PDB file of the assembly {Pegasus.Cargo} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.AirFreightProperties} referenced by the PDB file of the assembly {Pegasus.Cargo} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.AirFreightHandlers} referenced by the PDB file of the assembly {Pegasus.Cargo} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.AirFreightHandlersCnF} referenced by the PDB file of the assembly {Pegasus.Cargo} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.AirFreightHandlersMulti} referenced by the PDB file of the assembly {Pegasus.Cargo} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.AirFreightHandlersSea} referenced by the PDB file of the assembly {Pegasus.Cargo} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.AirFreightHandlersLand} referenced by the PDB file of the assembly {Pegasus.Cargo} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.AirFreightHandlersAir} referenced by the PDB file of the assembly {Pegasus.Cargo} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.FlightCargoUIElements} referenced by the PDB file of the assembly {Pegasus.FlightCargo} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.FlightCargoHandlersAir} referenced by the PDB file of the assembly {Pegasus.FlightCargo} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus.FlightCargoProperties} referenced by the PDB file of the assembly {Pegasus.FlightCargo} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasusRibbonClassesUtil} referenced by the PDB file of the assembly {Pegasus.Main} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasus} referenced by the PDB file of the assembly {Pegasus.Main} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasusControls} referenced by the PDB file of the assembly {Pegasus.Main} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasusSecurity} referenced by the PDB file of the assembly {Pegasus.Main} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasusProperties} referenced by the PDB file of the assembly {Pegasus.Main} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPegasusService ReferencesRSServiceReference05} referenced by the PDB file of the assembly {Pegasus.Main} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPEGASUS.TMSUIElements} referenced by the PDB file of the assembly {Pegasus.TMS} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPEGASUS.TMSUIElementsMasters} referenced by the PDB file of the assembly {Pegasus.TMS} can't be found. WARNING: The source directory {E:Shoaib WorkProjectsPegasusPEGASUS.TMSProperties} referenced by the PDB file of the assembly {Pegasus.TMS} can't be found. CQL Queries and Constraints {Code Quality} Some CQL constraints are not satisfied. {Code Quality Type Metrics} Some CQL constraints are not satisfied.
  13. 13. {Code Quality from Now!} All CQL queries compile and all CQL contraints are satisfied. {Design} Some CQL constraints are not satisfied. {Design Performance} Some CQL constraints are not satisfied. {Unused Code / Dead Code} Some CQL constraints are not satisfied. {Encapsulation} Some CQL constraints are not satisfied. {Encapsulation Methods Optimal Encapsulation} Some CQL constraints are not satisfied. {Encapsulation Types Optimal Encapsulation} Some CQL constraints are not satisfied. {Encapsulation Fields Optimal Encapsulation} Some CQL constraints are not satisfied. {Diff / Changes / Evolution} All CQL queries compile and all CQL contraints are satisfied. {Diff / Changes / Evolution API Breaking Changes} All CQL queries compile and all CQL contraints are satisfied. {Test Coverage} Some CQL constraints are not satisfied. {Purity / Immutability / Side-Effects} Some CQL constraints are not satisfied. {Naming Conventions} Some CQL constraints are not satisfied. {Naming Conventions Name too long} Some CQL constraints are not satisfied. {Constraints extracted from Source Code} No active CQL query compiled. WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the condition. --> Group {Code Quality} // <Name>Quick summary of methods to refactor</Name> WARN IF Count > 0 IN SELECT TOP 10 METHODS /*OUT OF "YourGeneratedCode" */ WHERE // Metrics' definitions ( NbLinesOfCode > 30 OR // http://www.ndepend.com/Metrics.aspx#Nb LinesOfCode NbILInstructions > 200 OR // http://www.ndepend.com/Metrics.aspx#Nb ILInstructions CyclomaticComplexity > 20 OR // http://www.ndepend.com/Metrics.aspx#CC ILCyclomaticComplexity > 50 OR // http://www.ndepend.com/Metrics.aspx#IL CC ILNestingDepth > 4 OR // http://www.ndepend.com/Metrics.aspx#IL NestingDepth NbParameters > 5 OR // http://www.ndepend.com/Metrics.aspx#Nb Parameters NbVariables > 8 OR // http://www.ndepend.com/Metrics.aspx#Nb Variables NbOverloads > 6 ) // http://www.ndepend.com/Metrics.aspx#Nb Overloads AND // Here are some ways to avoid taking account of generated methods. !( NameIs "InitializeComponent()" OR // NDepend.CQL.GeneratedAttribute is defined in // the redistributable assembly $NDependInstallDir$LibNDepend.CQL.dll // You can define your own attribute to mark "Generated". HasAttribute "OPTIONAL:NDepend.CQL.GeneratedAttribute") methods # li n es of c o # IL inst ruc tion s Cyc lom atic Co mpl exi ty IL Cyc lom atic Co mpl exi IL N es ti ng D ep # Par am ete rs # Va ria ble s # Ov erl oa ds Full Name
  14. 14. d e (L O C) (CC ) ty (IL CC) th CheckApproval() 5 8 289 N/A 12 1 0 3 1 Pegasus.Controls.AuthenticationProm pt.CheckApproval() RenderTree(IEnumerable< T>,TreeLayout) 3 8 203 N/A 21 2 2 11 1 Pegasus.Controls.TreeViewBase<T>.R enderTree(IEnumerable<T>,TreeLayo ut) CreateItemNode(T,IList,Tr eeLayout) 3 2 212 N/A 24 3 3 11 1 Pegasus.Controls.TreeViewBase<T>.C reateItemNode(T,IList,TreeLayout) EnsureNodeIsVisible(T) 2 1 99 N/A 6 2 1 11 1 Pegasus.Controls.TreeViewBase<T>.E nsureNodeIsVisible(T) TryFindItemNode(ItemColl ection,String,Boolean) 1 4 91 N/A 10 5 3 8 1 Pegasus.Controls.TreeViewBase<T>.T ryFindItemNode(ItemCollection,String ,Boolean) ApplyAutoCollapse() 3 4 204 N/A 23 3 0 13 1 Pegasus.Controls.TreeViewBase<T>.A pplyAutoCollapse() .cctor() 3 5 257 N/A 1 0 0 1 1 Pegasus.Controls.TreeViewBase<T>..c ctor() OnItemCollectionChanged (Object,NotifyCollectionC hangedEventArgs) 3 1 159 N/A 13 4 2 10 1 Pegasus.Controls.ItemMonitor<T>.OnI temCollectionChanged(Object,Notify CollectionChangedEventArgs) HandleRemovedChildItem s(ICollection<T>,NotifyCol lectionChangedEventArgs) 2 1 142 N/A 12 2 2 9 1 Pegasus.Controls.ItemMonitor<T>.Ha ndleRemovedChildItems(ICollection<T >,NotifyCollectionChangedEventArgs) OnRender(DrawingContex t) 4 8 499 N/A 27 6 1 12 1 Pegasus.Controls.Ruler.OnRender(Dra wingContext) Sum: 3 3 2 2 155 0 149 28 14 89 10 Average: 3 3. 2 215 .5 0 14. 9 2. 8 1.4 8.9 1 Minimum: 1 4 91 0 1 0 0 1 1 Maximum: 5 8 499 0 27 6 3 13 1 Standard deviation: 1 2. 3 8 4 112 .01 0 8.0 554 1. 72 05 1.1 136 3.7 26 9 0 Variance: 1 5 12 546 0 64. 89 2. 96 1.2 4 13. 89 0
  15. 15. 3. 3 6 WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the condition. --> Group {Code Quality} // <Name>Methods too big (NbLinesOfCode)</Name> WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE NbLinesOfCode > 30 ORDER BY NbLinesOfCode DESC // METHODS WHERE NbLinesOfCode > 30 are extremely complex // and should be split in smaller methods // (except if they are automatically generated by a tool). // See the definition of the NbLinesOfCode metric here // http://www.ndepend.com/Metrics.aspx#NbLinesOfCode methods # lin es of cod e (LO C) Full Name IntialLoad() 801 Pegasus.Main.RptFreight.IntialLoad() ApplyReportsTabSecurity() 726 Pegasus.Main.RibbonMenuTest.ApplyReportsTabSecurity() intialLoad() 627 Pegasus.Main.RPTFLC.intialLoad() intialLoad() 453 Pegasus.Main.RptLTM.intialLoad() cboJobCard_SelectionChanged(Objec t,SelectionChangedEventArgs) 435 Pegasus.PRCI.UIElements.PRCICosting.cboJobCard_Selectio nChanged(Object,SelectionChangedEventArgs) xamExpenses_CellUpdated(Object,Ce llUpdatedEventArgs) 406 Pegasus.ShippingLine.UIElements.SHQuotation.xamExpense s_CellUpdated(Object,CellUpdatedEventArgs) intialLoad() 358 Pegasus.Main.RptNVOCC.intialLoad() intialLoad() 346 Pegasus.Main.RptSL.intialLoad() xamExpenses_CellUpdated(Object,Ce llUpdatedEventArgs) 345 Pegasus.FlightCargo.UIElements.Quotation.xamExpenses_C ellUpdated(Object,CellUpdatedEventArgs) SaveRecord() 327 Pegasus.PRCI.UIElements.PRCICosting.SaveRecord() Sum: 4 824 Average: 482 .4 Minimum: 327 Maximum: 801 Standard deviation: 163 .65
  16. 16. Variance: 26 781 WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the condition. --> Group {Code Quality} // <Name>Methods too big (NbILInstructions)</Name> WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE NbILInstructions > 200 ORDER BY NbILInstructions DESC // METHODS WHERE NbILInstructions > 200 are extremely complex // and should be split in smaller methods // (except if they are automatically generated by a tool). // See the definition of the NbILInstructions metric here // http://www.ndepend.com/Metrics.aspx#NbILInstructions methods # IL instru ctions Full Name ApplyReportsTabSecurity() 4 585 Pegasus.Main.RibbonMenuTest.ApplyReportsTabSecurity () System.Windows.Markup.IComponent Connector.Connect(Int32,Object) 4 358 Pegasus.Main.RibbonMenuTest.System.Windows.Markup. IComponentConnector.Connect(Int32,Object) IntialLoad() 3 892 Pegasus.Main.RptFreight.IntialLoad() xamExpenses_CellUpdated(Object,Ce llUpdatedEventArgs) 3 870 Pegasus.ShippingLine.UIElements.SHQuotation.xamExpe nses_CellUpdated(Object,CellUpdatedEventArgs) xamExpenses_CellUpdated(Object,Ce llUpdatedEventArgs) 3 177 Pegasus.FlightCargo.UIElements.Quotation.xamExpenses _CellUpdated(Object,CellUpdatedEventArgs) intialLoad() 3 061 Pegasus.Main.RPTFLC.intialLoad() cboJobCard_SelectionChanged(Objec t,SelectionChangedEventArgs) 3 028 Pegasus.PRCI.UIElements.PRCICosting.cboJobCard_Selec tionChanged(Object,SelectionChangedEventArgs) CheckGrid() 2 866 Pegasus.Warehouse.UIElements.WHConBreaking.CheckG rid() ValidateRecord() 2 636 Pegasus.General.UIElements.Cargo.RateMaster.Validate Record() SaveRecord() 2 452 Pegasus.PRCI.UIElements.PRCICosting.SaveRecord() Sum: 33 925 Average: 3 392 Minimum: 2 452 Maximum: 4 585 Standard deviation: 696.7 8 Variance: 485 497
  17. 17. WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the condition. --> Group {Code Quality} // <Name>Methods too complex (ILCyclomaticComplexity)</Name> WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE ILCyclomaticComplexity > 40 ORDER BY ILCyclomaticComplexity DESC // METHODS WHERE ILCyclomaticComplexity > 20 // are hard to understand and maintain. // METHODS WHERE ILCyclomaticComplexity > 40 // are extremely complex and should be split // in smaller methods // (except if they are automatically generated by a tool). // See the definition of the ILCyclomaticComplexity metric here // http://www.ndepend.com/Metrics.aspx#ILCC methods IL Cyclo matic Comp lexity (ILCC) Full Name System.Windows.Markup.IComponent Connector.Connect(Int32,Object) 561 Pegasus.Main.RibbonMenuTest.System.Windows.Markup. IComponentConnector.Connect(Int32,Object) xamExpenses_CellUpdated(Object,Cel lUpdatedEventArgs) 268 Pegasus.ShippingLine.UIElements.SHQuotation.xamExpe nses_CellUpdated(Object,CellUpdatedEventArgs) ApplyReportsTabSecurity() 245 Pegasus.Main.RibbonMenuTest.ApplyReportsTabSecurity( ) xamExpenses_CellUpdated(Object,Cel lUpdatedEventArgs) 194 Pegasus.FlightCargo.UIElements.Quotation.xamExpenses _CellUpdated(Object,CellUpdatedEventArgs) SaveRecord() 191 Pegasus.Accounts.UIElements.PostunPost.SaveRecord() GetWHConBreakDetail() 185 Pegasus.Warehouse.UIElements.WHConBreaking.GetWH ConBreakDetail() cboJobCard_SelectionChanged(Object ,SelectionChangedEventArgs) 184 Pegasus.PRCI.UIElements.PRCICosting.cboJobCard_Selec tionChanged(Object,SelectionChangedEventArgs) GetExpensesFromGrid() 177 Pegasus.TMS.UIElements.TMSQuotation.GetExpensesFro mGrid() SaveRecord() 163 Pegasus.PRCI.UIElements.PRCICosting.SaveRecord() xamExpenses_CellUpdated(Object,Cel lUpdatedEventArgs) 156 Pegasus.Warehouse.UIElements.WHQuotation.xamExpen ses_CellUpdated(Object,CellUpdatedEventArgs) Sum: 2 324 Average: 232.4 Minimum: 156 Maximum: 561 Standard deviation: 114.4 1 Variance: 13 090
  18. 18. WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the condition. --> Group {Code Quality} // <Name>Methods too complex (ILNestingDepth)</Name> WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE ILNestingDepth > 4 ORDER BY ILNestingDepth DESC // METHODS WHERE ILNestingDepth > 4 are hard // to understand and maintain. // METHODS WHERE ILNestingDepth > 8 is higher // than 8 are extremely complex // and should be split in smaller methods // (except if they are automatically generated by a tool). // See the definition of the NbILInstructions metric here // http://www.NDepend.com/Metrics.aspx#ILNestingDepth methods IL Nes tin g De pth Full Name MakeChargeCodeList(Boolean,Int32, Int32,Int32,Int32,Int32,Int32,Int32) 21 Pegasus.TMS.UIElements.TMSQuotation.MakeChargeCodeList (Boolean,Int32,Int32,Int32,Int32,Int32,Int32,Int32) CheckGrid() 20 Pegasus.Warehouse.UIElements.WHConMoveHead.CheckGrid () MakeChargeCodeList(Boolean,Int32, Int32,Int32,Int32,Decimal) 19 Pegasus.ShippingLine.UIElements.SHQuotation.MakeChargeC odeList(Boolean,Int32,Int32,Int32,Int32,Decimal) MakeChargeCodeList(Boolean,Int32, Int32,Int32,Int32,Decimal) 18 Pegasus.NVOCC.UIElements.NVQuotation.MakeChargeCodeLi st(Boolean,Int32,Int32,Int32,Int32,Decimal) MakeChargeCodeList(Boolean,Int32, Int32,Int32,Int32,Decimal,Int32) 17 Pegasus.Handlers.QuotationHandler.MakeChargeCodeList(Bo olean,Int32,Int32,Int32,Int32,Decimal,Int32) xamWHConBreakDetail_CellActivati ng(Object,CellActivatingEventArgs) 17 Pegasus.Warehouse.UIElements.WHConBreaking.xamWHCon BreakDetail_CellActivating(Object,CellActivatingEventArgs) CheckGrid() 17 Pegasus.Warehouse.UIElements.WHConBreaking.CheckGrid() MakeChargeCodeList(Boolean,Int32, Int32,Int32,Int32,Decimal) 17 Pegasus.FlightCargo.UIElements.Quotation.MakeChargeCode List(Boolean,Int32,Int32,Int32,Int32,Decimal) CheckGrid() 14 Pegasus.General.UIElements.Central.PRCIDocDefMaster.Che ckGrid() Control_GotFocusExcludeGrids(Obje ct,RoutedEventArgs) 13 Pegasus.General.EventMethods.Control_GotFocusExcludeGri ds(Object,RoutedEventArgs) Sum: 173 Average: 17. 3 Minimum: 13 Maximum: 21
  19. 19. Standard deviation: 2.3 259 Variance: 5.4 1 WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the condition. --> Group {Code Quality} // <Name>Methods poorly commented (PercentageComment)</Name> WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE PercentageComment < 20 AND NbLinesOfCode > 10 ORDER BY PercentageComment ASC // METHODS WHERE %Comment < 20 and that have // at least 10 lines of code should be more commented. // See the definition of the PercentageComment metric here // http://www.ndepend.com/Metrics.aspx#PercentageComment methods Perce ntage Comm ent # line s of cod e (LO C) Full Name cboClient_KeyDown(Object,Ke yEventArgs) N/A 16 Pegasus.Cargo.UIElements.CustomerInquiry.cboClient_Ke yDown(Object,KeyEventArgs) ShowRecordFromList(Object,M ouseButtonEventArgs) N/A 52 Pegasus.Cargo.UIElements.CustomerInquiry.ShowRecordF romList(Object,MouseButtonEventArgs) ValidateRecord() N/A 47 Pegasus.Cargo.UIElements.CustomerInquiry.ValidateReco rd() EvalKeyDown(Object,KeyEvent Args) N/A 16 Pegasus.Cargo.UIElements.CustomerInquiry.EvalKeyDown (Object,KeyEventArgs) TypeKeyDown(Object,KeyEven tArgs) N/A 16 Pegasus.Cargo.UIElements.CustomerInquiry.TypeKeyDow n(Object,KeyEventArgs) CategoryKeyDown(Object,KeyE ventArgs) N/A 16 Pegasus.Cargo.UIElements.CustomerInquiry.CategoryKey Down(Object,KeyEventArgs) SaveRecord() N/A 36 Pegasus.Cargo.UIElements.CustomerInquiry.SaveRecord() EnableDisable(Boolean) N/A 18 Pegasus.Cargo.UIElements.CustomerInquiry.EnableDisabl e(Boolean) FindRecord() N/A 57 Pegasus.Cargo.UIElements.CustomerInquiry.FindRecord() IsPrefixExists(Int32,Int32,Int32 ,String,Int32) N/A 15 Pegasus.Cargo.UIElements.CustomerInquiry.IsPrefixExists (Int32,Int32,Int32,String,Int32) Sum: 0 289 Average: 0 28. 9 Minimum: 0 15
  20. 20. Maximum: 0 57 Standard deviation: 0 16. 367 Variance: 0 267 .89 WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the condition. --> Group {Code Quality} // <Name>Methods with too many parameters (NbParameters)</Name> WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE NbParameters > 5 ORDER BY NbParameters DESC // 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.ndepend.com/Metrics.aspx#NbParameters methods # Pa ra m et er s Full Name UpdateTransactionDetail(WHJobCardHea d,Commodity,WHMaster,WHRack,WHLoc ation,Units,Boolean,Boolean,Int32,Int32) 10 Pegasus.Warehouse.UIElements.WHCommercialInvoice.U pdateTransactionDetail(WHJobCardHead,Commodity,WH Master,WHRack,WHLocation,Units,Boolean,Boolean,Int32 ,Int32) CCUpdateSpaceAllocation(WHJobCardHe ad,Commodity,WHMaster,WHRack,WHLo cation,Units,Boolean,Boolean,Int32,Int3 2) 10 Pegasus.Warehouse.UIElements.WHDeliveryOrder.CCUpd ateSpaceAllocation(WHJobCardHead,Commodity,WHMast er,WHRack,WHLocation,Units,Boolean,Boolean,Int32,Int 32) .ctor(ServerInfoHeader,String,ExtensionS ettings,DataRetrievalPlan,String,ActiveSt ate,String,String,String,ParameterValue OrFieldReference[]) 10 Pegasus.Main.RSServiceReference05.GetDataDrivenSubsc riptionPropertiesResponse..ctor(ServerInfoHeader,String, ExtensionSettings,DataRetrievalPlan,String,ActiveState,S tring,String,String,ParameterValueOrFieldReference[]) UpdateSpaceAllocation(WHJobCardHead, Commodity,WHMaster,WHRack,WHLocati on,Units,Boolean,Boolean,Int32,Int32) 10 Pegasus.Warehouse.UIElements.WHCommercialInvoice.U pdateSpaceAllocation(WHJobCardHead,Commodity,WHM aster,WHRack,WHLocation,Units,Boolean,Boolean,Int32,I nt32) GetDataDrivenSubscriptionProperties(Str ing,String&,ExtensionSettings&,DataRetr ievalPlan&,String&,ActiveState&,String& ,String&,String&,ParameterValueOrField Reference[]&) 10 Pegasus.Main.RSServiceReference05.ReportingService200 5SoapClient.GetDataDrivenSubscriptionProperties(String, String&,ExtensionSettings&,DataRetrievalPlan&,String&, ActiveState&,String&,String&,String&,ParameterValueOr FieldReference[]&)
  21. 21. CreateDataDrivenSubscription(BatchHea der,String,ExtensionSettings,DataRetriev alPlan,String,String,String,ParameterVal ueOrFieldReference[],String&) 9 Pegasus.Main.RSServiceReference05.ReportingService200 5SoapClient.CreateDataDrivenSubscription(BatchHeader, String,ExtensionSettings,DataRetrievalPlan,String,String, String,ParameterValueOrFieldReference[],String&) .ctor(ServerInfoHeader,String,ExtensionS ettings,String,ActiveState,String,String,S tring,ParameterValue[]) 9 Pegasus.Main.RSServiceReference05.GetSubscriptionProp ertiesResponse..ctor(ServerInfoHeader,String,ExtensionS ettings,String,ActiveState,String,String,String,Parameter Value[]) GetSubscriptionProperties(String,String& ,ExtensionSettings&,String&,ActiveState &,String&,String&,String&,ParameterVal ue[]&) 9 Pegasus.Main.RSServiceReference05.ReportingService200 5SoapClient.GetSubscriptionProperties(String,String&,Ext ensionSettings&,String&,ActiveState&,String&,String&,St ring&,ParameterValue[]&) MakeChargeCodeList(Boolean,Int32,Int32 ,Int32,Int32,Int32,Int32,Int32) 8 Pegasus.TMS.UIElements.TMSQuotation.MakeChargeCode List(Boolean,Int32,Int32,Int32,Int32,Int32,Int32,Int32) .ctor(BatchHeader,String,ExtensionSetti ngs,DataRetrievalPlan,String,String,Strin g,ParameterValueOrFieldReference[]) 8 Pegasus.Main.RSServiceReference05.CreateDataDrivenSu bscriptionRequest..ctor(BatchHeader,String,ExtensionSet tings,DataRetrievalPlan,String,String,String,ParameterVa lueOrFieldReference[]) Sum: 93 Average: 9. 3 Minimum: 8 Maximum: 10 Standard deviation: 0. 78 10 2 Variance: 0. 61 WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the condition. --> Group {Code Quality} // <Name>Methods with too many local variables (NbVariables)</Name> WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE NbVariables > 15 ORDER BY NbVariables DESC // METHODS WHERE NbVariables > 8 are hard to understand and maintain. // METHODS WHERE NbVariables > 15 are extremely complex // and should be split in smaller methods // (except if they are automatically generated by a tool). // See the definition of the Nbvariables metric here // http://www.ndepend.com/Metrics.aspx#Nbvariables methods # Vari able s Full Name xamWHConBreakDetail_CellActivati 55 Pegasus.Warehouse.UIElements.WHConBreaking.xamWHCon
  22. 22. ng(Object,CellActivatingEventArgs) BreakDetail_CellActivating(Object,CellActivatingEventArgs) xamWHConMoveDetail_CellActivati ng(Object,CellActivatingEventArgs) 53 Pegasus.Warehouse.UIElements.WHConMoveHead.xamWHCo nMoveDetail_CellActivating(Object,CellActivatingEventArgs) xamDgGrn_CellActivating(Object,C ellActivatingEventArgs) 39 Pegasus.Warehouse.UIElements.WHGRN.xamDgGrn_CellActi vating(Object,CellActivatingEventArgs) xamExpenses_CellUpdated(Object, CellUpdatedEventArgs) 37 Pegasus.TMS.UIElements.TMSQuotation.xamExpenses_CellUp dated(Object,CellUpdatedEventArgs) CheckGrid() 34 Pegasus.Warehouse.UIElements.WHConMoveHead.CheckGrid () btnGenerateEDI_Click(Object,Rout edEventArgs) 33 Pegasus.ShippingLine.UIElements.SHManifest.btnGenerateED I_Click(Object,RoutedEventArgs) btnGenerateEDI_Click(Object,Rout edEventArgs) 33 Pegasus.NVOCC.UIElements.NVManifest.btnGenerateEDI_Cli ck(Object,RoutedEventArgs) SaveVoucher() 32 Pegasus.PRCI.UIElements.PRCIInvoice.SaveVoucher() SetAirFreight() 31 Pegasus.Handlers.CnFJobCardHandler.SetAirFreight() LoadControl() 31 Pegasus.Handlers.CnFJobCardHandler.LoadControl() Sum: 378 Average: 37.8 Minimum: 31 Maximum: 55 Standard deviation: 8.45 93 Variance: 71.5 6 WARNING: The following CQL constraint is not satisfied. 10 types on 1155 tested match the condition. --> Group {Code Quality Type Metrics} // <Name>Types with too many methods</Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE NbMethods > 20 ORDER BY NbMethods DESC // TYPES WHERE NbMethods > 20 might be hard to // understand and maintain // but there might be cases where it is relevant // to have a high value for NbMethods. // For example, the System.Windows.Forms.DataGridView // standard class has more than 1000 methods. // See the definition of the NbMethods metric here // http://www.ndepend.com/Metrics.aspx#NbMethods types # Method s Full Name ReportingService2005SoapCli ent 211 Pegasus.Main.RSServiceReference05.ReportingService2005Soap Client
  23. 23. HouseBillofLading 108 Pegasus.Cargo.UIElements.HouseBillofLading MasterBillofLading 107 Pegasus.Cargo.UIElements.MasterBillofLading ReportingService2005Soap 103 Pegasus.Main.RSServiceReference05.ReportingService2005Soap RptMIS 101 Pegasus.Main.RptMIS TreeViewBase<T> 100 Pegasus.Controls.TreeViewBase<T> NVJobCard 98 Pegasus.NVOCC.UIElements.NVJobCard SHJobCard 95 Pegasus.ShippingLine.UIElements.SHJobCard Resources 84 Pegasus.Common.Properties.Resources WHJobCard 81 Pegasus.Warehouse.UIElements.WHJobCard Sum: 1 088 Average: 108.8 Minimum: 81 Maximum: 211 Standard deviation: 35.094 Variance: 1 231 WARNING: The following CQL constraint is not satisfied. 10 types on 1155 tested match the condition. --> Group {Code Quality Type Metrics} // <Name>Types with too many fields</Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE NbFields > 20 AND !IsEnumeration ORDER BY NbFields DESC // TYPES WHERE NbFields > 20 AND !IsEnumeration // might be hard to understand and maintain // but there might be cases where it is relevant // to have a high value for NbFields. // For example, the System.Windows.Forms.Control // standard class has more than 200 fields. // The value of the metric NbFields might be a better // indicator of complex type. // See the definition of the NbFields metric here // http://www.ndepend.com/Metrics.aspx#NbFields types # Fields Full Name RibbonMenuTest 558 Pegasus.Main.RibbonMenuTest JobCard 151 Pegasus.Cargo.UIElements.JobCard RPTFLC 148 Pegasus.Main.RPTFLC RptFreight 138 Pegasus.Main.RptFreight NVJobCard 137 Pegasus.NVOCC.UIElements.NVJobCard RptMain 127 Pegasus.Main.RptMain SHJobCard 121 Pegasus.ShippingLine.UIElements.SHJobCard
  24. 24. HouseBillofLading 112 Pegasus.Cargo.UIElements.HouseBillofLading NVHBL 108 Pegasus.NVOCC.UIElements.NVHBL NVMBL 108 Pegasus.NVOCC.UIElements.NVMBL Sum: 1 708 Average: 170.8 Minimum: 108 Maximum: 558 Standard deviation: 129.92 Variance: 16 879 WARNING: The following CQL constraint is not satisfied. 10 types on 1155 tested match the condition. --> Group {Code Quality Type Metrics} // <Name>Types with poor cohesion (LCOM)</Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE LCOM > 0.8 AND NbFields > 10 AND NbMethods >10 ORDER BY LCOM DESC // 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.ndepend.com/Metrics.aspx#LCOM types Lack of Cohesion Of Methods (LCOM) # Fields # Methods Full Name NVJobCard 0.97334 137 98 Pegasus.NVOCC.UIElements.NVJobCard SHInventry 0.97276 45 31 Pegasus.ShippingLine.UIElements.SHInventry NVInventry 0.97276 45 31 Pegasus.NVOCC.UIElements.NVInventry SHJobCard 0.97155 121 95 Pegasus.ShippingLine.UIElements.SHJobCard MasterBillofLading 0.96742 105 107 Pegasus.Cargo.UIElements.MasterBillofLading HouseBillofLading 0.96718 112 108 Pegasus.Cargo.UIElements.HouseBillofLading SHHBL 0.96681 108 77 Pegasus.ShippingLine.UIElements.SHHBL NVHBL 0.96681 108 77 Pegasus.NVOCC.UIElements.NVHBL NVMBL 0.96681 108 77 Pegasus.NVOCC.UIElements.NVMBL SHMBL 0.96681 108 77 Pegasus.ShippingLine.UIElements.SHMBL Sum: 9.6923 997 778 Average: 0.96923 99.7 77.8 Minimum: 0.96681 45 31
  25. 25. Maximum: 0.97334 137 108 Standard deviation: 0.0027582 28.782 26.176 Variance: 7.607416E-06 828.41 685.16 WARNING: The following CQL constraint is not satisfied. 10 types on 1155 tested match the condition. --> Group {Code Quality Type Metrics} // <Name>Types with poor cohesion (LCOMHS)</Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE LCOMHS > 0.95 AND NbFields > 10 AND NbMethods >10 ORDER BY LCOMHS DESC // TYPES WHERE LCOMHS > 1.0 AND NbFields > 10 AND // NbMethods >10 should be avoided. // Note that this constraint is stronger // than the constraint // TYPES WHERE LCOM > 0.8 AND NbFields > 10 AND NbMethods >10. // See the definition of the LCOMHS metric here // http://www.ndepend.com/Metrics.aspx#LCOMHS types LCOM Henderson -Sellers (LCOMHS) # Fields # Method s Full Name NVInventry 1.0052 45 31 Pegasus.NVOCC.UIElements.NVInventry SHInventry 1.0052 45 31 Pegasus.ShippingLine.UIElements.SHInventry NVJobCard 0.98337 137 98 Pegasus.NVOCC.UIElements.NVJobCard SHJobCard 0.98189 121 95 Pegasus.ShippingLine.UIElements.SHJobCard ReportParameter 0.97961 25 52 Pegasus.Main.RSServiceReference05.ReportParamete r NVMBL 0.97953 108 77 Pegasus.NVOCC.UIElements.NVMBL NVHBL 0.97953 108 77 Pegasus.NVOCC.UIElements.NVHBL SHMBL 0.97953 108 77 Pegasus.ShippingLine.UIElements.SHMBL SHHBL 0.97953 108 77 Pegasus.ShippingLine.UIElements.SHHBL MasterBillofLadin g 0.97655 105 107 Pegasus.Cargo.UIElements.MasterBillofLading Sum: 9.8499 910 722 Average: 0.98499 91 72.2 Minimum: 0.97655 25 31 Maximum: 1.0052 137 107 Standard deviation: 0.010229 35.99 4 25.083 Variance: 0.00010462 1 295 629.16
  26. 26. WARNING: The following CQL constraint is not satisfied. 1 assemblies on 33 tested match the condition. --> Group {Design} // <Name>Assembly should not contain namespaces dependency cycles</Name> WARN IF Count > 0 IN SELECT TOP 10 ASSEMBLIES WHERE ContainsNamespaceDependencyCycle // Dependency cycles between namespaces must be avoided // in order to have a levelized and comprehensive design. // More info available on the screencast 'Reduce the complexity' // http://s3.amazonaws.com/NDependOnlineDemos/NDependReducingComplexity_viewl et_swf.html // You can also read this article // http://www.theserverside.net/tt/articles/showarticle.tss?id=ControllingDep endencies // For any assembly matched, to display internal namespaces dependency cycle( s), // just right-click the assembly and select: // --> View internal Dependency Cycles on Graph ... or ... // --> View internal Dependency Cycles on Matrix (Recommended) // In the Matrix, dependency cycles are represented with red squares and bla ck cells. // To browse easily dependency cycles, the Matrix comes with the option: // --> Display Direct and Indirect Dependencies assemblies # lines of code (LOC) Full Name Pegasus.Cargo 20 358 Pegasus.Cargo Sum: 20 358 Average: 20 358 Minimum: 20 358 Maximum: 20 358 Standard deviation: NaN Variance: -4 WARNING: The following CQL constraint is not satisfied. 10 types on 638 tested match the condition. --> Group {Design} // <Name>Type should not have too many responsabilities (Efferent Coupling)</ Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE TypeCe > 50 ORDER BY TypeCe DESC // The Efferent Coupling (TypeCe) for a particular type is // the number of types it directly depends on. Notice that // types declared in third party assemblies are taken into account. // Types that depends on too many others type (more than 50) // are complex and have more than one responsability. They // are good candidate for refactoring.
  27. 27. // More information available in this article: // http://codebetter.com/blogs/patricksmacchia/archive/2008/02/15/code- metrics-on-coupling-dead-code-design-flaws-and-re-engineering.aspx types Efferent couplin g (TypeCe ) Full Name ReportingService2005SoapCli ent 262 Pegasus.Main.RSServiceReference05.ReportingService2005Soap Client ReportingService2005Soap 211 Pegasus.Main.RSServiceReference05.ReportingService2005Soap Quotation 158 Pegasus.Cargo.UIElements.Quotation NVJobCard 154 Pegasus.NVOCC.UIElements.NVJobCard SHJobCard 151 Pegasus.ShippingLine.UIElements.SHJobCard CustomerInquiry 149 Pegasus.Cargo.UIElements.CustomerInquiry NVQuotation 147 Pegasus.NVOCC.UIElements.NVQuotation WHQuotation 144 Pegasus.Warehouse.UIElements.WHQuotation SHQuotation 144 Pegasus.ShippingLine.UIElements.SHQuotation PRCICosting 141 Pegasus.PRCI.UIElements.PRCICosting Sum: 1 661 Average: 166.1 Minimum: 141 Maximum: 262 Standard deviation: 37.305 Variance: 1 391 WARNING: The following CQL constraint is not satisfied. 10 types on 1155 tested match the condition. --> Group {Design} // <Name>A stateless class or structure might be turned into a static type</N ame> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE SizeOfInst ==0 AND // For accuracy, this constraint doesn't take // account of types that implement some interfaces. // and classes that have a base class and don't // derive directly from System.Object, or classes // that have sub-classes children. NbInterfacesImplemented == 0 AND ((IsClass AND DepthOfInheritance == 1 AND NbChildren == 0) OR IsStructure) AND !IsStatic AND !IsGeneric
  28. 28. // this rule indicates stateless types that might // eventually be turned into static classes. // See the definition of the SizeOfInst metric here // http://www.ndepend.com/Metrics.aspx#SizeOfInst types Size of instanc e # interfaces implement ed Depth of inheritan ce # Childre n Full Name clsNHiber 0 0 1 0 Pegasus.Common.clsNHiber Resources 0 0 1 0 Pegasus.Common.Properties.Resources Resource 0 0 1 0 Pegasus.Common.Languages.Resource Message 0 0 1 0 Pegasus.Controls.Message MessageBox 0 0 1 0 Pegasus.Controls.MessageBox Resources 0 0 1 0 Pegasus.Controls.Properties.Resources ExplicitBindingLibr ary 0 0 1 0 Pegasus.SearchEngine.ExplicitBindingLi brary Resources 0 0 1 0 Pegasus.SearchEngine.Properties.Resou rces sGlobal 0 0 1 0 Pegasus.General.sGlobal EventMethods 0 0 1 0 Pegasus.General.EventMethods Sum: 0 0 10 0 Average: 0 0 1 0 Minimum: 0 0 1 0 Maximum: 0 0 1 0 Standard deviation: 0 0 0 0 Variance: 0 0 0 0 WARNING: The following CQL constraint is not satisfied. 10 types on 1155 tested match the condition. --> Group {Design} // <Name>Class shouldn't be too deep in inheritance tree </Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE DepthOfInheritance >= 6 ORDER BY DepthOfInheritance DESC // Branches too long in the derivation should be avoided. // See the definition of the DepthOfInheritance metric here // http://www.ndepend.com/Metrics.aspx#DIT // You can discard specific classes with by-design high // DepthOfInheritance with such condition for example: // AND !DeriveFrom "System.Windows.Forms.Form" types Depth of inheritance Full Name CategoryTree 10 Pegasus.Controls.CategoryTree
  29. 29. MenuExpander 10 Pegasus.Main.MenuExpander NavigationMain 10 Pegasus.Main.NavigationMain frmFrameAddNew 9 Pegasus.SearchEngine.frmFrameAddNew Buttons 9 Pegasus.Controls.Buttons frmWinUltraGrid 9 Pegasus.SearchEngine.frmWinUltraGrid TreeView 9 Pegasus.General.Controls.TreeView AuthenticationPrompt 9 Pegasus.Controls.AuthenticationPrompt TreeViewBase<T> 9 Pegasus.Controls.TreeViewBase<T> PegasusMessageBox 9 Pegasus.Controls.PegasusMessageBox Sum: 93 Average: 9.3 Minimum: 9 Maximum: 10 Standard deviation: 0.45825 Variance: 0.21 WARNING: The following CQL constraint is not satisfied. 10 types on 1155 tested match the condition. --> Group {Design} // <Name>Class with no descendant should be sealed if possible</Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE IsClass AND NbChildren ==0 AND !IsSealed AND !IsStatic // AND !IsPublic <-- You might want to add this condition // if you are developping a framework // with classes that are intended to be // sub-classed by your clients. ORDER BY NbLinesOfCode types # Childre n # lines of code (LOC ) Full Name CodeDesc 0 0 Pegasus.Warehouse.UIElements.CodeDesc WHJobCosting+CodeDesc 0 0 Pegasus.Warehouse.UIElements.WHJobCosting+CodeDesc SHCosting+CodeDesc 0 0 Pegasus.ShippingLine.UIElements.SHCosting+CodeDesc SHEstimation+CodeDesc 0 0 Pegasus.ShippingLine.UIElements.SHEstimation+CodeDesc SHContainerTracking+CodeD esc 0 0 Pegasus.ShippingLine.UIElements.SHContainerTracking+Co deDesc InvalidDataSourceReference 0 0 Pegasus.Main.RSServiceReference05.InvalidDataSourceRef erence
  30. 30. NVQuotation+CodeDesc 0 0 Pegasus.NVOCC.UIElements.NVQuotation+CodeDesc Voucher+CodeDesc 0 0 Pegasus.Accounts.UIElements.Voucher+CodeDesc NVEstimation+CodeDesc 0 0 Pegasus.NVOCC.UIElements.NVEstimation+CodeDesc NVContainerTracking+Code Desc 0 0 Pegasus.NVOCC.UIElements.NVContainerTracking+CodeDe sc Sum: 0 0 Average: 0 0 Minimum: 0 0 Maximum: 0 0 Standard deviation: 0 0 Variance: 0 0 WARNING: The following CQL constraint is not satisfied. 10 types on 1155 tested match the condition. --> Group {Design} // <Name>Classes that are candidate to be turned into Structures</Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE IsClass AND !IsStatic AND SizeOfInst > 0 AND SizeOfInst <= 16 AND // Structure instance must not be too big, // else it degrades performance. NbChildren == 0 AND // Must not have children DepthOfInheritance == 1 // Must derive directly from System.Object // AND IsSealed <-- You might want to add this condition // to restreint the set. // AND IsImmutable <-- Structures should be immutable type. // AND !IsPublic <-- You might want to add this condition if // you are developping a framework with classes // that are intended to be sub-classed by // your clients. types Size of instan ce # Childr en Depth of inheritan ce Full Name Common 10 0 1 Pegasus.Common.Common ItemMonitor<T> 12 0 1 Pegasus.Controls.ItemMonitor<T> TreeLayout 8 0 1 Pegasus.Controls.TreeLayout Convertor 12 0 1 Pegasus.General.Convertor Voucher+CodeDesc 8 0 1 Pegasus.Accounts.UIElements.Voucher+CodeDes c SalesTaxCalculationType 8 0 1 Pegasus.NVOCC.UIElements.SalesTaxCalculation Type NVEstimation+CodeDesc 8 0 1 Pegasus.NVOCC.UIElements.NVEstimation+Code
  31. 31. Desc NVCosting+CodeDesc 8 0 1 Pegasus.NVOCC.UIElements.NVCosting+CodeDes c NVContainerTracking+Co deDesc 8 0 1 Pegasus.NVOCC.UIElements.NVContainerTrackin g+CodeDesc WHJobCosting+CodeDesc 8 0 1 Pegasus.Warehouse.UIElements.WHJobCosting+ CodeDesc Sum: 90 0 10 Average: 9 0 1 Minimum: 8 0 1 Maximum: 12 0 1 Standard deviation: 1.6125 0 0 Variance: 2.6 0 0 WARNING: The following CQL constraint is not satisfied. 10 namespaces on 124 tested match the condition. --> Group {Design} // <Name>Avoid namespaces with few types</Name> WARN IF Count > 0 IN SELECT TOP 10 NAMESPACES WHERE NbTypes < 5 ORDER BY NbTypes ASC // Make sure that there is a logical organization // to each of your namespaces, and that there is a // valid reason for putting types in a sparsely // populated namespace. Namespaces should contain // types that are used together in most scenarios. // When their applications are mutually exclusive, // types should be located in separate namespaces namespaces # Types Full Name Pegasus.RibbonClasses.Util 1 Pegasus.RibbonClasses.Util Pegasus.General.UIElements 1 Pegasus.General.UIElements Pegasus.Main.Security 1 Pegasus.Main.Security Pegasus.General.UIElements.Inventory 1 Pegasus.General.UIElements.Inventory Pegasus 1 Pegasus Pegasus 1 Pegasus Pegasus.Job 1 Pegasus.Job Pegasus.Common.Languages 1 Pegasus.Common.Languages Pegasus.Common.Properties 1 Pegasus.Common.Properties Pegasus.Common.Utilities 1 Pegasus.Common.Utilities Sum: 10 Average: 1 Minimum: 1
  32. 32. Maximum: 1 Standard deviation: 0 Variance: 0 WARNING: The following CQL constraint is not satisfied. 10 types on 1155 tested match the condition. --> Group {Design} // <Name>Nested types should not be visible</Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE IsNested AND !IsPrivate AND !IsInFrameworkAssembly // 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. types # lines of code (LOC) Full Name Common+ComboType N/A Pegasus.Common.Common+ComboType Message+DialogResult N/A Pegasus.Controls.Message+DialogResult Message+MessageBoxButtons N/A Pegasus.Controls.Message+MessageBoxButtons Message+MessageBoxImage N/A Pegasus.Controls.Message+MessageBoxImage Buttons+ButtonsMode N/A Pegasus.Controls.Buttons+ButtonsMode sGlobal+pParams 0 Pegasus.General.sGlobal+pParams TreeView+TypeSearch N/A Pegasus.General.Controls.TreeView+TypeSearch NVQuotation+CodeDesc 0 Pegasus.NVOCC.UIElements.NVQuotation+CodeDesc SHQuotation+CodeDesc 0 Pegasus.ShippingLine.UIElements.SHQuotation+CodeDesc QuotationHandler+CodeDesc 0 Pegasus.Handlers.QuotationHandler+CodeDesc Sum: 0 Average: 0 Minimum: 0 Maximum: 0 Standard deviation: 0 Variance: 0 WARNING: The following CQL constraint is not satisfied. 1 types on 1155 tested match the condition. --> Group {Design} // <Name>Avoid empty interfaces</Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE
  33. 33. IsInterface AND NbMethods == 0 // Interfaces define members that provide a behavior // or usage contract. The functionality described by // the interface can be adopted by any type, // regardless of where the type appears in the // inheritance hierarchy. A type implements an // interface by providing implementations for the // interface's members. An empty interface does not // define any members, and as such, does not define // a contract that can be implemented. // If your design includes empty interfaces that // types are expected to implement, you are probably // using an interface as a marker, or a way of // identifying a group of types. If this identification // will occur at runtime, the correct way to accomplish // this is to use a custom attribute. Use the presence // or absence of the attribute, or the attribute's // properties, to identify the target types. If the // identification must occurs at compile time, then using // an empty interface is acceptable. types # Method s Full Name ReportingService2005SoapCha nnel 0 Pegasus.Main.RSServiceReference05.ReportingService2005Soap Channel Sum: 0 Average: 0 Minimum: 0 Maximum: 0 Standard deviation: 0 Variance: 0 WARNING: The following CQL constraint is not satisfied. 6 assemblies on 33 tested match the condition. --> Group {Design} // <Name>Assemblies with poor cohesion (RelationalCohesion)</Name> WARN IF Count > 0 IN SELECT TOP 10 ASSEMBLIES WHERE NbTypes > 20 AND // Relational Cohesion metrics is relevant only if there a re several types (RelationalCohesion < 1.5 OR RelationalCohesion > 4.0) // As classes inside an assembly should be strongly related, // the cohesion should be high. On the other hand, a value // which is too high may indicate over-coupling. A good range // for RelationalCohesion is 1.5 to 4.0. // See the definition of the RelationalCohesion metric here // http://www.ndepend.com/Metrics.aspx#RelationalCohesion
  34. 34. assemblies # Types Relational cohesion Full Name Pegasus.Accounts 23 0.17391 Pegasus.Accounts Pegasus.NVOCC 24 0.375 Pegasus.NVOCC Pegasus.Warehouse 22 0.22727 Pegasus.Warehouse Pegasus.ShippingLine 24 0.375 Pegasus.ShippingLine Pegasus.Cargo 42 1.1429 Pegasus.Cargo Pegasus.TMS 32 0.09375 Pegasus.TMS Sum: 167 2.3878 Average: 27.833 0.39797 Minimum: 22 0.09375 Maximum: 42 1.1429 Standard deviation: 7.1278 0.34828 Variance: 50.806 0.1213 WARNING: The following CQL constraint is not satisfied. 10 types on 1155 tested match the condition. --> Group {Design Performance} // <Name>Instances size shouldn't be too big (SizeOfInst)</Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE SizeOfInst > 64 ORDER BY SizeOfInst DESC // TYPES WHERE SizeOfInst > 64 might degrade performance // (depending on the number of instances created at runtime) // and might be hard to maintain. However it is not a rule // since sometime there is no alternative (the size of // instances of the System.Net.NetworkInformation.SystemIcmpV6Statistics // standard class is 2064 bytes). // See the definition of the SizeOfInst metric here // http://www.ndepend.com/Metrics.aspx#SizeOfInst types Size of instance Full Name RibbonMenuTest 2 484 Pegasus.Main.RibbonMenuTest RPTFLC 847 Pegasus.Main.RPTFLC frmWinUltraGrid 821 Pegasus.SearchEngine.frmWinUltraGrid RptFreight 807 Pegasus.Main.RptFreight JobCard 797 Pegasus.Cargo.UIElements.JobCard RptMain 763 Pegasus.Main.RptMain NVJobCard 756 Pegasus.NVOCC.UIElements.NVJobCard HouseBillofLading 694 Pegasus.Cargo.UIElements.HouseBillofLading SHJobCard 688 Pegasus.ShippingLine.UIElements.SHJobCard RptLTM 683 Pegasus.Main.RptLTM Sum: 9 340
  35. 35. Average: 934 Minimum: 683 Maximum: 2 484 Standard deviation: 519.59 Variance: 269 977 WARNING: The following CQL constraint is not satisfied. 1069 methods on 10763 tested match the condition. --> Group {Design Performance} // <Name>Boxing/unboxing should be avoided (Method)</Name> WARN IF Percentage > 5 IN SELECT METHODS WHERE IsUsingBoxing OR IsUsingUnboxing // Thanks to generics, boxing and unboxing should be rare. methods # lines of code (LOC) Full Name Sum: 42 945 Average: 40.173 Minimum: 1 Maximum: 801 Standard deviation: 54.227 Variance: 2 940 WARNING: The following CQL constraint is not satisfied. 161 types on 1155 tested match the condition. --> Group {Design Performance} // <Name>Boxing/unboxing should be avoided (Type)</Name> WARN IF Percentage > 5 IN SELECT TYPES WHERE IsUsingBoxing OR IsUsingUnboxing // Thanks to generics, boxing and unboxing should be rare. types # lines of code (LOC) Full Name Sum: 108 946 Average: 676.68 Minimum: 6 Maximum: 2 217 Standard deviation: 506.39 Variance: 256 427 WARNING: The following CQL constraint is not satisfied. 10 methods on 9716 tested match the condition. --> Group {Unused Code / Dead Code} // <Name>Potentially unused methods</Name> WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE
  36. 36. MethodCa == 0 AND // Ca=0 -> No Afferent Coupling -> // The method is not used in the // context of this application. !IsPublic AND // Public methods might be used by // client applications of your assemblies. !IsEntryPoint AND // Main() method is not used by-design. !IsExplicitInterfaceImpl // The IL code never explicitely AND // calls explicit interface methods // implementation. !IsClassConstructor AND // The IL code never explicitely // calls class constructors. !IsFinalizer // The IL code never explicitely // calls finalizers. methods Afferent coupling (MethodC a) Full Name .ctor() 0 Pegasus.Common.Properties.Resources..ctor() .ctor() 0 Pegasus.Common.Languages.Resource..ctor() set_Monitor(ItemMonitor<T>) 0 Pegasus.Controls.TreeViewBase<T>.set_Monitor(ItemMonito r<T>) OnInitialized(EventArgs) 0 Pegasus.Controls.TreeViewBase<T>.OnInitialized(EventArgs ) ArrangeOverride(Size) 0 Pegasus.Controls.ResizingAdorner.ArrangeOverride(Size) get_VisualChildrenCount() 0 Pegasus.Controls.ResizingAdorner.get_VisualChildrenCount( ) GetVisualChild(Int32) 0 Pegasus.Controls.ResizingAdorner.GetVisualChild(Int32) OnRender(DrawingContext) 0 Pegasus.Controls.Ruler.OnRender(DrawingContext) MeasureOverride(Size) 0 Pegasus.Controls.Ruler.MeasureOverride(Size) OnNodeCollapsed(TreeViewIte m) 0 Pegasus.Controls.CategoryTree.OnNodeCollapsed(TreeView Item) Sum: 0 Average: 0 Minimum: 0 Maximum: 0 Standard deviation: 0 Variance: 0 WARNING: The following CQL constraint is not satisfied. 10 fields on 10154 tested match the condition. --> Group {Unused Code / Dead Code}
  37. 37. // <Name>Potentially unused fields</Name> WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE FieldCa == 0 AND // Ca=0 -> No Afferent Coupling -> // The field is not used in the // context of this application. !IsPublic AND // Although not recommended, // public fields might be used by // client applications of your // assemblies. !IsLiteral AND // The IL code never explicitely // uses literal fields. !IsEnumValue AND // The IL code never explicitely // uses enumeration value. !NameIs "value__" // Field named 'value__' are relative // to enumerations and the IL code // never explicitely uses them. fields Afferent coupling (FieldCa) Full Name _BaseCurrency 0 Pegasus.General.sGlobal._BaseCurrency _BaseCurrencyMask 0 Pegasus.General.sGlobal._BaseCurrencyMask whGoods 0 Pegasus.General.UIElements.Central.WHTypeOfGoods.whGoods isEditing 0 Pegasus.General.UIElements.Central.WHTypeOfGoods.isEditing _frmSearch 0 Pegasus.General.UIElements.Central.PRCIDocDefMaster._frmSearch dtAccounts 0 Pegasus.General.UIElements.Cargo.FlightCargoPallet.dtAccounts dtChargeCode 0 Pegasus.General.UIElements.Cargo.FlightCargoPallet.dtChargeCode chargesList 0 Pegasus.General.UIElements.Cargo.FlightCargoPallet.chargesList _TruckMaster 0 Pegasus.General.UIElements.Cargo.DriverMaster._TruckMaster _TransportCompany 0 Pegasus.General.UIElements.Cargo.DriverMaster._TransportCompany Sum: 0 Average: 0 Minimum: 0 Maximum: 0 Standard deviation: 0 Variance: 0 WARNING: The following CQL constraint is not satisfied. 10 types on 638 tested match the condition. --> Group {Unused Code / Dead Code} // <Name>Potentially unused types</Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE TypeCa == 0 AND // Ca=0 -> No Afferent Coupling -> // The type is not used in the
  38. 38. // context of this application. !IsPublic AND // Public types might be used // by client applications of your // assemblies. !NameIs "Program" // Generally, types named Program // contain a Main() entry-point // method and this condition avoid // to consider such type as // unused code. types Afferent coupling (TypeCa) Full Name ICommon 0 Pegasus.Common.ICommon Settings 0 Pegasus.Controls.Properties.Settings Resources 0 Pegasus.Controls.Properties.Resources Settings 0 Pegasus.SearchEngine.Properties.Settings Resources 0 Pegasus.SearchEngine.Properties.Resources Settings 0 Pegasus.General.Properties.Settings Settings 0 Pegasus.Security.Properties.Settings Resources 0 Pegasus.Security.Properties.Resources Settings 0 Pegasus.Accounts.Properties.Settings Resources 0 Pegasus.Job.Properties.Resources Sum: 0 Average: 0 Minimum: 0 Maximum: 0 Standard deviation: 0 Variance: 0 WARNING: The following CQL constraint is not satisfied. 10 fields on 10218 tested match the condition. --> Group {Encapsulation} // <Name>Fields should be declared as private</Name> WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE !IsPrivate AND // These conditions filter cases where fields // doesn't represent state that should be encapsulated. !IsInFrameworkAssembly AND !IsGeneratedByCompiler AND !IsSpecialName AND !IsInitOnly AND !IsLiteral AND !IsEnumValue fields Size of instance Full Name nhConfig 0 Pegasus.Common.clsNHiber.nhConfig
  39. 39. _this 4 Pegasus.Controls.AuthenticationPrompt._this border 4 Pegasus.Controls.AuthenticationPrompt.border gMain 4 Pegasus.Controls.AuthenticationPrompt.gMain lblCaption 4 Pegasus.Controls.AuthenticationPrompt.lblCaption btnClose 4 Pegasus.Controls.AuthenticationPrompt.btnClose txtUserName 4 Pegasus.Controls.AuthenticationPrompt.txtUserName txtPassword 4 Pegasus.Controls.AuthenticationPrompt.txtPassword _ok 4 Pegasus.Controls.AuthenticationPrompt._ok _cancel 4 Pegasus.Controls.AuthenticationPrompt._cancel Sum: 36 Average: 3.6 Minimum: 0 Maximum: 4 Standard deviation: 1.2 Variance: 1.44 WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the condition. --> Group {Encapsulation Methods Optimal Encapsulation} // <Name>Methods that could be declared as 'internal' in C#, 'Friend' in VB. NET</Name> WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE CouldBeInternal AND // Eliminate default constructor from the result. // Whatever the visibility of the declaring class, // default constructors are public and introduce noise // in the current rule. ! ( IsConstructor AND IsPublic AND NbILInstructions == 3) methods # lines of code (LOC ) Full Name get_Factory() 1 Pegasus.Common.clsNHiber.get_Factory() .ctor(T,T) 3 Pegasus.Controls.RoutedTreeItemEventArgs<T>..ctor(T,T) get_ChildCollections() 1 Pegasus.Controls.ItemMonitor<T>.get_ChildCollections() UnregisterRootItems(IEnumerabl e<T>) 4 Pegasus.Controls.ItemMonitor<T>.UnregisterRootItems(IEnum erable<T>) RegisterRootItems(IEnumerable< T>) 4 Pegasus.Controls.ItemMonitor<T>.RegisterRootItems(IEnumera ble<T>)
  40. 40. RegisterItem(String,ICollection< T>) 8 Pegasus.Controls.ItemMonitor<T>.RegisterItem(String,ICollecti on<T>) RemoveNodes(ItemCollection) 6 Pegasus.Controls.ItemMonitor<T>.RemoveNodes(ItemCollectio n) Clear() 7 Pegasus.Controls.ItemMonitor<T>.Clear() .ctor(TreeViewBase<T>) 5 Pegasus.Controls.ItemMonitor<T>..ctor(TreeViewBase<T>) get_SelectedItemId() 1 Pegasus.Controls.TreeLayout.get_SelectedItemId() Sum: 40 Average: 4 Minimum: 1 Maximum: 8 Standard deviation: 2.408 3 Variance: 5.8 WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the condition. --> Group {Encapsulation Methods Optimal Encapsulation} // <Name>Methods that could be declared as 'private' in C#, 'Private' in VB. NET</Name> WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE CouldBePrivate methods # lines of code (LOC ) Full Name get_ReportingURI() 1 Pegasus.Common.Common.get_ReportingURI() set_ReportingURI(String) 1 Pegasus.Common.Common.set_ReportingURI(String) get_EmployeeId() 1 Pegasus.Common.Common.get_EmployeeId() get_CommonBranchID() 1 Pegasus.Common.Common.get_CommonBranchID() set_CommonBranchID(Int16) 1 Pegasus.Common.Common.set_CommonBranchID(Int16) get_ConfigMasterList() 1 Pegasus.Common.Common.get_ConfigMasterList() set_ConfigMasterList(IList) 1 Pegasus.Common.Common.set_ConfigMasterList(IList) Reload() 3 Pegasus.Common.Common.Reload() CloseFactory() 1 Pegasus.Common.Common.CloseFactory() TranformButtonToOperationType(St ring) 7 Pegasus.Common.Common.TranformButtonToOperationTyp e(String) Sum: 18 Average: 1.8 Minimum: 1
  41. 41. Maximum: 7 Standard deviation: 1.83 3 Variance: 3.36 WARNING: The following CQL constraint is not satisfied. 10 types on 1155 tested match the condition. --> Group {Encapsulation Types Optimal Encapsulation} // <Name>Types that could be declared as internal</Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE CouldBeInternal types # lines of code (LOC) Full Name IBusinessLayer<T> N/A Pegasus.Common.IBusinessLayer<T> ValidationException 2 Pegasus.Common.Utilities.ValidationException Resource 9 Pegasus.Common.Languages.Resource RoutedTreeItemEventHandler<T> N/A Pegasus.Controls.RoutedTreeItemEventHandler<T> RoutedTreeItemEventArgs<T> 5 Pegasus.Controls.RoutedTreeItemEventArgs<T> ResizablePanel 3 Pegasus.Controls.ResizablePanel ItemMonitor<T> 174 Pegasus.Controls.ItemMonitor<T> PegasusMessageBox 56 Pegasus.Controls.PegasusMessageBox Message 0 Pegasus.Controls.Message TreeLayout 6 Pegasus.Controls.TreeLayout Sum: 255 Average: 25.5 Minimum: 0 Maximum: 174 Standard deviation: 52.024 Variance: 2 706 WARNING: The following CQL constraint is not satisfied. 3 types on 1155 tested match the condition. --> Group {Encapsulation Types Optimal Encapsulation} // <Name>Types that could be declared as 'private' in C#, 'Private' in VB.NE T</Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE CouldBePrivate types # lines of code (LOC) Full Name NVQuotation+CodeDesc 0 Pegasus.NVOCC.UIElements.NVQuotation+CodeDesc SHQuotation+CodeDesc 0 Pegasus.ShippingLine.UIElements.SHQuotation+CodeDesc Quotation+CodeDesc 0 Pegasus.Cargo.UIElements.Quotation+CodeDesc
  42. 42. Sum: 0 Average: 0 Minimum: 0 Maximum: 0 Standard deviation: 0 Variance: 0 WARNING: The following CQL constraint is not satisfied. 10 fields on 10218 tested match the condition. --> Group {Encapsulation Fields Optimal Encapsulation} // <Name>Fields that could be declared as internal</Name> WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE CouldBeInternal fields Size of instance Full Name xamCity 4 Pegasus.General.UIElements.Main.City.xamCity entityName 4 Pegasus.General.UIElements.Administration.HOItems.entityName isCommon 1 Pegasus.General.UIElements.Administration.HOItems.isCommon _JobCard 4 Pegasus.Cargo.UIElements.JobCard._JobCard _showingRecord 1 Pegasus.Cargo.UIElements.JobCard._showingRecord _JobPort 4 Pegasus.Cargo.UIElements.JobCard._JobPort _JobCarrier 4 Pegasus.Cargo.UIElements.JobCard._JobCarrier pPanel 4 Pegasus.Cargo.UIElements.JobCard.pPanel _dtCommodities 4 Pegasus.Cargo.UIElements.JobCard._dtCommodities _dtDocuments 4 Pegasus.Cargo.UIElements.JobCard._dtDocuments Sum: 34 Average: 3.4 Minimum: 1 Maximum: 4 Standard deviation: 1.2 Variance: 1.44 WARNING: The following CQL constraint is not satisfied. 10 fields on 10218 tested match the condition. --> Group {Encapsulation Fields Optimal Encapsulation} // <Name>Fields that could be declared as 'private' in C#, 'Private' in VB.N ET</Name> WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE CouldBePrivate fields Size of instance Full Name _this 4 Pegasus.Controls.AuthenticationPrompt._this
  43. 43. border 4 Pegasus.Controls.AuthenticationPrompt.border gMain 4 Pegasus.Controls.AuthenticationPrompt.gMain lblCaption 4 Pegasus.Controls.AuthenticationPrompt.lblCaption btnClose 4 Pegasus.Controls.AuthenticationPrompt.btnClose txtUserName 4 Pegasus.Controls.AuthenticationPrompt.txtUserName txtPassword 4 Pegasus.Controls.AuthenticationPrompt.txtPassword _ok 4 Pegasus.Controls.AuthenticationPrompt._ok _cancel 4 Pegasus.Controls.AuthenticationPrompt._cancel canvas1 4 Pegasus.Controls.ResizablePanel.canvas1 Sum: 40 Average: 4 Minimum: 4 Maximum: 4 Standard deviation: 0 Variance: 0 WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the condition. --> Group {Test Coverage} // <Name>Complex methods should be 100% covered by tests</Name> WARN IF Count > 0 IN SELECT TOP 10 METHODS /*OUT OF "YourGeneratedCode" */ WHERE // These metrics' definitions are available here: // http://www.ndepend.com/Metrics.aspx#MetricsOnMethods ( NbILInstructions > 200 OR ILCyclomaticComplexity > 50 OR ILNestingDepth > 4 OR NbParameters > 5 OR NbVariables > 8 OR NbOverloads > 6 ) AND PercentageCoverage < 100 // To run this constraint properly coverage data must be // gathered from NCover™ or Visual Studio™ Coverage. // This can be done throught the menu: // NDepend -> Coverage -> Import Coverage Files // This can be done at analysis time throught the menu: // Project Properties -> Analysis -> Code Coverage // More information on how to import coverage data here: // http://www.ndepend.com/Coverage.aspx methods # IL inst ruct ions IL Cyc lom atic Co mpl IL N es ti ng De # Par am ete rs # Va ria ble s # Ov erl oa ds Per cen tag e Cov era Full Name
  44. 44. exit y (ILC C) pt h ge CheckApproval() 289 12 1 0 3 1 0 Pegasus.Controls.AuthenticationPromp t.CheckApproval() RenderTree(IEnumerable<T >,TreeLayout) 203 21 2 2 11 1 0 Pegasus.Controls.TreeViewBase<T>.Re nderTree(IEnumerable<T>,TreeLayout) CreateItemNode(T,IList,Tr eeLayout) 212 24 3 3 11 1 0 Pegasus.Controls.TreeViewBase<T>.Cre ateItemNode(T,IList,TreeLayout) EnsureNodeIsVisible(T) 99 6 2 1 11 1 0 Pegasus.Controls.TreeViewBase<T>.Ens ureNodeIsVisible(T) TryFindItemNode(ItemColl ection,String,Boolean) 91 10 5 3 8 1 0 Pegasus.Controls.TreeViewBase<T>.Try FindItemNode(ItemCollection,String,Bo olean) ApplyAutoCollapse() 204 23 3 0 13 1 0 Pegasus.Controls.TreeViewBase<T>.Ap plyAutoCollapse() .cctor() 257 1 0 0 1 1 0 Pegasus.Controls.TreeViewBase<T>..cc tor() OnItemCollectionChanged( Object,NotifyCollectionCha ngedEventArgs) 159 13 4 2 10 1 0 Pegasus.Controls.ItemMonitor<T>.OnIt emCollectionChanged(Object,NotifyCol lectionChangedEventArgs) HandleRemovedChildItems( ICollection<T>,NotifyCollec tionChangedEventArgs) 142 12 2 2 9 1 0 Pegasus.Controls.ItemMonitor<T>.Hand leRemovedChildItems(ICollection<T>,N otifyCollectionChangedEventArgs) OnRender(DrawingContext) 499 27 6 1 12 1 0 Pegasus.Controls.Ruler.OnRender(Draw ingContext) Sum: 2 155 149 28 14 89 10 0 Average: 215. 5 14. 9 2. 8 1.4 8.9 1 0 Minimum: 91 1 0 0 1 1 0 Maximum: 499 27 6 3 13 1 0 Standard deviation: 112. 01 8.0 554 1. 72 05 1.1 136 3.7 26 9 0 0 Variance: 12 546 64. 89 2. 96 1.2 4 13. 89 0 0 WARNING: The following CQL constraint is not satisfied. 578 fields on 10218 tested match the condition. --> Group {Purity / Immutability / Side-Effects} // <Name>Fields should be marked as ReadOnly when possible</Name> WARN IF Count > 0 IN SELECT FIELDS WHERE IsImmutable AND !IsInitOnly AND !IsGeneratedByCompiler
  45. 45. // A field that matches the condition IsImmutable // is a field that is assigned only by constructors // of its class. // For an instance field, this means its value // will remain constant throught the lifetime // of the object. // For a static field, this means its value will // remain constant throught the lifetime of the // program. // In both cases, such field can safely be marked // with the C# readonly keyword // (ReadOnly in VB.NET). // The condition IsInitOnly matches fields that // are marked with the C# readonly keyword // (ReadOnly in VB.NET). fields Size of instance Full Name Sum: 2 158 Average: 3.7336 Minimum: 0 Maximum: 8 Standard deviation: 1.0231 Variance: 1.0467 WARNING: The following CQL constraint is not satisfied. 2 types on 1155 tested match the condition. --> Group {Purity / Immutability / Side-Effects} // <Name>Structures should be immutable</Name> WARN IF Count > 0 IN SELECT TYPES WHERE IsStructure AND !IsImmutable AND !IsInFrameworkAssembly // 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 types # lines of code (LOC) Full Name Sum: 0
  46. 46. Average: 0 Minimum: 0 Maximum: 0 Standard deviation: 0 Variance: 0 WARNING: The following CQL constraint is not satisfied. 5 methods on 10763 tested match the condition. --> Group {Purity / Immutability / Side-Effects} // <Name>Static Property Getter should be immutable</Name> WARN IF Count > 0 IN SELECT METHODS WHERE IsPropertyGetter AND IsStatic AND ChangesTypeState // Generated property getter Resources.get_ResourceManager() // provokes a read-only property lazy-initialized AND !FullNameLike "Resources.get_ResourceManager()" // This rule might be violated in the case of object lazy initialized // when the property getter is accessed the first time. methods # lines of code (LOC) Full Name get_Instance() 3 Pegasus.Common.Common.get_Instance() get_Instance() 5 Pegasus.Common.clsNHiber.get_Instance() get_ResourceManager() 4 Pegasus.Common.Languages.Resource.get_ResourceManager() get_ResourceManager() 4 Pegasus.Cargo.Properties.Resource.get_ResourceManager() get_ResourceManager() 4 Pegasus.FlightCargo.Properties.Resource.get_ResourceManager() Sum: 20 Average: 4 Minimum: 3 Maximum: 5 Standard deviation: 0.63246 Variance: 0.4 WARNING: The following CQL constraint is not satisfied. 10 fields on 10218 tested match the condition. --> Group {Naming Conventions} // <Name>Instance fields should be prefixed with a 'm_'</Name> WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE !NameLike "^m_" AND !IsStatic AND !IsLiteral AND !IsGeneratedByCompiler AND !IsSpecialName AND !IsEventDelegateObject
  47. 47. // This naming convention provokes debate. // Don't hesitate to customize the regex of // NameLike to your preference. fields Size of instance Full Name _session 4 Pegasus.Common.Common._session _ReportingURI 4 Pegasus.Common.Common._ReportingURI setInnerException 1 Pegasus.Common.Common.setInnerException _isMSGBoxOpen 1 Pegasus.Common.Common._isMSGBoxOpen _IsAuthenticated 1 Pegasus.Controls.AuthenticationPrompt._IsAuthenticated _this 4 Pegasus.Controls.AuthenticationPrompt._this border 4 Pegasus.Controls.AuthenticationPrompt.border gMain 4 Pegasus.Controls.AuthenticationPrompt.gMain lblCaption 4 Pegasus.Controls.AuthenticationPrompt.lblCaption btnClose 4 Pegasus.Controls.AuthenticationPrompt.btnClose Sum: 31 Average: 3.1 Minimum: 1 Maximum: 4 Standard deviation: 1.3748 Variance: 1.89 WARNING: The following CQL constraint is not satisfied. 10 fields on 10218 tested match the condition. --> Group {Naming Conventions} // <Name>Static fields should be prefixed with a 's_'</Name> WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE !NameLike "^s_" AND IsStatic AND !IsLiteral AND !IsGeneratedByCompiler AND !IsSpecialName AND !IsEventDelegateObject // This naming convention provokes debate. // Don't hesitate to customize the regex of // NameLike to your preference. fields Size of instance Full Name _instance 0 Pegasus.Common.Common._instance _pageList 0 Pegasus.Common.Common._pageList _isEditing 0 Pegasus.Common.Common._isEditing _branchID 0 Pegasus.Common.Common._branchID _BaseCurrencyId 0 Pegasus.Common.Common._BaseCurrencyId
  48. 48. _BaseCurrencyMask 0 Pegasus.Common.Common._BaseCurrencyMask _FinancialYearID 0 Pegasus.Common.Common._FinancialYearID _EmployeeId 0 Pegasus.Common.Common._EmployeeId _CurrentJobCardID 0 Pegasus.Common.Common._CurrentJobCardID _CurrentModuleID 0 Pegasus.Common.Common._CurrentModuleID Sum: 0 Average: 0 Minimum: 0 Maximum: 0 Standard deviation: 0 Variance: 0 WARNING: The following CQL constraint is not satisfied. 2 types on 1155 tested match the condition. --> Group {Naming Conventions} // <Name>Interface name should begin with a 'I'</Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE IsInterface AND !NameLike "^I" AND !IsNested AND !IsInFrameworkAssembly types # lines of code (LOC ) Full Name ReportingService2005Soap N/A Pegasus.Main.RSServiceReference05.ReportingService2005Soap ReportingService2005SoapChan nel N/A Pegasus.Main.RSServiceReference05.ReportingService2005SoapC hannel Sum: 0 Average: 0 Minimum: 0 Maximum: 0 Standard deviation: 0 Variance: 0 WARNING: The following CQL constraint is not satisfied. 6 types on 1155 tested match the condition. --> Group {Naming Conventions} // <Name>Types name should begin with an Upper character</Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE // The name of a type should begin with an Upper letter. !NameLike "^[A-Z]" AND
  49. 49. // Except if it is generated by compiler or ... !IsGeneratedByCompiler AND // ... if it is declared in a third party assembly. !IsInFrameworkAssembly types # lines of code (LOC) Full Name clsNHiber 18 Pegasus.Common.clsNHiber frmFrameAddNew 10 Pegasus.SearchEngine.frmFrameAddNew frmWinUltraGrid 1 329 Pegasus.SearchEngine.frmWinUltraGrid sGlobal 101 Pegasus.General.sGlobal sGlobal+pParams 0 Pegasus.General.sGlobal+pParams clsMain 87 Pegasus.Main.clsMain Sum: 1 545 Average: 257.5 Minimum: 0 Maximum: 1 329 Standard deviation: 480.73 Variance: 231 099 WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the condition. --> Group {Naming Conventions} // <Name>Methods name should begin with an Upper character</Name> WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE !NameLike "^[A-Z]" AND !( IsClassConstructor OR IsConstructor OR IsPropertyGetter OR IsPropertySetter OR IsIndexerGetter OR IsIndexerSetter OR IsEventAdder OR IsEventRemover OR IsOperator) AND !IsGeneratedByCompiler AND !IsInFrameworkAssembly // The name of a regular method should // begin with an Upper letter. methods # lines of code (LOC ) Full Name getPropertyValue(String) N/A Pegasus.Common.ICommon.getPropertyValue(String) ok_Click(Object,RoutedEventArg s) 1 Pegasus.Controls.AuthenticationPrompt.ok_Click(Object,Route dEventArgs) cancel_Click(Object,RoutedEven tArgs) 2 Pegasus.Controls.AuthenticationPrompt.cancel_Click(Object,R outedEventArgs)
  50. 50. btnClose_Click(Object,RoutedEv entArgs) 2 Pegasus.Controls.AuthenticationPrompt.btnClose_Click(Object, RoutedEventArgs) gMain_MouseMove(Object,Mouse EventArgs) 2 Pegasus.Controls.AuthenticationPrompt.gMain_MouseMove(Obj ect,MouseEventArgs) _this_KeyUp(Object,KeyEventAr gs) 7 Pegasus.Controls.AuthenticationPrompt._this_KeyUp(Object,K eyEventArgs) ok_Click(Object,RoutedEventArg s) 2 Pegasus.Controls.PegasusMessageBox.ok_Click(Object,RoutedE ventArgs) yes_Click(Object,RoutedEventAr gs) 2 Pegasus.Controls.PegasusMessageBox.yes_Click(Object,Routed EventArgs) no_Click(Object,RoutedEventArg s) 2 Pegasus.Controls.PegasusMessageBox.no_Click(Object,RoutedE ventArgs) cancel_Click(Object,RoutedEven tArgs) 2 Pegasus.Controls.PegasusMessageBox.cancel_Click(Object,Rout edEventArgs) Sum: 22 Average: 2.2 Minimum: 0 Maximum: 7 Standard deviation: 1.72 05 Variance: 2.96 WARNING: The following CQL constraint is not satisfied. 10 methods on 10763 tested match the condition. --> Group {Naming Conventions Name too long} // <Name>Avoid methods with name too long</Name> WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE NameLike "^[^<(]{35,}.*$" AND !IsExplicitInterfaceImpl AND !IsInFrameworkAssembly // 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). // Explicit Interface Implementation methods are // discarded because their names are prefixed // with the interface name. methods # li n es of co Full Name
  51. 51. de (L O C) get_GetFreightCategoryAccessControlLi st() 1 Pegasus.Common.Common.get_GetFreightCategoryAccess ControlList() set_GetFreightCategoryAccessControlLi st(ArrayList) 1 Pegasus.Common.Common.set_GetFreightCategoryAccess ControlList(ArrayList) PreserveLayoutOnRefreshPropertyChan ged(DependencyObject,DependencyPro pertyChangedEventArgs) 0 Pegasus.Controls.TreeViewBase<T>.PreserveLayoutOnRefr eshPropertyChanged(DependencyObject,DependencyProp ertyChangedEventArgs) NodeSortDescriptionsPropertyChanged( DependencyObject,DependencyPropert yChangedEventArgs) 9 Pegasus.Controls.TreeViewBase<T>.NodeSortDescriptionsP ropertyChanged(DependencyObject,DependencyPropertyC hangedEventArgs) SelectNodesOnRightClickPropertyChang ed(DependencyObject,DependencyProp ertyChangedEventArgs) 0 Pegasus.Controls.TreeViewBase<T>.SelectNodesOnRightCli ckPropertyChanged(DependencyObject,DependencyProper tyChangedEventArgs) xamcboFreightType_SelectedItemChang ed(Object,RoutedPropertyChangedEven tArgs<Object>) 1 Pegasus.General.UIElements.Central.PRCIDocDefMaster.xa mcboFreightType_SelectedItemChanged(Object,RoutedPr opertyChangedEventArgs<Object>) xamDataGridScanDoc_RecordActivating (Object,RecordActivatingEventArgs) 9 Pegasus.General.UIElements.Central.PRCIDocDefMaster.xa mDataGridScanDoc_RecordActivating(Object,RecordActiva tingEventArgs) RefreshExpAccountsAndChargeCodeList s() 6 Pegasus.Accounts.UIElements.Voucher.RefreshExpAccount sAndChargeCodeLists() xamComboCurrency_SelectedItemChan ged(Object,RoutedPropertyChangedEve ntArgs<Object>) 8 Pegasus.Accounts.UIElements.Voucher.xamComboCurrenc y_SelectedItemChanged(Object,RoutedPropertyChangedEv entArgs<Object>) cboFreightCategory_SelectionChanged( Object,SelectionChangedEventArgs) 1 Pegasus.Accounts.UIElements.Voucher.cboFreightCategory _SelectionChanged(Object,SelectionChangedEventArgs) Sum: 36 Average: 3. 6 Minimum: 0 Maximum: 9 Standard deviation: 3. 69 32 Variance: 13 .6 4 WARNING: The following CQL constraint is not satisfied. 10 types on 1155 tested match the condition. --> Group {Naming Conventions Name too long}
  52. 52. // <Name>Avoid types with name too long</Name> WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE NameLike "^[^<]{35,}.*$" AND !IsNested AND !IsInFrameworkAssembly // The regex matches types with name longer // than 35 characters. // Type Name doesn't contain the namespace // prefix, FullName does. // The regex computes the type name length from // the beginning until the end or the first lower than // (for generic types). // Nested types are discarded because their // names are prefixed with outer type's name. types # lines of code (LOC ) Full Name UpdateReportExecutionSnapshotR equest 4 Pegasus.Main.RSServiceReference05.UpdateReportExecutionS napshotRequest UpdateReportExecutionSnapshotR esponse 3 Pegasus.Main.RSServiceReference05.UpdateReportExecutionS napshotResponse CreateReportHistorySnapshotResp onse 5 Pegasus.Main.RSServiceReference05.CreateReportHistorySnap shotResponse DeleteReportHistorySnapshotResp onse 3 Pegasus.Main.RSServiceReference05.DeleteReportHistorySnap shotResponse CreateDataDrivenSubscriptionReq uest 10 Pegasus.Main.RSServiceReference05.CreateDataDrivenSubscri ptionRequest CreateDataDrivenSubscriptionResp onse 4 Pegasus.Main.RSServiceReference05.CreateDataDrivenSubscri ptionResponse SetDataDrivenSubscriptionProperti esRequest 10 Pegasus.Main.RSServiceReference05.SetDataDrivenSubscriptio nPropertiesRequest SetDataDrivenSubscriptionProperti esResponse 3 Pegasus.Main.RSServiceReference05.SetDataDrivenSubscriptio nPropertiesResponse GetDataDrivenSubscriptionPropert iesRequest 3 Pegasus.Main.RSServiceReference05.GetDataDrivenSubscripti onPropertiesRequest GetDataDrivenSubscriptionPropert iesResponse 12 Pegasus.Main.RSServiceReference05.GetDataDrivenSubscripti onPropertiesResponse Sum: 57 Average: 5.7 Minimum: 3 Maximum: 12 Standard deviation: 3.34
  53. 53. 81 Variance: 11.2 1 WARNING: The following CQL constraint is not satisfied. 10 fields on 10218 tested match the condition. --> Group {Naming Conventions Name too long} // <Name>Avoid fields with name too long</Name> WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE NameLike "^[^<]{35,}.*$" AND !IsInFrameworkAssembly // The regex matches fields with name longer // than 35 characters. // Field Name doesn't contain the type and // namespace prefix, FullName does. fields Size of instan ce Full Name btnMastersMenuKeyTransportComp anies 4 Pegasus.Main.RibbonMenuTest.btnMastersMenuKeyTranspo rtCompanies btnMastersMenuKeyInquiryEvaluatio ns 4 Pegasus.Main.RibbonMenuTest.btnMastersMenuKeyInquiryE valuations btnMastersMenuKeyWarehouseType ofGoods 4 Pegasus.Main.RibbonMenuTest.btnMastersMenuKeyWareho useTypeofGoods btnMastersMenuKeyDocumentsDefi nitions 4 Pegasus.Main.RibbonMenuTest.btnMastersMenuKeyDocume ntsDefinitions gigMastersMenuKeyMasterShippingL ines 4 Pegasus.Main.RibbonMenuTest.gigMastersMenuKeyMasterS hippingLines giMastersMenuKeyMasterLeasingCo mpany 4 Pegasus.Main.RibbonMenuTest.giMastersMenuKeyMasterLe asingCompany giMastersMenuKeyMasterContainerS tatus 4 Pegasus.Main.RibbonMenuTest.giMastersMenuKeyMasterCo ntainerStatus giMastersMenuKeyMasterContainerC lassification 4 Pegasus.Main.RibbonMenuTest.giMastersMenuKeyMasterCo ntainerClassification giMastersMenuKeyMasterStorageCal culation 4 Pegasus.Main.RibbonMenuTest.giMastersMenuKeyMasterSto rageCalculation giMastersMenuKeyMasterShippingLi nes 4 Pegasus.Main.RibbonMenuTest.giMastersMenuKeyMasterShi ppingLines Sum: 40 Average: 4 Minimum: 4 Maximum: 4 Standard deviation: 0
  54. 54. Variance: 0

×