awslabs / smithy
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
  • 4% duplication:
    • 37,530 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 1,826 duplicated lines
  • 255 duplicates
system4% (1,826 lines)
Duplication per Extension
java4% (1,826 lines)
Duplication per Component (primary)
smithy-model2% (433 lines)
smithy-openapi8% (309 lines)
smithy-build10% (227 lines)
smithy-diff13% (146 lines)
smithy-aws-apigateway-traits20% (139 lines)
smithy-jmespath6% (124 lines)
smithy-utils7% (124 lines)
smithy-aws-apigateway-openapi9% (89 lines)
smithy-aws-cloudformation7% (68 lines)
smithy-aws-traits3% (64 lines)
smithy-cli3% (37 lines)
smithy-linters4% (24 lines)
smithy-waiters2% (18 lines)
smithy-aws-iam-traits3% (12 lines)
smithy-codegen-core<1% (12 lines)
smithy-aws-cloudformation-traits0% (0 lines)
smithy-jsonschema0% (0 lines)
smithy-mqtt-traits0% (0 lines)

Duplication Between Components (50+ lines)

G smithy-aws-apigateway-openapi smithy-aws-apigateway-openapi smithy-openapi smithy-openapi smithy-aws-apigateway-openapi--smithy-openapi 127 smithy-jmespath smithy-jmespath smithy-utils smithy-utils smithy-jmespath--smithy-utils 66

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 255 duplicates...
Size#FoldersFilesLinesCode
31 x 2 smithy-aws-apigateway-tr...y/aws/apigateway/traits
smithy-aws-apigateway-tr...y/aws/apigateway/traits
IntegrationTrait.java
MockIntegrationTrait.java
565:676 (14%)
220:331 (31%)
view
26 x 2 smithy-aws-cloudformatio...dformation/schema/model
smithy-aws-cloudformatio...dformation/schema/model
Remote.java
ResourceSchema.java
89:128 (44%)
262:301 (9%)
view
17 x 2 smithy-openapi/src/main/...pi/fromsmithy/protocols
smithy-openapi/src/main/...pi/fromsmithy/protocols
HeaderSchemaVisitor.java
QuerySchemaVisitor.java
43:69 (42%)
41:67 (47%)
view
16 x 2 smithy-diff/src/main/jav.../smithy/diff/evaluators
smithy-model/src/main/ja...smithy/model/validation
AbstractDiffEvaluator.java
AbstractValidator.java
40:69 (66%)
31:60 (59%)
view
16 x 2 smithy-jmespath/src/main.../amazon/smithy/jmespath
smithy-utils/src/main/ja...are/amazon/smithy/utils
Lexer.java
SimpleParser.java
202:222 (3%)
258:278 (13%)
view
12 x 2 smithy-aws-apigateway-tr...y/aws/apigateway/traits
smithy-aws-apigateway-tr...y/aws/apigateway/traits
IntegrationTrait.java
MockIntegrationTrait.java
248:299 (5%)
94:145 (12%)
view
12 x 2 smithy-build/src/main/ja...smithy/build/transforms
smithy-build/src/main/ja...smithy/build/transforms
ExcludeTraitsByTag.java
IncludeTraitsByTag.java
71:86 (42%)
71:86 (42%)
view
12 x 2 smithy-linters/src/main/...e/amazon/smithy/linters
smithy-linters/src/main/...e/amazon/smithy/linters
RepeatedShapeNameValidator.java
StutteredShapeNameValidator.java
65:78 (25%)
40:53 (46%)
view
11 x 2 smithy-build/src/main/ja...smithy/build/transforms
smithy-build/src/main/ja...smithy/build/transforms
ExcludeMetadata.java
IncludeMetadata.java
33:59 (50%)
33:59 (50%)
view
11 x 2 smithy-openapi/src/main/...on/smithy/openapi/model
smithy-openapi/src/main/...on/smithy/openapi/model
MediaTypeObject.java
ParameterObject.java
102:118 (15%)
244:260 (6%)
view
11 x 2 smithy-model/src/main/ja...zon/smithy/model/traits
smithy-model/src/main/ja...zon/smithy/model/traits
LengthTrait.java
RangeTrait.java
59:78 (22%)
60:79 (22%)
view
11 x 2 smithy-build/src/main/ja...smithy/build/transforms
smithy-build/src/main/ja...smithy/build/transforms
ExcludeTags.java
IncludeShapesByTag.java
32:60 (57%)
37:65 (45%)
view
11 x 2 smithy-build/src/main/ja...smithy/build/transforms
smithy-build/src/main/ja...smithy/build/transforms
ExcludeTags.java
IncludeTraitsByTag.java
32:60 (57%)
40:67 (39%)
view
11 x 2 smithy-build/src/main/ja...smithy/build/transforms
smithy-build/src/main/ja...smithy/build/transforms
ExcludeTraits.java
IncludeTraits.java
46:78 (35%)
46:78 (34%)
view
11 x 2 smithy-aws-apigateway-op.../aws/apigateway/openapi
smithy-aws-apigateway-op.../aws/apigateway/openapi
AddIntegrations.java
AddRequestValidators.java
44:56 (21%)
61:73 (22%)
view
11 x 2 smithy-build/src/main/ja...smithy/build/transforms
smithy-build/src/main/ja...smithy/build/transforms
ExcludeTags.java
IncludeTags.java
32:60 (57%)
33:61 (57%)
view
11 x 2 smithy-build/src/main/ja...smithy/build/transforms
smithy-build/src/main/ja...smithy/build/transforms
ExcludeTraitsByTag.java
IncludeTags.java
41:67 (39%)
33:61 (57%)
view
11 x 2 smithy-build/src/main/ja...smithy/build/transforms
smithy-build/src/main/ja...smithy/build/transforms
ExcludeShapesByTag.java
IncludeShapesByTag.java
36:64 (45%)
37:65 (45%)
view
11 x 2 smithy-build/src/main/ja...smithy/build/transforms
smithy-build/src/main/ja...smithy/build/transforms
IncludeShapesByTag.java
IncludeTraitsByTag.java
37:65 (45%)
40:67 (39%)
view
11 x 2 smithy-build/src/main/ja...smithy/build/transforms
smithy-build/src/main/ja...smithy/build/transforms
ExcludeTags.java
ExcludeTraitsByTag.java
32:60 (57%)
41:67 (39%)
view
Duplicated Units
The list of top 15 duplicated units.
See data for all 15 unit duplicates...
Size#FoldersFilesLinesCode
20 x 2 smithy-jmespath/src/main.../amazon/smithy/jmespath
smithy-utils/src/main/ja...are/amazon/smithy/utils
Lexer.java
SimpleParser.java
201:223 
257:279 
view
17 x 2 smithy-diff/src/main/jav.../smithy/diff/evaluators
smithy-diff/src/main/jav.../smithy/diff/evaluators
AddedOperationError.java
AddedServiceError.java
39:58 
39:58 
view
14 x 2 smithy-jmespath/src/main.../amazon/smithy/jmespath
smithy-utils/src/main/ja...are/amazon/smithy/utils
Lexer.java
SimpleParser.java
179:195 
177:193 
view
10 x 2 smithy-jmespath/src/main.../amazon/smithy/jmespath
smithy-utils/src/main/ja...are/amazon/smithy/utils
Lexer.java
SimpleParser.java
237:248 
317:328 
view
8 x 2 smithy-openapi/src/main/...ithy/openapi/fromsmithy
smithy-openapi/src/main/...ithy/openapi/fromsmithy
OpenApiMapper.java
OpenApiMapper.java
87:95 
110:118 
view
7 x 2 smithy-jmespath/src/main.../amazon/smithy/jmespath
smithy-jmespath/src/main.../amazon/smithy/jmespath
ExpressionSerializer.java
ExpressionSerializer.java
237:245 
248:256 
view
7 x 2 smithy-linters/src/main/...e/amazon/smithy/linters
smithy-linters/src/main/...e/amazon/smithy/linters
RepeatedShapeNameValidator.java
StutteredShapeNameValidator.java
66:73 
41:48 
view
7 x 2 smithy-model/src/main/ja...zon/smithy/model/traits
smithy-model/src/main/ja...zon/smithy/model/traits
LengthTrait.java
RangeTrait.java
35:42 
36:43 
view
6 x 2 smithy-jmespath/src/main.../amazon/smithy/jmespath
smithy-utils/src/main/ja...are/amazon/smithy/utils
Lexer.java
SimpleParser.java
156:163 
135:142 
view
6 x 2 smithy-jmespath/src/main.../amazon/smithy/jmespath
smithy-utils/src/main/ja...are/amazon/smithy/utils
Lexer.java
SimpleParser.java
165:172 
150:157 
view
6 x 2 smithy-aws-traits/src/ma...mazon/smithy/aws/traits
smithy-aws-traits/src/ma...mazon/smithy/aws/traits
SdkServiceIdValidator.java
EventSourceValidator.java
71:77 
44:50 
view
6 x 2 smithy-openapi/src/main/...ithy/openapi/fromsmithy
smithy-aws-apigateway-op.../aws/apigateway/openapi
Context.java
AddCorsPreflightIntegration.java
231:237 
150:156 
view
6 x 3 smithy-openapi/src/main/...api/fromsmithy/security
smithy-openapi/src/main/...api/fromsmithy/security
smithy-openapi/src/main/...api/fromsmithy/security
HttpDigestConverter.java
HttpBearerConverter.java
HttpBasicConverter.java
36:42 
36:42 
36:42 
view
6 x 2 smithy-model/src/jmh/jav...amazon/smithy/model/jmh
smithy-model/src/jmh/jav...amazon/smithy/model/jmh
Selectors.java
Selectors.java
63:69 
71:77 
view
6 x 2 smithy-model/src/main/ja...mazon/smithy/model/node
smithy-model/src/main/ja...mazon/smithy/model/node
DefaultNodeSerializers.java
DefaultNodeSerializers.java
220:226 
237:243 
view