Skip to content

Commit c4b28cb

Browse files
Merge pull request #65 from christianhelle/improve-code-quality
Improve code quality
2 parents 2199ced + abbf548 commit c4b28cb

25 files changed

+79
-95
lines changed

src/ApiClientCodeGen.Tests/Generators/CodeGeneratorFactoryTests.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
1+
using System;
2+
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
23
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators;
34
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.AutoRest;
45
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.NSwag;
@@ -23,6 +24,9 @@ public class CodeGeneratorFactoryTests
2324
public void Init()
2425
{
2526
var mockFactory = new Mock<IOptionsFactory>();
27+
mockFactory
28+
.Setup(c => c.Create<IAutoRestOptions, AutoRestOptionsPage>())
29+
.Returns(Test.CreateDummy<IAutoRestOptions>());
2630
mockFactory
2731
.Setup(c => c.Create<INSwagOptions, NSwagOptionsPage>())
2832
.Returns(Test.CreateDummy<INSwagOptions>());
@@ -79,5 +83,17 @@ public void Can_Create_OpenApiCodeGenerator()
7983
SupportedCodeGenerator.OpenApi)
8084
.Should()
8185
.BeOfType<OpenApiCSharpCodeGenerator>();
86+
87+
[TestMethod]
88+
public void Create_NSwagStudio_Throws_NotSupported()
89+
=> new Action(
90+
() => sut.Create(
91+
string.Empty,
92+
string.Empty,
93+
string.Empty,
94+
SupportedLanguage.CSharp,
95+
SupportedCodeGenerator.NSwagStudio))
96+
.Should()
97+
.ThrowExactly<NotSupportedException>();
8298
}
8399
}

src/ApiClientCodeGen.Tests/Generators/NSwag/NSwagCSharpCodeGeneratorTests.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ public async Task Init()
3535

3636
var sut = new NSwagCSharpCodeGenerator(
3737
"Swagger.json",
38-
Test.CreateAnnonymous<string>(),
39-
optionsMock.Object,
4038
documentFactoryMock.Object,
4139
settingsMock.Object);
4240

src/ApiClientCodeGen.VSIX/Commands/AddNew/NewAutoRestClientCommand.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
2-
using System.Diagnostics.CodeAnalysis;
1+
using System.Diagnostics.CodeAnalysis;
2+
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
33

44
namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Commands.AddNew
55
{

src/ApiClientCodeGen.VSIX/Commands/AddNew/NewNSwagClientCommand.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
2-
using System.Diagnostics.CodeAnalysis;
1+
using System.Diagnostics.CodeAnalysis;
2+
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
33

44
namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Commands.AddNew
55
{

src/ApiClientCodeGen.VSIX/Commands/AddNew/NewNSwagStudioClientCommand.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
2-
using System.Diagnostics.CodeAnalysis;
1+
using System.Diagnostics.CodeAnalysis;
2+
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
33

44
namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Commands.AddNew
55
{

src/ApiClientCodeGen.VSIX/Commands/AddNew/NewOpenApiClientCommand.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
2-
using System.Diagnostics.CodeAnalysis;
1+
using System.Diagnostics.CodeAnalysis;
2+
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
33

44
namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Commands.AddNew
55
{

src/ApiClientCodeGen.VSIX/Commands/AddNew/NewRestClientCommand.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,11 @@
66
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
77
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Extensions;
88
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.NSwagStudio;
9-
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options;
109
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.General;
11-
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.NSwag;
1210
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.NSwagStudio;
1311
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Windows;
1412
using EnvDTE;
1513
using Microsoft.VisualStudio.Shell;
16-
using Microsoft.VisualStudio.Threading;
1714
using Newtonsoft.Json;
1815
using VSLangProj;
1916
using Task = System.Threading.Tasks.Task;
@@ -104,4 +101,4 @@ private static string FindFolder(object item, DTE dte)
104101
}
105102
}
106103
}
107-
}
104+
}

src/ApiClientCodeGen.VSIX/Commands/AddNew/NewSwaggerClientCommand.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
2-
using System.Diagnostics.CodeAnalysis;
1+
using System.Diagnostics.CodeAnalysis;
2+
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
33

44
namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Commands.AddNew
55
{

src/ApiClientCodeGen.VSIX/Commands/NSwagStudio/NSwagStudioCommand.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
55
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Extensions;
66
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.NSwagStudio;
7-
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options;
87
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.General;
98
using EnvDTE;
109
using Microsoft.VisualStudio.Shell;
@@ -38,9 +37,9 @@ private static async Task OnExecuteAsync(DTE dte, AsyncPackage package)
3837
var nswagStudioFile = item.FileNames[0];
3938
var codeGenerator = new NSwagStudioCodeGenerator(nswagStudioFile, new CustomPathOptions());
4039
codeGenerator.GenerateCode(null);
41-
40+
4241
var project = ProjectExtensions.GetActiveProject(dte);
4342
await project.InstallMissingPackagesAsync(package, SupportedCodeGenerator.NSwag);
4443
}
4544
}
46-
}
45+
}
Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Runtime.InteropServices;
34
using System.Text;
45
using Newtonsoft.Json;
@@ -9,18 +10,12 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Extensions
910
{
1011
public static class StringExtension
1112
{
12-
private static readonly JsonSerializerSettings jsonSettings;
13-
14-
static StringExtension()
13+
private static readonly JsonSerializerSettings JsonSettings = new JsonSerializerSettings
1514
{
16-
jsonSettings = new JsonSerializerSettings
17-
{
18-
NullValueHandling = NullValueHandling.Ignore,
19-
ContractResolver = new CamelCasePropertyNamesContractResolver()
20-
};
21-
22-
jsonSettings.Converters.Add(new StringEnumConverter());
23-
}
15+
NullValueHandling = NullValueHandling.Ignore,
16+
ContractResolver = new CamelCasePropertyNamesContractResolver(),
17+
Converters = new List<JsonConverter> { new StringEnumConverter() }
18+
};
2419

2520
public static IntPtr ConvertToIntPtr(this string code, out uint pcbOutput)
2621
{
@@ -36,6 +31,6 @@ public static IntPtr ConvertToIntPtr(this string code, out uint pcbOutput)
3631
public static string ToJson(this object value)
3732
=> JsonConvert.SerializeObject(
3833
value,
39-
jsonSettings);
34+
JsonSettings);
4035
}
4136
}

src/ApiClientCodeGen.VSIX/Generators/AutoRest/AutoRestCSharpCodeGenerator.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System;
22
using System.IO;
33
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
4-
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options;
54
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.AutoRest;
65
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.General;
76

@@ -62,4 +61,4 @@ protected override string GetCommand()
6261
return autorestCmd;
6362
}
6463
}
65-
}
64+
}

src/ApiClientCodeGen.VSIX/Generators/CSharpFileMerger.cs

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -72,37 +72,33 @@ private static IEnumerable<string> GetSourceFileNames(string path)
7272
{
7373
var queue = new Queue<string>();
7474
queue.Enqueue(path);
75-
75+
7676
while (queue.Count > 0)
7777
{
7878
string[] files = null;
7979
path = queue.Dequeue();
8080
try
8181
{
8282
files = Directory.GetFiles(path);
83-
foreach (var subDir in Directory.GetDirectories(path))
84-
{
85-
queue.Enqueue(subDir);
86-
}
83+
foreach (var subDir in Directory.GetDirectories(path)) queue.Enqueue(subDir);
8784
}
8885
catch (Exception ex)
8986
{
9087
Trace.TraceError(ex.ToString());
9188
}
9289

93-
if (files == null)
90+
if (files == null)
9491
continue;
9592

96-
foreach (var file in files.Where(Predicate()))
97-
{
98-
yield return file;
99-
}
93+
foreach (var file in files.Where(Predicate())) yield return file;
10094
}
10195
}
10296

103-
private static Func<string, bool> Predicate()
104-
=> file => file.EndsWith(".cs") &&
105-
!file.Contains("AssemblyInfo.cs");
97+
private static Func<string, bool> Predicate()
98+
{
99+
return file => file.EndsWith(".cs") &&
100+
!file.Contains("AssemblyInfo.cs");
101+
}
106102

107103

108104
private static IEnumerable<string> GetUniqueNamespaces(IEnumerable<string> files)
@@ -118,7 +114,7 @@ private static IEnumerable<string> GetUniqueNamespaces(IEnumerable<string> files
118114
foreach (var sourceLine in sourceLines)
119115
{
120116
var trimmedLine = sourceLine.Trim().Replace(" ", " ");
121-
if (!trimmedLine.StartsWith(openingTag) || !trimmedLine.EndsWith(";"))
117+
if (!trimmedLine.StartsWith(openingTag) || !trimmedLine.EndsWith(";"))
122118
continue;
123119

124120
var name = trimmedLine.Substring(namespaceStartIndex, trimmedLine.Length - namespaceStartIndex - 1);
@@ -129,6 +125,5 @@ private static IEnumerable<string> GetUniqueNamespaces(IEnumerable<string> files
129125

130126
return names;
131127
}
132-
133128
}
134129
}

src/ApiClientCodeGen.VSIX/Generators/CodeGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ public interface ICodeGenerator
1212

1313
public abstract class CodeGenerator : ICodeGenerator
1414
{
15-
protected readonly string SwaggerFile;
1615
protected readonly string DefaultNamespace;
16+
protected readonly string SwaggerFile;
1717

1818
protected CodeGenerator(string swaggerFile, string defaultNamespace)
1919
{
@@ -49,4 +49,4 @@ public virtual string GenerateCode(IVsGeneratorProgress pGenerateProgress)
4949
protected abstract string GetArguments(string outputFile);
5050
protected abstract string GetCommand();
5151
}
52-
}
52+
}

src/ApiClientCodeGen.VSIX/Generators/CodeGeneratorFactory.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
1+
using System;
2+
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
23
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.AutoRest;
34
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.NSwag;
45
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.OpenApi;
@@ -7,7 +8,6 @@
78
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.AutoRest;
89
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.General;
910
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.NSwag;
10-
using System;
1111

1212
namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators
1313
{
@@ -48,10 +48,10 @@ public ICodeGenerator Create(
4848
case SupportedCodeGenerator.NSwag:
4949
return new NSwagCSharpCodeGenerator(
5050
inputFilePath,
51-
defaultNamespace,
52-
optionsFactory.Create<INSwagOptions, NSwagOptionsPage>(),
5351
new OpenApiDocumentFactory(),
54-
new NSwagCodeGeneratorSettingsFactory(defaultNamespace, optionsFactory.Create<INSwagOptions, NSwagOptionsPage>()));
52+
new NSwagCodeGeneratorSettingsFactory(
53+
defaultNamespace,
54+
optionsFactory.Create<INSwagOptions, NSwagOptionsPage>()));
5555

5656
case SupportedCodeGenerator.Swagger:
5757
return new SwaggerCSharpCodeGenerator(
@@ -68,7 +68,6 @@ public ICodeGenerator Create(
6868
default:
6969
throw new NotSupportedException();
7070
}
71-
7271
}
7372
}
74-
}
73+
}

src/ApiClientCodeGen.VSIX/Generators/FileHelper.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@ public static string CalculateChecksum(string filename)
2222
{
2323
using (var hashAlgorithm = MD5.Create())
2424
using (var stream = File.OpenRead(filename))
25+
{
2526
return BitConverter
2627
.ToString(hashAlgorithm.ComputeHash(stream))
2728
.Replace("-", "")
2829
.ToUpperInvariant();
30+
}
2931
}
3032
}
3133
}

src/ApiClientCodeGen.VSIX/Generators/NSwag/NSwagCSharpCodeGenerator.cs

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,25 @@
11
using System;
22
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Extensions;
3-
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options;
4-
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.NSwag;
53
using Microsoft.VisualStudio.Shell.Interop;
64
using NSwag.CodeGeneration.CSharp;
75

86
namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.NSwag
97
{
108
public class NSwagCSharpCodeGenerator : ICodeGenerator
119
{
12-
private readonly string swaggerFile;
13-
private readonly string defaultNamespace;
14-
private readonly NSwagCSharpOptions options;
1510
private readonly IOpenApiDocumentFactory documentFactory;
1611
private readonly INSwagCodeGeneratorSettingsFactory generatorSettingsFactory;
12+
private readonly string swaggerFile;
1713

1814
public NSwagCSharpCodeGenerator(
19-
string swaggerFile,
20-
string defaultNamespace,
21-
INSwagOptions options,
15+
string swaggerFile,
2216
IOpenApiDocumentFactory documentFactory,
2317
INSwagCodeGeneratorSettingsFactory generatorSettingsFactory)
2418
{
2519
this.swaggerFile = swaggerFile ?? throw new ArgumentNullException(nameof(swaggerFile));
26-
this.defaultNamespace = defaultNamespace ?? throw new ArgumentNullException(nameof(defaultNamespace));
2720
this.documentFactory = documentFactory ?? throw new ArgumentNullException(nameof(documentFactory));
28-
this.generatorSettingsFactory = generatorSettingsFactory ?? throw new ArgumentNullException(nameof(generatorSettingsFactory));
29-
this.options = new NSwagCSharpOptions(options ?? throw new ArgumentNullException(nameof(options)));
21+
this.generatorSettingsFactory = generatorSettingsFactory ??
22+
throw new ArgumentNullException(nameof(generatorSettingsFactory));
3023
}
3124

3225
public string GenerateCode(IVsGeneratorProgress pGenerateProgress)
@@ -47,4 +40,4 @@ public string GenerateCode(IVsGeneratorProgress pGenerateProgress)
4740
}
4841
}
4942
}
50-
}
43+
}

src/ApiClientCodeGen.VSIX/Generators/NSwag/NSwagCodeGeneratorSettingsFactory.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
using System;
2-
using System.Diagnostics;
3-
using System.IO;
4-
using System.Linq;
52
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Extensions;
6-
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options;
73
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.NSwag;
84
using NSwag;
95
using NSwag.CodeGeneration.CSharp;

src/ApiClientCodeGen.VSIX/Generators/NSwagStudio/NSwagStudioCodeGenerator.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using System.IO;
44
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
55
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Extensions;
6-
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options;
76
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.General;
87
using Microsoft.VisualStudio.Shell.Interop;
98
using Newtonsoft.Json;
@@ -60,4 +59,4 @@ private static void TryRemoveSwaggerJsonSpec(string nswagFile)
6059
}
6160
}
6261
}
63-
}
62+
}

0 commit comments

Comments
 (0)