Skip to content

Commit 4f1e158

Browse files
committed
refactor: integrate RecyclableMemoryStream for improved memory management and streamline directory preparation in DataExporter
1 parent 7157951 commit 4f1e158

File tree

3 files changed

+18
-18
lines changed

3 files changed

+18
-18
lines changed

CodeLineCounter/CodeLineCounter.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<PackageReference Include="CsvHelper" Version="33.0.1" />
1717
<PackageReference Include="DotNetGraph" Version="3.2.0" />
1818
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.12.0" />
19+
<PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="3.0.1" />
1920
</ItemGroup>
2021

2122
</Project>

CodeLineCounter/Services/DependencyGraphGenerator.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
using DotNetGraph.Compilation;
66
using DotNetGraph.Core;
77
using DotNetGraph.Extensions;
8+
using Microsoft.IO;
89

910
namespace CodeLineCounter.Services
1011
{
1112
public static class DependencyGraphGenerator
1213
{
14+
private static readonly RecyclableMemoryStreamManager MemoryStreamManager = new RecyclableMemoryStreamManager();
1315
public static DotGraph GenerateGraphOnly(List<DependencyRelation> dependencies, string? filterNamespace = null, string? filterAssembly = null)
1416
{
1517
var filteredDependencies = dependencies
@@ -160,7 +162,7 @@ public static DotNode CreateNode(Dictionary<string, (int incoming, int outgoing)
160162
public static async Task CompileGraphAndWriteToFile(string fileName, string outputPath, DotGraph graph)
161163
{
162164
// Use memory buffer
163-
using var memoryStream = new MemoryStream();
165+
using var memoryStream = MemoryStreamManager.GetStream();//new MemoryStream();
164166
using var writer = new StreamWriter(memoryStream);
165167

166168
var options = new CompilationOptions { Indented = true };

CodeLineCounter/Utils/DataExporter.cs

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -42,26 +42,18 @@ public static void ExportCollection<T>(string? filename, string outputPath, IEnu
4242

4343
public static void ExportDuplications(string baseFileName, string outputPath, List<DuplicationCode> duplications, CoreUtils.ExportFormat format)
4444
{
45-
string? directory = Path.GetDirectoryName(outputPath);
46-
if (!string.IsNullOrEmpty(directory))
47-
{
48-
Directory.CreateDirectory(directory);
49-
}
45+
PrepareDirectoryForOutput(outputPath);
5046

5147
ExportCollection(baseFileName,outputPath, duplications, format);
5248
}
5349

5450
public static async Task ExportDependencies(string baseFileName,string outputPath, List<DependencyRelation> dependencies, CoreUtils.ExportFormat format)
5551
{
56-
string? directory = Path.GetDirectoryName(outputPath);
57-
if (!string.IsNullOrEmpty(directory))
58-
{
59-
Directory.CreateDirectory(directory);
60-
}
52+
PrepareDirectoryForOutput(outputPath);
6153
string filename = CoreUtils.GetExportFileNameWithExtension(baseFileName, format);
62-
6354

64-
ExportCollection(filename,outputPath, dependencies, format);
55+
56+
ExportCollection(filename, outputPath, dependencies, format);
6557

6658
DotGraph graph = DependencyGraphGenerator.GenerateGraphOnly(dependencies);
6759

@@ -70,13 +62,10 @@ public static async Task ExportDependencies(string baseFileName,string outputPat
7062
await DependencyGraphGenerator.CompileGraphAndWriteToFile(filename, outputPath, graph);
7163
}
7264

65+
7366
public static void ExportMetrics(string baseFilename, string outputPath, AnalysisResult analyzeMetrics, string solutionPath,CoreUtils.ExportFormat format)
7467
{
75-
string? directory = Path.GetDirectoryName(outputPath);
76-
if (!string.IsNullOrEmpty(directory))
77-
{
78-
Directory.CreateDirectory(directory);
79-
}
68+
PrepareDirectoryForOutput(outputPath);
8069
string TOTAL = "Total";
8170
var filePath = CoreUtils.GetExportFileNameWithExtension(baseFilename, format);
8271

@@ -153,6 +142,14 @@ public static int GetFileDuplicationsCount(Dictionary<string, uint> duplicationC
153142

154143
return (int)duplicationCounts.GetValueOrDefault(normalizedPath);
155144
}
145+
private static void PrepareDirectoryForOutput(string outputPath)
146+
{
147+
string? directory = Path.GetDirectoryName(outputPath);
148+
if (!string.IsNullOrEmpty(directory))
149+
{
150+
Directory.CreateDirectory(directory);
151+
}
152+
}
156153
}
157154

158155
public interface IExportStrategy

0 commit comments

Comments
 (0)