microsoft / msix-packaging
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 15,234 units with 340,632 lines of code in units (44.6% of code).
    • 535 very long units (115,225 lines of code)
    • 892 long units (61,805 lines of code)
    • 2,509 medium size units (79,301 lines of code)
    • 2,876 small units (42,467 lines of code)
    • 8,422 very small units (41,834 lines of code)
33% | 18% | 23% | 12% | 12%
Legend:
101+
51-100
21-50
11-20
1-10
Unit Size per Extension
101+
51-100
21-50
11-20
1-10
c30% | 21% | 25% | 13% | 10%
pl66% | 12% | 13% | 4% | 2%
cpp26% | 19% | 27% | 14% | 12%
h16% | 8% | 22% | 16% | 36%
pm13% | 19% | 19% | 15% | 31%
hpp1% | 2% | 12% | 20% | 63%
cs0% | 6% | 34% | 28% | 30%
ts0% | 0% | 68% | 10% | 21%
pas0% | 0% | 57% | 21% | 21%
cc0% | 0% | 100% | 0% | 0%
mm0% | 0% | 0% | 100% | 0%
java0% | 0% | 0% | 0% | 100%
py0% | 0% | 0% | 0% | 100%
js0% | 0% | 0% | 0% | 100%
inc0% | 0% | 0% | 0% | 100%
vbs0% | 0% | 0% | 0% | 100%
Unit Size per Logical Component
primary logical decomposition
101+
51-100
21-50
11-20
1-10
lib/openssl38% | 19% | 22% | 11% | 9%
lib/xerces28% | 17% | 23% | 12% | 18%
lib/zlib38% | 16% | 24% | 13% | 6%
MsixCore/msixmgr14% | 14% | 31% | 17% | 21%
src/msix5% | 21% | 26% | 26% | 19%
lib/catch23% | 5% | 17% | 23% | 49%
tools/utils0% | 7% | 36% | 27% | 28%
src/makemsix0% | 28% | 52% | 9% | 9%
sample/BundleSample0% | 77% | 13% | 8% | 0%
src/inc0% | 3% | 10% | 23% | 62%
sample/OverrideStreamSample0% | 15% | 46% | 24% | 13%
MsixCore/msixmgrLib0% | 0% | 41% | 33% | 25%
sample/PackSample0% | 0% | 92% | 7% | 0%
sample/ExtractContentsSample0% | 0% | 48% | 36% | 15%
sample/OverrideLanguageSample0% | 0% | 67% | 22% | 10%
tools/pipelines-tasks0% | 0% | 68% | 10% | 21%
sample/inc0% | 0% | 41% | 0% | 58%
MsixCore/ClickOnceWrapper0% | 0% | 52% | 19% | 27%
MsixCore/MsixMgrWix0% | 0% | 0% | 0% | 100%
Alternative Visuals
Longest Units
Top 20 longest units
Unit# linesMcCabe index# params
sub \$0x80,$len()
in lib/openssl/crypto/aes/asm/aesni-x86_64.pl
2764 25 0
sub \$16,%r15()
in lib/openssl/crypto/poly1305/asm/poly1305-x86_64.pl
2464 18 0
int s_client_main()
in lib/openssl/apps/s_client.c
2020 526 2
int speed_main()
in lib/openssl/apps/speed.c
1844 389 2
sub $acc0, $acc2()
in lib/openssl/crypto/ec/asm/ecp_nistz256-x86_64.pl
1513 11 0
int s_server_main()
in lib/openssl/apps/s_server.c
1143 302 2
sub $tp,sp,$num,lsl()
in lib/openssl/crypto/bn/asm/armv8-mont.pl
895 10 0
void inflate_fast()
in lib/zlib/contrib/inflate86/inffas86.c
894 15 2
int ca_main()
in lib/openssl/apps/ca.c
884 286 2
int cms_main()
in lib/openssl/apps/cms.c
881 292 2
sub $inp,$t0,$inp()
in lib/openssl/crypto/aes/asm/aes-parisc.pl
874 2 0
sub $out,$out,()
in lib/openssl/crypto/chacha/asm/chacha-armv8.pl
752 7 0
sub \$6,$len()
in lib/openssl/crypto/modes/asm/aesni-gcm-x86_64.pl
742 4 0
int x509_main()
in lib/openssl/apps/x509.c
710 203 2
int req_main()
in lib/openssl/apps/req.c
690 226 2
int ZEXPORT inflate()
in lib/zlib/inflate.c
637 202 2
sub \$$FrameSize, %rsp()
in lib/openssl/crypto/bn/asm/rsaz-avx2.pl
609 2 0
sub %r10,%r11()
in lib/openssl/crypto/bn/asm/x86_64-mont.pl
591 2 0
int ocsp_main()
in lib/openssl/apps/ocsp.c
568 177 2
sub \$1,$j()
in lib/openssl/crypto/bn/asm/x86_64-mont5.pl
562 6 0