From b29203a2aa20ffa416e6f729066e6442fa5ebfd1 Mon Sep 17 00:00:00 2001 From: Pascal Berger Date: Thu, 5 Jul 2018 22:12:19 +0200 Subject: [PATCH] (GH-135) Add IDE integration with Visual Studio using TeamCity addin --- .../IdeIntegrationSettingsTests.cs | 17 +++++++++++++++- .../GenericIssueReportFormatAliases.cs | 15 ++++++++++++++ .../IdeIntegrationSettings.cs | 20 +++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/Cake.Issues.Reporting.Generic.Tests/IdeIntegrationSettingsTests.cs b/src/Cake.Issues.Reporting.Generic.Tests/IdeIntegrationSettingsTests.cs index a747d915..cf8f30bf 100644 --- a/src/Cake.Issues.Reporting.Generic.Tests/IdeIntegrationSettingsTests.cs +++ b/src/Cake.Issues.Reporting.Generic.Tests/IdeIntegrationSettingsTests.cs @@ -535,5 +535,20 @@ public void Should_Replace_EndColumn_Token() result.ShouldBe("FooendColumnBar"); } } + + public sealed class TheForVisualStudioUsingTeamCityAddinMethod + { + [Fact] + public void Should_Return_Settings() + { + // Given + + // When + var settings = IdeIntegrationSettings.ForVisualStudioUsingTeamCityAddin(); + + // Then + settings.ShouldNotBeNull(); + } + } } -} +} \ No newline at end of file diff --git a/src/Cake.Issues.Reporting.Generic/GenericIssueReportFormatAliases.cs b/src/Cake.Issues.Reporting.Generic/GenericIssueReportFormatAliases.cs index ed3158cb..240133ab 100644 --- a/src/Cake.Issues.Reporting.Generic/GenericIssueReportFormatAliases.cs +++ b/src/Cake.Issues.Reporting.Generic/GenericIssueReportFormatAliases.cs @@ -15,6 +15,21 @@ [SuppressMessage("ReSharper", "UnusedType.Global", Justification = "Class will be loaded by Cake")] public static class GenericIssueReportFormatAliases { + /// + /// Gets an instance of the IDE integration settings for opening files in Visual Studio using the TeamCity addin. + /// + /// The context. + /// IDE integration settings. + [CakeMethodAlias] + [CakeAliasCategory(ReportingAliasConstants.ReportingFormatCakeAliasCategory)] + public static IdeIntegrationSettings GenericIssueReportIdeIntegrationSettingsForVisualStudioUsingTeamCityAddin( + this ICakeContext context) + { + context.NotNull(nameof(context)); + + return IdeIntegrationSettings.ForVisualStudioUsingTeamCityAddin(); + } + /// /// Gets an instance of a the generic report format using an embedded template. /// diff --git a/src/Cake.Issues.Reporting.Generic/IdeIntegrationSettings.cs b/src/Cake.Issues.Reporting.Generic/IdeIntegrationSettings.cs index 3292b995..2be4f404 100644 --- a/src/Cake.Issues.Reporting.Generic/IdeIntegrationSettings.cs +++ b/src/Cake.Issues.Reporting.Generic/IdeIntegrationSettings.cs @@ -22,6 +22,26 @@ public class IdeIntegrationSettings /// public string MenuEntryText { get; set; } = "Open in IDE"; + /// + /// Returns settings for integrating with Visual Studio using the TeamCity addin. + /// + /// Settings for integrating with Visual Studio using the TeamCity addin. + public static IdeIntegrationSettings ForVisualStudioUsingTeamCityAddin() + { + return new IdeIntegrationSettings() + { + MenuEntryText = "Open in Visual Studio", + JavaScript = + @"function sendHttpGetRequest(filePath, lineNumber) { + var url = 'http://127.0.0.1:63330/file?file=' + filePath + '&line=' + lineNumber; + var xmlHttp = new XMLHttpRequest(); + xmlHttp.open('GET', url, false); + xmlHttp.send(null); + }", + OpenInIdeCall = "sendHttpGetRequest({FilePath}, {Line});" + }; + } + /// /// Returns the JavaScript which should be called to open the file affected by an issue in an IDE /// with all patterns of replaced.