microsoft / PowerStig
Duplication

Places in code with 6 or more lines that are exactly the same.

Intro
  • For duplication, we look at places in code where there are 6 or more lines of code that are exactly the same.
  • Before duplication is calculated, the code is cleaned to remove empty lines, comments, and frequently duplicated constructs such as imports.
  • You should aim at having as little as possible (<5%) of duplicated code as high-level of duplication can lead to maintenance difficulties, poor factoring, and logical contradictions.
Learn more...
Duplication Overall
  • 34% duplication:
    • 29,907 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 10,279 duplicated lines
  • 13,106 duplicates
system34% (10,279 lines)
Duplication per Extension
psm139% (5,460 lines)
ps129% (4,358 lines)
psd150% (386 lines)
yml33% (75 lines)
Duplication per Component (primary)
source/Module/Rule.SqlScriptQuery56% (1,021 lines)
source/Module/Rule.Registry37% (863 lines)
source/Module/Common26% (484 lines)
Tools/Release28% (379 lines)
source/Module/STIG10% (329 lines)
source/Module/Rule.WebConfigurationProperty39% (280 lines)
source/DSCResources/Resources18% (233 lines)
source/Module/Rule.Permission20% (232 lines)
source/Module/Rule.ProcessMitigation48% (218 lines)
source/Module/Rule.WebAppPool63% (196 lines)
source/Module/Rule.nxFileLine23% (193 lines)
source/Module/Rule.UserRight32% (177 lines)
source/Module/Rule.MimeType47% (174 lines)
source/Module/Rule.RootCertificate46% (173 lines)
source/Module/Rule.FileContent33% (165 lines)
source/Module/Rule.SqlDatabase53% (164 lines)
source/Module/Rule.WindowsFeature40% (155 lines)
source/Module/Rule.SqlLogin49% (153 lines)
source/Module/Rule.nxFile55% (150 lines)
source/Module/Rule.nxService43% (149 lines)
source/Module/Rule.Service34% (148 lines)
source/Module/Rule.nxPackage54% (139 lines)
source/Module/Rule.VsphereVssSecurity50% (135 lines)
source/Module/Rule.VspherePortGroupSecurity50% (134 lines)
source/Module/Rule.IISLogging28% (131 lines)
source/Module/Rule9% (127 lines)
source/Module/Rule.VsphereAdvancedSettings48% (123 lines)
source/Module/Rule.SqlProtocol56% (114 lines)
source/Module/Rule.VsphereNtpSettings51% (112 lines)
source/Module/Rule.DnsServerSetting44% (111 lines)
source/Module/Rule.VsphereService46% (110 lines)
source/DSCResources/WindowsServer77% (108 lines)
source/Module/Rule.AccountPolicy49% (108 lines)
source/DSCResources/WindowsClient78% (103 lines)
source/Module/Rule.VsphereSnmpAgent62% (102 lines)
source/Module/Rule.SqlServerConfiguration43% (100 lines)
source/Module/Rule.SecurityOption43% (95 lines)
source/Module/Rule.Group47% (94 lines)
source/Module/Rule.WinEventLog43% (93 lines)
source/Module/Rule.VsphereKernelActiveDumpPartition56% (92 lines)
source/DSCResources/WindowsDnsServer71% (89 lines)
source/DSCResources/RHEL83% (87 lines)
source/DSCResources/InternetExplorer83% (86 lines)
source/DSCResources/DotNetFramework84% (86 lines)
source/DSCResources/Ubuntu81% (85 lines)
source/DSCResources/Chrome84% (84 lines)
source/DSCResources/Adobe82% (84 lines)
source/Module/Rule.VsphereAcceptanceLevel52% (84 lines)
source/DSCResources/Edge84% (82 lines)
source/DSCResources/Office77% (81 lines)
source/Module/Rule.SslSettings51% (81 lines)
source/DSCResources/WindowsDefender82% (80 lines)
source/DSCResources/FireFox80% (80 lines)
source/DSCResources/WindowsFirewall82% (78 lines)
source/DSCResources/McAfee73% (77 lines)
source/DSCResources/Vsphere55% (76 lines)
ROOT8% (75 lines)
source/DSCResources/OracleJRE69% (74 lines)
Tools/WikiPages15% (74 lines)
source/DSCResources/IisServer65% (73 lines)
source/DSCResources/IisSite62% (73 lines)
source/DSCResources/SqlServer51% (70 lines)
source/Module/Rule.DnsServerRootHint53% (64 lines)
source/Module/Rule.AuditSetting40% (63 lines)
source/Module/Rule.AuditPolicy33% (62 lines)
source/Module/Rule.Document33% (46 lines)
Tools/TestHelper8% (42 lines)
source/Module/Rule.Manual47% (41 lines)
source/DSCResources9% (25 lines)
source/Module/Rule.HardCoded7% (10 lines)
Tools/AppVeyor0% (0 lines)
source/Module/Rule.Skip0% (0 lines)
source0% (0 lines)

Duplication Between Components (50+ lines)

G source/Module/Rule.Permission source/Module/Rule.Permission source/Module/Rule.SqlScriptQuery source/Module/Rule.SqlScriptQuery source/Module/Rule.Permission--source/Module/Rule.SqlScriptQuery 513 source/Module/Rule.Registry source/Module/Rule.Registry source/Module/Rule.Permission--source/Module/Rule.Registry 442 source/Module/Rule.UserRight source/Module/Rule.UserRight source/Module/Rule.Permission--source/Module/Rule.UserRight 270 source/Module/Rule.ProcessMitigation source/Module/Rule.ProcessMitigation source/Module/Rule.Permission--source/Module/Rule.ProcessMitigation 257 source/Module/Rule.WebConfigurationProperty source/Module/Rule.WebConfigurationProperty source/Module/Rule.Permission--source/Module/Rule.WebConfigurationProperty 241 source/Module/Rule.SqlScriptQuery--source/Module/Rule.UserRight 346 source/Module/Rule.SqlScriptQuery--source/Module/Rule.WebConfigurationProperty 300 source/Module/STIG source/Module/STIG source/Module/Rule.SqlScriptQuery--source/Module/STIG 293 source/Module/Rule.WebAppPool source/Module/Rule.WebAppPool source/Module/Rule.SqlScriptQuery--source/Module/Rule.WebAppPool 280 source/Module/Rule.WindowsFeature source/Module/Rule.WindowsFeature source/Module/Rule.SqlScriptQuery--source/Module/Rule.WindowsFeature 241 source/Module/Rule.SqlServerConfiguration source/Module/Rule.SqlServerConfiguration source/Module/Rule.SqlScriptQuery--source/Module/Rule.SqlServerConfiguration 241 source/Module/Rule.Registry--source/Module/Rule.WebConfigurationProperty 478 source/Module/Rule.SqlDatabase source/Module/Rule.SqlDatabase source/Module/Rule.Registry--source/Module/Rule.SqlDatabase 426 source/Module/Rule.Registry--source/Module/Rule.UserRight 424 source/Module/Rule.nxFileLine source/Module/Rule.nxFileLine source/Module/Rule.Registry--source/Module/Rule.nxFileLine 410 source/Module/Rule.Registry--source/Module/Rule.WindowsFeature 384 source/Module/Rule.RootCertificate source/Module/Rule.RootCertificate source/Module/Rule.Registry--source/Module/Rule.RootCertificate 380 source/Module/Rule.Registry--source/Module/Rule.SqlScriptQuery 353 source/Module/Rule.Registry--source/Module/Rule.WebAppPool 327 source/Module/Rule.SqlLogin source/Module/Rule.SqlLogin source/Module/Rule.Registry--source/Module/Rule.SqlLogin 279 source/Module/Rule.nxService source/Module/Rule.nxService source/Module/Rule.Registry--source/Module/Rule.nxService 271 source/Module/Rule.SqlProtocol source/Module/Rule.SqlProtocol source/Module/Rule.Registry--source/Module/Rule.SqlProtocol 258 source/Module/Rule.Registry--source/Module/Rule.SqlServerConfiguration 258 source/Module/Rule.nxFile source/Module/Rule.nxFile source/Module/Rule.Registry--source/Module/Rule.nxFile 237 source/Module/Rule.nxPackage source/Module/Rule.nxPackage source/Module/Rule.Registry--source/Module/Rule.nxPackage 236 source/Module/Rule.Service source/Module/Rule.Service source/Module/Rule.Registry--source/Module/Rule.Service 234 source/Module/Rule.MimeType source/Module/Rule.MimeType source/Module/Rule.MimeType--source/Module/Rule.Registry 475 source/Module/Rule.MimeType--source/Module/Rule.WebConfigurationProperty 285 source/Module/Rule.MimeType--source/Module/Rule.SqlScriptQuery 266 source/Module/Rule.MimeType--source/Module/Rule.UserRight 228 source/Module/Rule.ProcessMitigation--source/Module/Rule.Registry 440 source/Module/Rule.ProcessMitigation--source/Module/Rule.SqlScriptQuery 335 source/Module/Rule.ProcessMitigation--source/Module/Rule.UserRight 283 source/Module/Rule.ProcessMitigation--source/Module/Rule.WebConfigurationProperty 253 source/Module/Rule.ProcessMitigation--source/Module/Rule.SqlDatabase 252 source/Module/Rule.SqlDatabase--source/Module/Rule.SqlLogin 255 source/Module/Rule.SqlDatabase--source/Module/Rule.SqlScriptQuery 249 source/Module/Rule.UserRight--source/Module/Rule.WebConfigurationProperty 244 source/Module/Rule.UserRight--source/Module/Rule.WindowsFeature 240 source/Module/Rule.WebAppPool--source/Module/Rule.WebConfigurationProperty 409 source/Module/Common source/Module/Common source/Module/Common--source/Module/Rule.Registry 384 source/Module/Common--source/Module/Rule.SqlScriptQuery 234 source/Module/Rule.RootCertificate--source/Module/Rule.SqlScriptQuery 274 source/Module/Rule.IISLogging source/Module/Rule.IISLogging source/Module/Rule.IISLogging--source/Module/Rule.Registry 374 source/Module/Rule.IISLogging--source/Module/Rule.SqlScriptQuery 280 source/Module/Rule.nxFile--source/Module/Rule.nxFileLine 310 source/Module/Rule.SqlLogin--source/Module/Rule.SqlScriptQuery 270 source/Module/Rule.SqlLogin--source/Module/Rule.SqlProtocol 261 source/Module/Rule.SqlProtocol--source/Module/Rule.SqlScriptQuery 249 source/Module/Rule.Group source/Module/Rule.Group source/Module/Rule.Group--source/Module/Rule.SqlScriptQuery 247

Download: SVG DOT (open online Graphviz editor)

Open 3D force graph...

Show more details on duplication between components...
Longest Duplicates
The list of 20 longest duplicates.
See data for all 13,106 duplicates...
Size#FoldersFilesLinesCode
53 x 2 Tools/Release
Tools/Release
Release.psm1
Release.psm1
1100:1160 (4%)
1345:1405 (4%)
view
42 x 2 source/Module/Rule.WebAppPool/Convert
source/Module/Rule.WebCo...urationProperty/Convert
WebAppPoolRule.Convert.psm1
WebConfigurationPropertyRule.Convert....
57:101 (33%)
79:123 (21%)
view
35 x 2 source/Module/Rule.SqlScriptQuery/Convert
source/Module/Rule.SqlScriptQuery/Convert
Methods.ps1
Methods.ps1
361:400 (2%)
413:450 (2%)
view
34 x 2 source/DSCResources/WindowsDnsServer
source/DSCResources/WindowsServer
WindowsDnsServer.schema.psm1
WindowsServer.schema.psm1
46:87 (36%)
54:95 (31%)
view
33 x 2 source/DSCResources/RHEL
source/DSCResources/Ubuntu
RHEL.schema.psm1
Ubuntu.schema.psm1
33:72 (45%)
33:72 (45%)
view
30 x 2 source/DSCResources/Chrome
source/DSCResources/WindowsFirewall
Chrome.schema.psm1
WindowsFirewall.schema.psm1
32:67 (44%)
30:65 (46%)
view
30 x 2 source/DSCResources/Edge
source/DSCResources/WindowsFirewall
Edge.schema.psm1
WindowsFirewall.schema.psm1
30:65 (45%)
30:65 (46%)
view
30 x 2 source/DSCResources/Edge
source/DSCResources/WindowsDefender
Edge.schema.psm1
WindowsDefender.schema.psm1
30:65 (45%)
30:65 (45%)
view
30 x 2 source/DSCResources/WindowsDefender
source/DSCResources/WindowsFirewall
WindowsDefender.schema.psm1
WindowsFirewall.schema.psm1
30:65 (45%)
30:65 (46%)
view
30 x 2 source/DSCResources/Chrome
source/DSCResources/Edge
Chrome.schema.psm1
Edge.schema.psm1
32:67 (44%)
30:65 (45%)
view
30 x 2 source/DSCResources/Chrome
source/DSCResources/WindowsDefender
Chrome.schema.psm1
WindowsDefender.schema.psm1
32:67 (44%)
30:65 (45%)
view
29 x 2 source/Module/Rule.SqlScriptQuery/Convert
source/Module/Rule.SqlScriptQuery/Convert
Methods.ps1
Methods.ps1
885:920 (1%)
1052:1087 (1%)
view
26 x 2 source/DSCResources/DotNetFramework
source/DSCResources/Edge
DotNetFramework.schema.psm1
Edge.schema.psm1
40:71 (36%)
34:65 (39%)
view
26 x 2 source/DSCResources/McAfee
source/DSCResources/Vsphere
McAfee.schema.psm1
Vsphere.schema.psm1
46:77 (35%)
74:105 (24%)
view
26 x 2 source/DSCResources/McAfee
source/DSCResources/Ubuntu
McAfee.schema.psm1
Ubuntu.schema.psm1
46:77 (35%)
41:72 (35%)
view
26 x 2 source/DSCResources/OracleJRE
source/DSCResources/WindowsFirewall
OracleJRE.schema.psm1
WindowsFirewall.schema.psm1
46:77 (34%)
34:65 (40%)
view
26 x 2 source/DSCResources/DotNetFramework
source/DSCResources/IisServer
DotNetFramework.schema.psm1
IisServer.schema.psm1
40:71 (36%)
47:78 (30%)
view
26 x 2 source/DSCResources/DotNetFramework
source/DSCResources/RHEL
DotNetFramework.schema.psm1
RHEL.schema.psm1
40:71 (36%)
41:72 (35%)
view
26 x 2 source/DSCResources/Edge
source/DSCResources/InternetExplorer
Edge.schema.psm1
InternetExplorer.schema.psm1
34:65 (39%)
41:72 (36%)
view
26 x 2 source/DSCResources/FireFox
source/DSCResources/OracleJRE
FireFox.schema.psm1
OracleJRE.schema.psm1
38:69 (38%)
46:77 (34%)
view