aws / aws-encryption-sdk-c
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
  • 14% duplication:
    • 13,458 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 1,978 duplicated lines
  • 370 duplicates
system14% (1,978 lines)
Duplication per Extension
c16% (1,466 lines)
cpp19% (179 lines)
Dockerfile77% (110 lines)
h6% (106 lines)
cmake25% (89 lines)
in1% (28 lines)
Duplication per Component (primary)
verification/cbmc25% (1,044 lines)
source9% (436 lines)
aws-encryption-sdk-cpp/source19% (179 lines)
include/aws10% (120 lines)
codebuild64% (110 lines)
cmake25% (89 lines)
codebuild/test-install-project0% (0 lines)
codebuild/test-install-project-cpp0% (0 lines)
codebuild/ubuntu-latest-x640% (0 lines)
cmake/header-tester0% (0 lines)
aws-encryption-sdk-cpp/include0% (0 lines)
cbmc-ci0% (0 lines)
doxygen0% (0 lines)
docker-images0% (0 lines)
docker-images/windows_base0% (0 lines)
docker-images/scripts0% (0 lines)

Duplication Between Components (50+ lines)

G include/aws include/aws source source include/aws--source 140 verification/cbmc verification/cbmc source--verification/cbmc 137 cmake cmake codebuild codebuild cmake--codebuild 120

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 370 duplicates...
Size#FoldersFilesLinesCode
35 x 2 verification/cbmc/proofs...osdk_keyring_on_decrypt
verification/cbmc/proofs...osdk_keyring_on_encrypt
aws_cryptosdk_keyring_on_decrypt_harn...
aws_cryptosdk_keyring_on_encrypt_harn...
83:126 (46%)
45:88 (60%)
view
32 x 2 verification/cbmc/proofs..._cryptosdk_decrypt_body
verification/cbmc/proofs..._cryptosdk_encrypt_body
aws_cryptosdk_decrypt_body_harness.c
aws_cryptosdk_encrypt_body_harness.c
21:65 (71%)
21:65 (71%)
view
22 x 2 verification/cbmc/proofs...osdk_keyring_on_decrypt
verification/cbmc/stubs
aws_cryptosdk_keyring_on_decrypt_harn...
on_encrypt_stub.c
41:69 (29%)
33:61 (84%)
view
20 x 2 verification/cbmc/proofs..._hdr_parse_message_type
verification/cbmc/proofs...priv_hdr_parse_reserved
aws_cryptosdk_priv_hdr_parse_message_...
aws_cryptosdk_priv_hdr_parse_reserved...
25:52 (71%)
25:52 (71%)
view
19 x 2 verification/cbmc/proofs..._keyring_trace_copy_all
verification/cbmc/proofs/list_copy_all
aws_cryptosdk_keyring_trace_copy_all_...
list_copy_all_harness.c
60:90 (26%)
30:60 (36%)
view
19 x 2 verification/cbmc/proofs...tosdk_edk_list_copy_all
verification/cbmc/proofs/list_copy_all
aws_cryptosdk_edk_list_copy_all_harne...
list_copy_all_harness.c
30:59 (27%)
30:60 (36%)
view
19 x 2 verification/cbmc/proofs...tosdk_edk_list_copy_all
verification/cbmc/proofs..._keyring_trace_copy_all
aws_cryptosdk_edk_list_copy_all_harne...
aws_cryptosdk_keyring_trace_copy_all_...
30:59 (27%)
60:90 (26%)
view
18 x 2 verification/cbmc/proofs...riv_hdr_parse_frame_len
verification/cbmc/proofs..._hdr_parse_message_type
aws_cryptosdk_priv_hdr_parse_frame_le...
aws_cryptosdk_priv_hdr_parse_message_...
30:53 (62%)
29:52 (64%)
view
18 x 2 verification/cbmc/proofs...riv_hdr_parse_frame_len
verification/cbmc/proofs...priv_hdr_parse_reserved
aws_cryptosdk_priv_hdr_parse_frame_le...
aws_cryptosdk_priv_hdr_parse_reserved...
30:53 (62%)
29:52 (64%)
view
18 x 2 verification/cbmc/proofs...k_priv_hdr_parse_alg_id
verification/cbmc/proofs..._hdr_parse_message_type
aws_cryptosdk_priv_hdr_parse_alg_id_h...
aws_cryptosdk_priv_hdr_parse_message_...
31:54 (60%)
29:52 (64%)
view
18 x 2 verification/cbmc/proofs...sdk_priv_hdr_parse_edks
verification/cbmc/proofs..._hdr_parse_message_type
aws_cryptosdk_priv_hdr_parse_edks_har...
aws_cryptosdk_priv_hdr_parse_message_...
62:85 (41%)
29:52 (64%)
view
18 x 2 verification/cbmc/proofs...k_priv_hdr_parse_alg_id
verification/cbmc/proofs...riv_hdr_parse_frame_len
aws_cryptosdk_priv_hdr_parse_alg_id_h...
aws_cryptosdk_priv_hdr_parse_frame_le...
31:54 (60%)
30:53 (62%)
view
18 x 2 verification/cbmc/proofs...k_priv_hdr_parse_alg_id
verification/cbmc/proofs...sdk_priv_hdr_parse_edks
aws_cryptosdk_priv_hdr_parse_alg_id_h...
aws_cryptosdk_priv_hdr_parse_edks_har...
31:54 (60%)
62:85 (41%)
view
18 x 2 verification/cbmc/proofs...osdk_priv_hdr_parse_aad
verification/cbmc/proofs...priv_hdr_parse_reserved
aws_cryptosdk_priv_hdr_parse_aad_harn...
aws_cryptosdk_priv_hdr_parse_reserved...
42:66 (54%)
25:49 (64%)
view
18 x 2 verification/cbmc/proofs...osdk_priv_hdr_parse_aad
verification/cbmc/proofs..._hdr_parse_message_type
aws_cryptosdk_priv_hdr_parse_aad_harn...
aws_cryptosdk_priv_hdr_parse_message_...
42:66 (54%)
25:49 (64%)
view
18 x 2 verification/cbmc/proofs...k_priv_hdr_parse_alg_id
verification/cbmc/proofs...priv_hdr_parse_reserved
aws_cryptosdk_priv_hdr_parse_alg_id_h...
aws_cryptosdk_priv_hdr_parse_reserved...
31:54 (60%)
29:52 (64%)
view
18 x 2 verification/cbmc/proofs...sdk_priv_hdr_parse_edks
verification/cbmc/proofs...priv_hdr_parse_reserved
aws_cryptosdk_priv_hdr_parse_edks_har...
aws_cryptosdk_priv_hdr_parse_reserved...
62:85 (41%)
29:52 (64%)
view
18 x 2 verification/cbmc/proofs...sdk_priv_hdr_parse_edks
verification/cbmc/proofs...riv_hdr_parse_frame_len
aws_cryptosdk_priv_hdr_parse_edks_har...
aws_cryptosdk_priv_hdr_parse_frame_le...
62:85 (41%)
30:53 (62%)
view
17 x 2 verification/cbmc/proofs...cryptosdk_transfer_list
verification/cbmc/proofs/list_copy_all
aws_cryptosdk_transfer_list_harness.c
list_copy_all_harness.c
30:55 (48%)
30:55 (32%)
view
17 x 2 verification/cbmc/proofs..._keyring_trace_copy_all
verification/cbmc/proofs...cryptosdk_transfer_list
aws_cryptosdk_keyring_trace_copy_all_...
aws_cryptosdk_transfer_list_harness.c
60:85 (23%)
30:55 (48%)
view
Duplicated Units
The list of top 5 duplicated units.
See data for all 5 unit duplicates...
Size#FoldersFilesLinesCode
15 x 2 source
verification/cbmc/sources
cipher.c
make_common_data_structures.c
239:254 
239:254 
view
13 x 3 verification/cbmc/stubs
verification/cbmc/proofs/aws_cryptosdk_hdr_write
verification/cbmc/proofs/sign_header
aws_array_list_item_generator_u8_stub.c
aws_cryptosdk_hdr_write_harness.c
sign_header_harness.c
33:48 
27:43 
28:44 
view
11 x 4 verification/cbmc/proofs...tosdk_edk_list_copy_all
verification/cbmc/proofs/list_copy_all
verification/cbmc/proofs...cryptosdk_transfer_list
verification/cbmc/proofs..._keyring_trace_copy_all
aws_cryptosdk_edk_list_copy_all_harne...
list_copy_all_harness.c
aws_cryptosdk_transfer_list_harness.c
aws_cryptosdk_keyring_trace_copy_all_...
45:56 
45:56 
45:56 
75:86 
view
8 x 2 source
verification/cbmc/proofs..._keyring_trace_copy_all
keyring_trace.c
aws_cryptosdk_keyring_trace_copy_all_...
36:44 
45:53 
view
8 x 4 verification/cbmc/proofs...tosdk_edk_list_copy_all
verification/cbmc/proofs/list_copy_all
verification/cbmc/proofs...cryptosdk_transfer_list
verification/cbmc/proofs..._keyring_trace_copy_all
aws_cryptosdk_edk_list_copy_all_harne...
list_copy_all_harness.c
aws_cryptosdk_transfer_list_harness.c
aws_cryptosdk_keyring_trace_copy_all_...
30:39 
30:39 
30:39 
60:69 
view