From 284f8029dc843c8d8c1a30e1dd6423edcb4d9dca Mon Sep 17 00:00:00 2001 From: naminodarie Date: Thu, 8 Apr 2021 05:22:14 +0900 Subject: [PATCH 1/2] Add config file path to diagnostics --- CHANGELOG.md | 4 +++ .../Diagnostics/DiagnosticDescriptors.cs | 10 ++++--- .../EmbedderGenerator.cs | 2 +- .../Diagnostics/DiagnosticDescriptors.cs | 5 +++- .../Diagnostics/DiagnosticDescriptorsTest.cs | 3 ++- .../DiagnosticDescriptorsTest.ja-JP.cs | 3 ++- .../Generate/ConfigTest.cs | 27 ++++++++++++++----- .../Generate/ConfigTest.cs | 4 ++- 8 files changed, 43 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb16fb2..07a42d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [3.1.0] - 2021-04-06 +### Added +- SourceExpander.Embedder, SourceExpander.Generator: Add config file path to diagnostics + ## [3.1.0] - 2021-04-06 ### Added - SourceExpander.Embedder: Add `minify-level` to Embedder config diff --git a/Source/SourceExpander.Embedder/Diagnostics/DiagnosticDescriptors.cs b/Source/SourceExpander.Embedder/Diagnostics/DiagnosticDescriptors.cs index d13fa39..2a60cd7 100644 --- a/Source/SourceExpander.Embedder/Diagnostics/DiagnosticDescriptors.cs +++ b/Source/SourceExpander.Embedder/Diagnostics/DiagnosticDescriptors.cs @@ -6,6 +6,8 @@ namespace SourceExpander { public static class DiagnosticDescriptors { + private static Location AdditionalFileLocation(string filePath) => Location.Create(filePath, new(), new()); + public static Diagnostic EMBED0001_UnknownError(string message) => Diagnostic.Create(EMBED0001_UnknownError_Descriptor, Location.None, message); private static readonly DiagnosticDescriptor EMBED0001_UnknownError_Descriptor = new( @@ -37,7 +39,8 @@ public static Diagnostic EMBED0002_OlderVersion(Version embbederVersion, string DiagnosticSeverity.Warning, true); public static Diagnostic EMBED0003_ParseConfigError(string configFile, string message) - => Diagnostic.Create(EMBED0003_ParseConfigError_Descriptor, Location.None, configFile, message); + => Diagnostic.Create(EMBED0003_ParseConfigError_Descriptor, + AdditionalFileLocation(configFile), configFile, message); private static readonly DiagnosticDescriptor EMBED0003_ParseConfigError_Descriptor = new( "EMBED0003", new LocalizableResourceString( @@ -158,8 +161,9 @@ public static Diagnostic EMBED0010_UsingAliasDirective(Location location) true); - public static Diagnostic EMBED0011_ObsoleteConfigProperty(string obsoleteProperty, string insteadProperty) - => Diagnostic.Create(EMBED0011_ObsoleteConfigProperty_Descriptor, Location.None, obsoleteProperty, insteadProperty); + public static Diagnostic EMBED0011_ObsoleteConfigProperty(string configFile, string obsoleteProperty, string insteadProperty) + => Diagnostic.Create(EMBED0011_ObsoleteConfigProperty_Descriptor, + AdditionalFileLocation(configFile), obsoleteProperty, insteadProperty); private static readonly DiagnosticDescriptor EMBED0011_ObsoleteConfigProperty_Descriptor = new( "EMBED0011", new LocalizableResourceString( diff --git a/Source/SourceExpander.Embedder/EmbedderGenerator.cs b/Source/SourceExpander.Embedder/EmbedderGenerator.cs index 2d7d8fe..9bfe62c 100644 --- a/Source/SourceExpander.Embedder/EmbedderGenerator.cs +++ b/Source/SourceExpander.Embedder/EmbedderGenerator.cs @@ -52,7 +52,7 @@ public void Execute(GeneratorExecutionContext context) config = EmbedderConfig.Parse(configText); foreach (var p in config.ObsoleteConfigProperties) context.ReportDiagnostic( - DiagnosticDescriptors.EMBED0011_ObsoleteConfigProperty(p.Name, p.Instead)); + DiagnosticDescriptors.EMBED0011_ObsoleteConfigProperty(configFile.Path, p.Name, p.Instead)); } catch (ParseConfigException e) { diff --git a/Source/SourceExpander.Generator/Diagnostics/DiagnosticDescriptors.cs b/Source/SourceExpander.Generator/Diagnostics/DiagnosticDescriptors.cs index 548d1ac..5b3683d 100644 --- a/Source/SourceExpander.Generator/Diagnostics/DiagnosticDescriptors.cs +++ b/Source/SourceExpander.Generator/Diagnostics/DiagnosticDescriptors.cs @@ -7,6 +7,8 @@ namespace SourceExpander { public static class DiagnosticDescriptors { + private static Location AdditionalFileLocation(string filePath) => Location.Create(filePath, new(), new()); + public static Diagnostic EXPAND0001_UnknownError(string message) => Diagnostic.Create(EXPAND0001_UnknownError_Descriptor, Location.None, message); private static readonly DiagnosticDescriptor EXPAND0001_UnknownError_Descriptor = new( @@ -98,7 +100,8 @@ public static Diagnostic EXPAND0006_AllowUnsafe(string assemblyName) DiagnosticSeverity.Warning, true); public static Diagnostic EXPAND0007_ParseConfigError(string configFile, string message) - => Diagnostic.Create(EXPAND0007_ParseConfigError_Descriptor, Location.None, configFile, message); + => Diagnostic.Create(EXPAND0007_ParseConfigError_Descriptor, + AdditionalFileLocation(configFile), configFile, message); private static readonly DiagnosticDescriptor EXPAND0007_ParseConfigError_Descriptor = new( "EXPAND0007", new LocalizableResourceString( diff --git a/Test/SourceExpander.Embedder.Test/Diagnostics/DiagnosticDescriptorsTest.cs b/Test/SourceExpander.Embedder.Test/Diagnostics/DiagnosticDescriptorsTest.cs index 650af76..94e2cb2 100644 --- a/Test/SourceExpander.Embedder.Test/Diagnostics/DiagnosticDescriptorsTest.cs +++ b/Test/SourceExpander.Embedder.Test/Diagnostics/DiagnosticDescriptorsTest.cs @@ -92,7 +92,8 @@ public void EMBED0010() [Fact] public void EMBED0011() { - DiagnosticDescriptors.EMBED0011_ObsoleteConfigProperty("old-property", "instead-property") + DiagnosticDescriptors.EMBED0011_ObsoleteConfigProperty( + "/home/user/SourceExpander.Embedder.Config.json", "old-property", "instead-property") .GetMessage(formatProvider) .Should() .Be("Obsolete embedder config property. old-property is obsolete. Use instead-property."); diff --git a/Test/SourceExpander.Embedder.Test/Diagnostics/DiagnosticDescriptorsTest.ja-JP.cs b/Test/SourceExpander.Embedder.Test/Diagnostics/DiagnosticDescriptorsTest.ja-JP.cs index 1d58a3b..35ec436 100644 --- a/Test/SourceExpander.Embedder.Test/Diagnostics/DiagnosticDescriptorsTest.ja-JP.cs +++ b/Test/SourceExpander.Embedder.Test/Diagnostics/DiagnosticDescriptorsTest.ja-JP.cs @@ -92,7 +92,8 @@ public void EMBED0010() [Fact] public void EMBED0011() { - DiagnosticDescriptors.EMBED0011_ObsoleteConfigProperty("old-property", "instead-property") + DiagnosticDescriptors.EMBED0011_ObsoleteConfigProperty( + "/home/user/SourceExpander.Embedder.Config.json", "old-property", "instead-property") .GetMessage(formatProvider) .Should() .Be("old-property は廃止されました。代わりに instead-property を使用してください"); diff --git a/Test/SourceExpander.Embedder.Test/Generate/ConfigTest.cs b/Test/SourceExpander.Embedder.Test/Generate/ConfigTest.cs index f2405cb..fd013f1 100644 --- a/Test/SourceExpander.Embedder.Test/Generate/ConfigTest.cs +++ b/Test/SourceExpander.Embedder.Test/Generate/ConfigTest.cs @@ -9,17 +9,22 @@ namespace SourceExpander.Embedder.Generate.Test { public class ConfigTest : EmbedderGeneratorTestBase { - public static TheoryData ParseErrorJsons = new TheoryData + public static TheoryData ParseErrorJsons = new TheoryData { { new InMemorySourceText( - "/foo/bar/SourceExpander.Embedder.Config.json", @" + "/foo/directory/SourceExpander.Embedder.Config.json", @" { ""$schema"": ""https://raw.githubusercontent.com/naminodarie/SourceExpander/master/schema/embedder.schema.json"", ""embedding-type"": ""Raw"", ""exclude-attributes"": 1 } -") +"), + new object[] + { + "/foo/directory/SourceExpander.Embedder.Config.json", + "Error converting value 1 to type 'System.String[]'. Path 'exclude-attributes', line 5, position 27." + } }, { new InMemorySourceText( @@ -29,13 +34,18 @@ public class ConfigTest : EmbedderGeneratorTestBase ""embedding-type"": ""Raw"", ""exclude-attributes"": 1 } -") +"), + new object[] + { + "/foo/bar/sourceExpander.embedder.config.json", + "Error converting value 1 to type 'System.String[]'. Path 'exclude-attributes', line 5, position 27." + } }, }; [Theory] [MemberData(nameof(ParseErrorJsons))] - public async Task ParseErrorTest(InMemorySourceText additionalText) + public async Task ParseError(InMemorySourceText additionalText, object[] diagnosticsArg) { var test = new Test { @@ -69,7 +79,9 @@ static void Main() }, ExpectedDiagnostics = { - DiagnosticResult.CompilerError("EMBED0003"), + DiagnosticResult.CompilerError("EMBED0003") + .WithSpan(additionalText.Path, 1, 1, 1, 1) + .WithArguments(diagnosticsArg), } } }; @@ -1070,7 +1082,8 @@ public async Task ObsoleteConfigProperty(string configJson, (string Obsolete, st foreach (var (obsolete, instead) in diagnosticsArgs) test.ExpectedDiagnostics.Add( new DiagnosticResult("EMBED0011", DiagnosticSeverity.Warning) - .WithArguments(obsolete, instead)); + .WithSpan("/foo/bar/SourceExpander.Embedder.Config.json", 1, 1, 1, 1) + .WithArguments(obsolete, instead)); await test.RunAsync(); } diff --git a/Test/SourceExpander.Generator.Test/Generate/ConfigTest.cs b/Test/SourceExpander.Generator.Test/Generate/ConfigTest.cs index 1136b99..70ad105 100644 --- a/Test/SourceExpander.Generator.Test/Generate/ConfigTest.cs +++ b/Test/SourceExpander.Generator.Test/Generate/ConfigTest.cs @@ -111,7 +111,9 @@ static void M() }, ExpectedDiagnostics = { - DiagnosticResult.CompilerError("EXPAND0007").WithArguments(diagnosticsArg), + DiagnosticResult.CompilerError("EXPAND0007") + .WithSpan(additionalText.Path, 1, 1, 1, 1) + .WithArguments(diagnosticsArg), }, } }; From 7d012f4f9cae82fb7140de57763cc5d45b81a7dc Mon Sep 17 00:00:00 2001 From: naminodarie Date: Thu, 8 Apr 2021 05:22:40 +0900 Subject: [PATCH 2/2] v3.1.1 --- CHANGELOG.md | 2 +- Directory.Build.props | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 07a42d1..f76234c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [3.1.0] - 2021-04-06 +## [3.1.1] - 2021-04-06 ### Added - SourceExpander.Embedder, SourceExpander.Generator: Add config file path to diagnostics diff --git a/Directory.Build.props b/Directory.Build.props index 27f5b6a..f229f19 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -9,8 +9,8 @@ https://github.com/naminodarie/SourceExpander https://github.com/naminodarie/SourceExpander/blob/master/CHANGELOG.md - 3.1.0 - 3.1.0.100 + 3.1.1 + 3.1.1.100 True $(MSBuildThisFileDirectory)key.snk