aws-cloudformation / cfn-lint
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
  • 11% duplication:
    • 12,455 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 1,478 duplicated lines
  • 126 duplicates
system11% (1,478 lines)
Duplication per Extension
py11% (1,478 lines)
Duplication per Component (primary)
src/cfnlint/rules/resources13% (631 lines)
src/cfnlint/rules/parameters30% (194 lines)
src/cfnlint/rules/functions13% (168 lines)
src/cfnlint/decode18% (159 lines)
src/cfnlint5% (142 lines)
src/cfnlint/rules/outputs18% (48 lines)
src/cfnlint/rules7% (32 lines)
src/cfnlint/rules/conditions11% (28 lines)
src/cfnlint/rules/metadata24% (18 lines)
scripts4% (18 lines)
src/cfnlint/rules/mappings7% (14 lines)
src/cfnlint/rules/templates13% (14 lines)
src/cfnlint/rules/custom5% (12 lines)
src/cfnlint/formatters0% (0 lines)
src/cfnlint/data0% (0 lines)
src/cfnlint/data/Serverless0% (0 lines)
src/cfnlint/data/AdditionalSpecs0% (0 lines)
src/cfnlint/data/CloudSpecs0% (0 lines)
src/cfnlint/data/ExtendedSpecs0% (0 lines)
src/cfnlint/decorators0% (0 lines)
ROOT0% (0 lines)

Duplication Between Components (50+ lines)

G src/cfnlint/rules/parameters src/cfnlint/rules/parameters src/cfnlint/rules/resources src/cfnlint/rules/resources src/cfnlint/rules/parameters--src/cfnlint/rules/resources 187 src/cfnlint/rules/functions src/cfnlint/rules/functions src/cfnlint/rules/functions--src/cfnlint/rules/resources 88

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 126 duplicates...
Size#FoldersFilesLinesCode
37 x 2 src/cfnlint/rules/parameters
src/cfnlint/rules/parameters
AllowedPattern.py
AllowedValue.py
72:120 (43%)
69:117 (44%)
view
34 x 2 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
AllowedPattern.py
AllowedValue.py
71:114 (45%)
45:89 (61%)
view
29 x 2 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
ListDuplicates.py
ListDuplicatesAllowed.py
38:74 (42%)
38:74 (42%)
view
29 x 2 src/cfnlint/decode
src/cfnlint/decode
cfn_json.py
cfn_json.py
410:438 (6%)
549:577 (6%)
view
20 x 2 src/cfnlint/rules/parameters
src/cfnlint/rules/resources/properties
AllowedPattern.py
AllowedPattern.py
92:120 (23%)
87:114 (27%)
view
20 x 2 src/cfnlint/rules/parameters
src/cfnlint/rules/resources/properties
AllowedValue.py
AllowedValue.py
89:117 (24%)
61:89 (36%)
view
20 x 2 src/cfnlint/rules/parameters
src/cfnlint/rules/resources/properties
AllowedValue.py
AllowedPattern.py
89:117 (24%)
87:114 (27%)
view
20 x 2 src/cfnlint/rules/parameters
src/cfnlint/rules/resources/properties
AllowedPattern.py
AllowedValue.py
92:120 (23%)
61:89 (36%)
view
20 x 2 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
JsonSize.py
ListSize.py
104:131 (20%)
73:100 (28%)
view
18 x 2 src/cfnlint/rules/parameters
src/cfnlint/rules/parameters
AllowedPattern.py
AllowedValue.py
21:42 (20%)
21:42 (21%)
view
18 x 2 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
AllowedPattern.py
ValueRefGetAtt.py
89:114 (24%)
207:233 (10%)
view
18 x 2 src/cfnlint/rules/parameters
src/cfnlint/rules/resources/properties
AllowedValue.py
ValueRefGetAtt.py
91:117 (21%)
207:233 (10%)
view
18 x 2 src/cfnlint/rules/parameters
src/cfnlint/rules/resources/properties
AllowedPattern.py
ValueRefGetAtt.py
94:120 (20%)
207:233 (10%)
view
18 x 2 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
ListDuplicates.py
ListDuplicatesAllowed.py
77:103 (26%)
78:104 (26%)
view
18 x 2 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
AllowedValue.py
ValueRefGetAtt.py
63:89 (32%)
207:233 (10%)
view
15 x 2 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
ListDuplicatesAllowed.py
ListSize.py
81:104 (21%)
78:100 (21%)
view
15 x 2 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
JsonSize.py
ListDuplicatesAllowed.py
109:131 (15%)
81:104 (21%)
view
15 x 2 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
ListDuplicates.py
ListSize.py
80:103 (22%)
78:100 (21%)
view
15 x 2 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
JsonSize.py
ListDuplicates.py
109:131 (15%)
80:103 (22%)
view
15 x 2 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
NumberSize.py
StringSize.py
78:100 (21%)
69:91 (24%)
view
Duplicated Units
The list of top 12 duplicated units.
See data for all 12 unit duplicates...
Size#FoldersFilesLinesCode
19 x 2 src/cfnlint/rules/parameters
src/cfnlint/rules/parameters
AllowedValue.py
AllowedPattern.py
0:0 
0:0 
view
19 x 2 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
AllowedValue.py
AllowedPattern.py
0:0 
0:0 
view
10 x 2 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
ListDuplicates.py
ListDuplicatesAllowed.py
0:0 
0:0 
view
10 x 2 scripts
scripts
update_specs_from_pricing.py
update_specs_services_from_ssm.py
0:0 
0:0 
view
9 x 2 src/cfnlint/rules/functions
src/cfnlint/rules/functions
Join.py
Sub.py
0:0 
0:0 
view
7 x 5 src/cfnlint/rules/parameters
src/cfnlint/rules/parameters
src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
AllowedValue.py
AllowedPattern.py
AllowedValue.py
AllowedPattern.py
ValueRefGetAtt.py
0:0 
0:0 
0:0 
0:0 
0:0 
view
7 x 5 src/cfnlint/rules/parameters
src/cfnlint/rules/parameters
src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
AllowedValue.py
AllowedPattern.py
AllowedValue.py
AllowedPattern.py
ValueRefGetAtt.py
0:0 
0:0 
0:0 
0:0 
0:0 
view
6 x 2 src/cfnlint/rules/functions
src/cfnlint/rules/resources/properties
DynamicReferenceSecureString.py
ValuePrimitiveType.py
0:0 
0:0 
view
6 x 4 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
ListSize.py
ListDuplicates.py
ListDuplicatesAllowed.py
JsonSize.py
0:0 
0:0 
0:0 
0:0 
view
6 x 4 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
ListSize.py
ListDuplicates.py
ListDuplicatesAllowed.py
JsonSize.py
0:0 
0:0 
0:0 
0:0 
view
6 x 2 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
StringSize.py
NumberSize.py
0:0 
0:0 
view
6 x 2 src/cfnlint/rules/resources/properties
src/cfnlint/rules/resources/properties
StringSize.py
NumberSize.py
0:0 
0:0 
view