microsoft / pal
Unit Size

The distribution of size of units (measured in lines of code).

Intro
  • Unit size measurements show the distribution of size of units of code (methods, functions...).
  • Units are classified in four categories based on their size (lines of code): 1-20 (small units), 20-50 (medium size units), 51-100 (long units), 101+ (very long units).
  • You should aim at keeping units small (< 20 lines). Long units may become "bloaters", code that have increased to such gargantuan proportions that they are hard to work with.
Learn more...
Unit Size Overall
  • There are 1,933 units with 33,144 lines of code in units (61.9% of code).
    • 31 very long units (5,620 lines of code)
    • 105 long units (7,285 lines of code)
    • 274 medium size units (8,394 lines of code)
    • 416 small units (6,150 lines of code)
    • 1,107 very small units (5,695 lines of code)
16% | 21% | 25% | 18% | 17%
Legend:
101+
51-100
21-50
11-20
1-10
Unit Size per Extension
101+
51-100
21-50
11-20
1-10
cpp18% | 22% | 25% | 18% | 14%
py0% | 16% | 40% | 18% | 24%
h0% | 7% | 7% | 19% | 66%
Unit Size per Logical Component
primary logical decomposition
101+
51-100
21-50
11-20
1-10
source/code/scxsystemlib25% | 23% | 20% | 16% | 13%
source/code/scxcorelib5% | 16% | 34% | 23% | 19%
source/code/util3% | 38% | 33% | 17% | 6%
installer/InstallBuilder0% | 11% | 45% | 16% | 26%
installer/InstallBuilder/unittests0% | 55% | 0% | 32% | 12%
source/code/include0% | 3% | 7% | 20% | 68%
Alternative Visuals
Longest Units
Top 20 longest units
Unit# linesMcCabe index# params
void CPUEnumeration::Update()
in source/code/scxsystemlib/cpu/cpuenumeration.cpp
524 64 1
void StaticPhysicalDiskInstance::Update()
in source/code/scxsystemlib/disk/staticphysicaldiskinstance.cpp
454 72 0
void StaticDiskPartitionEnumeration::Update()
in source/code/scxsystemlib/disk/staticdiskpartitionenumeration.cpp
298 47 1
bool ProcessInstance::UpdateParameters()
in source/code/scxsystemlib/process/processinstance.cpp
287 53 1
void SCXOSTypeInfo::Init()
in source/code/scxsystemlib/common/scxostypeinfo.cpp
216 39 0
void NetworkInterfaceInfo::ParseIPv6Addr()
in source/code/scxsystemlib/networkinterface/networkinterface.cpp
213 32 1
std::vector NetworkInterfaceConfigurationEnumeration::FindAll()
in source/code/scxsystemlib/networkinterfaceconfiguration/networkinterfaceconfigurationenumeration.cpp
200 40 0
void CpuPropertiesInstance::Update()
in source/code/scxsystemlib/cpuproperties/cpupropertiesinstance.cpp
190 28 0
int main()
in source/code/scxsystemlib/disk/tools/ioctl_scan.cpp
189 3 2
void NetworkInterfaceInfo::Get_NDD_STAT()
in source/code/scxsystemlib/networkinterface/networkinterface.cpp
185 46 1
void MemoryInstance::Update()
in source/code/scxsystemlib/memory/memoryinstance.cpp
175 22 0
bool StaticDiskPartitionInstance::GetBootDrivePath()
in source/code/scxsystemlib/disk/staticdiskpartitioninstance.cpp
164 22 1
void FindFiles()
in source/code/scxcorelib/pal/scxdirectoryinfo.cpp
161 48 2
void DiskDependDefault::RefreshMNTTab()
in source/code/scxsystemlib/disk/diskdepend.cpp
161 39 1
int SCXFile::ReadAvailableBytesAsUnsigned()
in source/code/scxcorelib/pal/scxfile.cpp
153 20 4
SCXFileSystem::Attributes SCXFileSystem::GetAttributes()
in source/code/scxcorelib/pal/scxfilesystem.cpp
151 48 1
void StaticDiskPartitionInstance::Update_Solaris()
in source/code/scxsystemlib/disk/staticdiskpartitioninstance.cpp
151 29 0
void StatisticalLogicalDiskInstance::Sample()
in source/code/scxsystemlib/disk/statisticallogicaldiskinstance.cpp
150 16 0
void StatisticalPhysicalDiskInstance::Sample()
in source/code/scxsystemlib/disk/statisticalphysicaldiskinstance.cpp
147 15 0
std::map DiskDependDefault::GetPhysicalDevices()
in source/code/scxsystemlib/disk/diskdepend.cpp
144 23 1