Skip to content

Commit

Permalink
Merge pull request #65 from christianhelle/improve-code-quality
Browse files Browse the repository at this point in the history
Improve code quality
  • Loading branch information
christianhelle authored Oct 28, 2019
2 parents 2199ced + abbf548 commit c4b28cb
Show file tree
Hide file tree
Showing 25 changed files with 79 additions and 95 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
using System;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.AutoRest;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.NSwag;
Expand All @@ -23,6 +24,9 @@ public class CodeGeneratorFactoryTests
public void Init()
{
var mockFactory = new Mock<IOptionsFactory>();
mockFactory
.Setup(c => c.Create<IAutoRestOptions, AutoRestOptionsPage>())
.Returns(Test.CreateDummy<IAutoRestOptions>());
mockFactory
.Setup(c => c.Create<INSwagOptions, NSwagOptionsPage>())
.Returns(Test.CreateDummy<INSwagOptions>());
Expand Down Expand Up @@ -79,5 +83,17 @@ public void Can_Create_OpenApiCodeGenerator()
SupportedCodeGenerator.OpenApi)
.Should()
.BeOfType<OpenApiCSharpCodeGenerator>();

[TestMethod]
public void Create_NSwagStudio_Throws_NotSupported()
=> new Action(
() => sut.Create(
string.Empty,
string.Empty,
string.Empty,
SupportedLanguage.CSharp,
SupportedCodeGenerator.NSwagStudio))
.Should()
.ThrowExactly<NotSupportedException>();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@ public async Task Init()

var sut = new NSwagCSharpCodeGenerator(
"Swagger.json",
Test.CreateAnnonymous<string>(),
optionsMock.Object,
documentFactoryMock.Object,
settingsMock.Object);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
using System.Diagnostics.CodeAnalysis;
using System.Diagnostics.CodeAnalysis;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;

namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Commands.AddNew
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
using System.Diagnostics.CodeAnalysis;
using System.Diagnostics.CodeAnalysis;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;

namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Commands.AddNew
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
using System.Diagnostics.CodeAnalysis;
using System.Diagnostics.CodeAnalysis;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;

namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Commands.AddNew
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
using System.Diagnostics.CodeAnalysis;
using System.Diagnostics.CodeAnalysis;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;

namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Commands.AddNew
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,11 @@
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Extensions;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.NSwagStudio;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.General;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.NSwag;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.NSwagStudio;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Windows;
using EnvDTE;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Threading;
using Newtonsoft.Json;
using VSLangProj;
using Task = System.Threading.Tasks.Task;
Expand Down Expand Up @@ -104,4 +101,4 @@ private static string FindFolder(object item, DTE dte)
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
using System.Diagnostics.CodeAnalysis;
using System.Diagnostics.CodeAnalysis;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;

namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Commands.AddNew
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Extensions;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.NSwagStudio;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.General;
using EnvDTE;
using Microsoft.VisualStudio.Shell;
Expand Down Expand Up @@ -38,9 +37,9 @@ private static async Task OnExecuteAsync(DTE dte, AsyncPackage package)
var nswagStudioFile = item.FileNames[0];
var codeGenerator = new NSwagStudioCodeGenerator(nswagStudioFile, new CustomPathOptions());
codeGenerator.GenerateCode(null);

var project = ProjectExtensions.GetActiveProject(dte);
await project.InstallMissingPackagesAsync(package, SupportedCodeGenerator.NSwag);
}
}
}
}
19 changes: 7 additions & 12 deletions src/ApiClientCodeGen.VSIX/Extensions/StringExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
using Newtonsoft.Json;
Expand All @@ -9,18 +10,12 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Extensions
{
public static class StringExtension
{
private static readonly JsonSerializerSettings jsonSettings;

static StringExtension()
private static readonly JsonSerializerSettings JsonSettings = new JsonSerializerSettings
{
jsonSettings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
ContractResolver = new CamelCasePropertyNamesContractResolver()
};

jsonSettings.Converters.Add(new StringEnumConverter());
}
NullValueHandling = NullValueHandling.Ignore,
ContractResolver = new CamelCasePropertyNamesContractResolver(),
Converters = new List<JsonConverter> { new StringEnumConverter() }
};

public static IntPtr ConvertToIntPtr(this string code, out uint pcbOutput)
{
Expand All @@ -36,6 +31,6 @@ public static IntPtr ConvertToIntPtr(this string code, out uint pcbOutput)
public static string ToJson(this object value)
=> JsonConvert.SerializeObject(
value,
jsonSettings);
JsonSettings);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using System;
using System.IO;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.AutoRest;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.General;

Expand Down Expand Up @@ -62,4 +61,4 @@ protected override string GetCommand()
return autorestCmd;
}
}
}
}
25 changes: 10 additions & 15 deletions src/ApiClientCodeGen.VSIX/Generators/CSharpFileMerger.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,37 +72,33 @@ private static IEnumerable<string> GetSourceFileNames(string path)
{
var queue = new Queue<string>();
queue.Enqueue(path);

while (queue.Count > 0)
{
string[] files = null;
path = queue.Dequeue();
try
{
files = Directory.GetFiles(path);
foreach (var subDir in Directory.GetDirectories(path))
{
queue.Enqueue(subDir);
}
foreach (var subDir in Directory.GetDirectories(path)) queue.Enqueue(subDir);
}
catch (Exception ex)
{
Trace.TraceError(ex.ToString());
}

if (files == null)
if (files == null)
continue;

foreach (var file in files.Where(Predicate()))
{
yield return file;
}
foreach (var file in files.Where(Predicate())) yield return file;
}
}

private static Func<string, bool> Predicate()
=> file => file.EndsWith(".cs") &&
!file.Contains("AssemblyInfo.cs");
private static Func<string, bool> Predicate()
{
return file => file.EndsWith(".cs") &&
!file.Contains("AssemblyInfo.cs");
}


private static IEnumerable<string> GetUniqueNamespaces(IEnumerable<string> files)
Expand All @@ -118,7 +114,7 @@ private static IEnumerable<string> GetUniqueNamespaces(IEnumerable<string> files
foreach (var sourceLine in sourceLines)
{
var trimmedLine = sourceLine.Trim().Replace(" ", " ");
if (!trimmedLine.StartsWith(openingTag) || !trimmedLine.EndsWith(";"))
if (!trimmedLine.StartsWith(openingTag) || !trimmedLine.EndsWith(";"))
continue;

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

return names;
}

}
}
4 changes: 2 additions & 2 deletions src/ApiClientCodeGen.VSIX/Generators/CodeGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ public interface ICodeGenerator

public abstract class CodeGenerator : ICodeGenerator
{
protected readonly string SwaggerFile;
protected readonly string DefaultNamespace;
protected readonly string SwaggerFile;

protected CodeGenerator(string swaggerFile, string defaultNamespace)
{
Expand Down Expand Up @@ -49,4 +49,4 @@ public virtual string GenerateCode(IVsGeneratorProgress pGenerateProgress)
protected abstract string GetArguments(string outputFile);
protected abstract string GetCommand();
}
}
}
13 changes: 6 additions & 7 deletions src/ApiClientCodeGen.VSIX/Generators/CodeGeneratorFactory.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
using System;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.AutoRest;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.NSwag;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.OpenApi;
Expand All @@ -7,7 +8,6 @@
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.AutoRest;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.General;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.NSwag;
using System;

namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators
{
Expand Down Expand Up @@ -48,10 +48,10 @@ public ICodeGenerator Create(
case SupportedCodeGenerator.NSwag:
return new NSwagCSharpCodeGenerator(
inputFilePath,
defaultNamespace,
optionsFactory.Create<INSwagOptions, NSwagOptionsPage>(),
new OpenApiDocumentFactory(),
new NSwagCodeGeneratorSettingsFactory(defaultNamespace, optionsFactory.Create<INSwagOptions, NSwagOptionsPage>()));
new NSwagCodeGeneratorSettingsFactory(
defaultNamespace,
optionsFactory.Create<INSwagOptions, NSwagOptionsPage>()));

case SupportedCodeGenerator.Swagger:
return new SwaggerCSharpCodeGenerator(
Expand All @@ -68,7 +68,6 @@ public ICodeGenerator Create(
default:
throw new NotSupportedException();
}

}
}
}
}
2 changes: 2 additions & 0 deletions src/ApiClientCodeGen.VSIX/Generators/FileHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,12 @@ public static string CalculateChecksum(string filename)
{
using (var hashAlgorithm = MD5.Create())
using (var stream = File.OpenRead(filename))
{
return BitConverter
.ToString(hashAlgorithm.ComputeHash(stream))
.Replace("-", "")
.ToUpperInvariant();
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,32 +1,25 @@
using System;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Extensions;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.NSwag;
using Microsoft.VisualStudio.Shell.Interop;
using NSwag.CodeGeneration.CSharp;

namespace ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Generators.NSwag
{
public class NSwagCSharpCodeGenerator : ICodeGenerator
{
private readonly string swaggerFile;
private readonly string defaultNamespace;
private readonly NSwagCSharpOptions options;
private readonly IOpenApiDocumentFactory documentFactory;
private readonly INSwagCodeGeneratorSettingsFactory generatorSettingsFactory;
private readonly string swaggerFile;

public NSwagCSharpCodeGenerator(
string swaggerFile,
string defaultNamespace,
INSwagOptions options,
string swaggerFile,
IOpenApiDocumentFactory documentFactory,
INSwagCodeGeneratorSettingsFactory generatorSettingsFactory)
{
this.swaggerFile = swaggerFile ?? throw new ArgumentNullException(nameof(swaggerFile));
this.defaultNamespace = defaultNamespace ?? throw new ArgumentNullException(nameof(defaultNamespace));
this.documentFactory = documentFactory ?? throw new ArgumentNullException(nameof(documentFactory));
this.generatorSettingsFactory = generatorSettingsFactory ?? throw new ArgumentNullException(nameof(generatorSettingsFactory));
this.options = new NSwagCSharpOptions(options ?? throw new ArgumentNullException(nameof(options)));
this.generatorSettingsFactory = generatorSettingsFactory ??
throw new ArgumentNullException(nameof(generatorSettingsFactory));
}

public string GenerateCode(IVsGeneratorProgress pGenerateProgress)
Expand All @@ -47,4 +40,4 @@ public string GenerateCode(IVsGeneratorProgress pGenerateProgress)
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Extensions;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.NSwag;
using NSwag;
using NSwag.CodeGeneration.CSharp;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
using System.IO;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Core;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Extensions;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options;
using ChristianHelle.DeveloperTools.CodeGenerators.ApiClient.Options.General;
using Microsoft.VisualStudio.Shell.Interop;
using Newtonsoft.Json;
Expand Down Expand Up @@ -60,4 +59,4 @@ private static void TryRemoveSwaggerJsonSpec(string nswagFile)
}
}
}
}
}
Loading

0 comments on commit c4b28cb

Please sign in to comment.