microsoft / VFSForGit
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
  • 6% duplication:
    • 30,146 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 2,000 duplicated lines
  • 220 duplicates
system6% (2,000 lines)
Duplication per Extension
cs2% (739 lines)
cpp25% (666 lines)
vcxproj72% (378 lines)
filters50% (123 lines)
h10% (94 lines)
Duplication per Component (primary)
GVFS/GVFS.NativeTests23% (738 lines)
GVFS/GVFS.Common2% (299 lines)
GVFS/GVFS.ReadObjectHook48% (151 lines)
GVFS/GVFS.PostIndexChangedHook79% (143 lines)
GVFS/GVFS.VirtualFileSystemHook74% (143 lines)
GVFS/GVFS3% (118 lines)
GVFS/GVFS.Platform.Windows4% (114 lines)
GVFS/GitHooksLoader41% (86 lines)
GVFS/GVFS.FunctionalTests4% (77 lines)
GVFS/FastFetch5% (52 lines)
GVFS/GVFS.Virtualization1% (41 lines)
GVFS/GVFS.Service3% (24 lines)
GVFS/GVFS.Mount2% (14 lines)
ROOT0% (0 lines)
GVFS/GVFS.FunctionalTests.LockHolder0% (0 lines)
GVFS/GVFS.GVFlt0% (0 lines)
GVFS/GVFS.Hooks0% (0 lines)
GVFS/GVFS.Installers0% (0 lines)
GVFS/GVFS.MSBuild0% (0 lines)
GVFS/GVFS.NativeHooks.Common0% (0 lines)
GVFS/GVFS.PerfProfiling0% (0 lines)
GVFS/GVFS.Service.UI0% (0 lines)

Duplication Between Components (50+ lines)

G GVFS/GVFS.PostIndexChangedHook GVFS/GVFS.PostIndexChangedHook GVFS/GVFS.VirtualFileSystemHook GVFS/GVFS.VirtualFileSystemHook GVFS/GVFS.PostIndexChangedHook--GVFS/GVFS.VirtualFileSystemHook 286 GVFS/GVFS.ReadObjectHook GVFS/GVFS.ReadObjectHook GVFS/GVFS.PostIndexChangedHook--GVFS/GVFS.ReadObjectHook 252 GVFS/GitHooksLoader GVFS/GitHooksLoader GVFS/GVFS.PostIndexChangedHook--GVFS/GitHooksLoader 168 GVFS/GVFS.VirtualFileSystemHook--GVFS/GitHooksLoader 168 GVFS/GVFS.ReadObjectHook--GVFS/GVFS.VirtualFileSystemHook 252 GVFS/GVFS.ReadObjectHook--GVFS/GitHooksLoader 168 GVFS/FastFetch GVFS/FastFetch GVFS/GVFS.Common GVFS/GVFS.Common GVFS/FastFetch--GVFS/GVFS.Common 80 GVFS/GVFS.NativeTests GVFS/GVFS.NativeTests GVFS/GVFS.NativeTests--GVFS/GVFS.VirtualFileSystemHook 64 GVFS/GVFS.NativeTests--GVFS/GVFS.PostIndexChangedHook 64 GVFS/GVFS.NativeTests--GVFS/GitHooksLoader 64 GVFS/GVFS.NativeTests--GVFS/GVFS.ReadObjectHook 64

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 220 duplicates...
Size#FoldersFilesLinesCode
83 x 2 GVFS/GVFS.PostIndexChangedHook
GVFS/GVFS.VirtualFileSystemHook
vcxproj
GVFS.PostIndexChangedHook.vcxproj
GVFS.VirtualFileSystemHook.vcxproj
21:127 (83%)
21:127 (83%)
view
70 x 2 GVFS/GVFS.PostIndexChangedHook
GVFS/GVFS.ReadObjectHook
vcxproj
GVFS.PostIndexChangedHook.vcxproj
GVFS.ReadObjectHook.vcxproj
21:110 (70%)
21:110 (69%)
view
70 x 2 GVFS/GVFS.ReadObjectHook
GVFS/GVFS.VirtualFileSystemHook
vcxproj
GVFS.ReadObjectHook.vcxproj
GVFS.VirtualFileSystemHook.vcxproj
21:110 (69%)
21:110 (70%)
view
35 x 2 GVFS/GVFS.PostIndexChangedHook
GVFS/GVFS.VirtualFileSystemHook
filters
GVFS.PostIndexChangedHook.vcxproj.fil...
GVFS.VirtualFileSystemHook.vcxproj.fi...
1:50 (100%)
1:50 (100%)
view
20 x 2 GVFS/GVFS.VirtualFileSystemHook
GVFS/GitHooksLoader
vcxproj
GVFS.VirtualFileSystemHook.vcxproj
GitHooksLoader.vcxproj
35:60 (20%)
33:58 (21%)
view
20 x 2 GVFS/GVFS.ReadObjectHook
GVFS/GitHooksLoader
vcxproj
GVFS.ReadObjectHook.vcxproj
GitHooksLoader.vcxproj
35:60 (19%)
33:58 (21%)
view
20 x 2 GVFS/GVFS.PostIndexChangedHook
GVFS/GitHooksLoader
vcxproj
GVFS.PostIndexChangedHook.vcxproj
GitHooksLoader.vcxproj
35:60 (20%)
33:58 (21%)
view
17 x 2 GVFS/GVFS.NativeTests
GVFS/GVFS.VirtualFileSystemHook
vcxproj
GVFS.NativeTests.vcxproj
GVFS.VirtualFileSystemHook.vcxproj
36:58 (12%)
35:57 (17%)
view
17 x 2 GVFS/GVFS.NativeTests
GVFS/GVFS.PostIndexChangedHook
vcxproj
GVFS.NativeTests.vcxproj
GVFS.PostIndexChangedHook.vcxproj
36:58 (12%)
35:57 (17%)
view
17 x 2 GVFS/GVFS.NativeTests
GVFS/GitHooksLoader
vcxproj
GVFS.NativeTests.vcxproj
GitHooksLoader.vcxproj
36:58 (12%)
33:55 (18%)
view
17 x 2 GVFS/GVFS.NativeTests
GVFS/GVFS.ReadObjectHook
vcxproj
GVFS.NativeTests.vcxproj
GVFS.ReadObjectHook.vcxproj
36:58 (12%)
35:57 (16%)
view
15 x 2 GVFS/GVFS.FunctionalTests/Windows/Tools
GVFS/GVFS.Platform.Windows
RegistryHelper.cs
WindowsPlatform.cs
16:44 (68%)
69:97 (6%)
view
14 x 2 GVFS/GVFS.Mount
GVFS/GVFS/CommandLine
InProcessMountVerb.cs
MountVerb.cs
28:42 (10%)
21:35 (7%)
view
14 x 2 GVFS/FastFetch
GVFS/GVFS.Common/Prefetch
CheckoutPrefetcher.cs
BlobPrefetcher.cs
49:77 (11%)
227:253 (4%)
view
13 x 2 GVFS/GVFS.Platform.Windows/DiskLayoutUpgrades
GVFS/GVFS.Platform.Windows/DiskLayoutUpgrades
DiskLayout12to13Upgrade_FolderPlaceho...
DiskLayout16to17Upgrade_FolderPlaceho...
24:39 (25%)
19:34 (39%)
view
13 x 2 GVFS/GVFS.ReadObjectHook
GVFS/GVFS.VirtualFileSystemHook
filters
GVFS.ReadObjectHook.vcxproj.filters
GVFS.VirtualFileSystemHook.vcxproj.fi...
1:16 (33%)
1:16 (37%)
view
13 x 2 GVFS/GVFS.PostIndexChangedHook
GVFS/GVFS.ReadObjectHook
filters
GVFS.PostIndexChangedHook.vcxproj.fil...
GVFS.ReadObjectHook.vcxproj.filters
1:16 (37%)
1:16 (33%)
view
12 x 2 GVFS/GVFS.NativeTests/include
GVFS/GVFS.NativeTests/source
NtFunctions.h
NtFunctions.cpp
12:23 (24%)
14:25 (10%)
view
12 x 2 GVFS/GVFS.NativeTests/source
GVFS/GVFS.NativeTests/source
ProjFS_MultiThreadTest.cpp
ProjFS_MultiThreadTest.cpp
68:97 (11%)
135:164 (11%)
view
12 x 2 GVFS/GVFS.FunctionalTests/FileSystemRunners
GVFS/GVFS.FunctionalTests/FileSystemRunners
BashRunner.cs
CmdRunner.cs
75:90 (7%)
42:57 (11%)
view
Duplicated Units
The list of top 12 duplicated units.
See data for all 12 unit duplicates...
Size#FoldersFilesLinesCode
19 x 2 GVFS/GVFS.Common/Database
GVFS/GVFS.Common/Database
SparseTable.cs
SparseTable.cs
28:48 
76:96 
view
15 x 2 GVFS/GVFS.Common/Database
GVFS/GVFS.Common/Database
PlaceholderTable.cs
PlaceholderTable.cs
210:225 
227:242 
view
15 x 2 GVFS/GVFS.FunctionalTests/Windows/Tools
GVFS/GVFS.Platform.Windows
RegistryHelper.cs
WindowsPlatform.cs
27:45 
80:98 
view
12 x 2 GVFS/GVFS.NativeTests/source
GVFS/GVFS.NativeTests/source
ProjFS_BugRegressionTest.cpp
ProjFS_BugRegressionTest.cpp
109:126 
145:160 
view
12 x 2 GVFS/GVFS.NativeTests/source
GVFS/GVFS.NativeTests/source
ProjFS_BugRegressionTest.cpp
ProjFS_BugRegressionTest.cpp
128:143 
162:177 
view
10 x 2 GVFS/GVFS.Mount
GVFS/GVFS/CommandLine
InProcessMountVerb.cs
MountVerb.cs
169:180 
352:363 
view
9 x 6 GVFS/GVFS.Common
GVFS/GVFS.Common/Git
GVFS/GVFS.Common
GVFS/GVFS.Platform.Windows
GVFS/GVFS.Virtualization/BlobSize
GVFS/GVFS.Virtualization/Projection
FileBasedCollection.cs
GitObjects.cs
LocalCacheResolver.cs
ProjFSFilter.cs
BlobSizes.cs
GitIndexProjection.cs
308:318 
492:502 
154:164 
694:704 
222:232 
715:725 
view
8 x 2 GVFS/GVFS.Common/Database
GVFS/GVFS.Common/Database
PlaceholderTable.cs
SparseTable.cs
21:29 
18:26 
view
8 x 2 GVFS/GVFS.FunctionalTests/Windows/Tools
GVFS/GVFS.Platform.Windows
RegistryHelper.cs
WindowsPlatform.cs
16:25 
69:78 
view
7 x 2 GVFS/GVFS.FunctionalTests/FileSystemRunners
GVFS/GVFS.FunctionalTests/FileSystemRunners
SystemIORunner.cs
SystemIORunner.cs
153:161 
163:171 
view
7 x 3 GVFS/GVFS.Platform.Windows/DiskLayoutUpgrades
GVFS/GVFS.Platform.Windows/DiskLayoutUpgrades
GVFS/GVFS.Platform.Windows/DiskLayoutUpgrades
DiskLayout10to11Upgrade_NewOperationT...
DiskLayout15to16Upgrade_GitStatusCach...
DiskLayout17to18Upgrade_TombstoneFold...
17:25 
20:28 
10:21 
view
6 x 2 GVFS/GVFS.FunctionalTests/Windows/Tools
GVFS/GVFS.Platform.Windows
RegistryHelper.cs
WindowsPlatform.cs
7:14 
416:423 
view