Skip to content

Commit

Permalink
Add html to KnownLanguages, QP config, mute & disable commands
Browse files Browse the repository at this point in the history
  • Loading branch information
georgii-borovinskikh-sonarsource committed Jan 22, 2025
1 parent 567333a commit 79c0043
Show file tree
Hide file tree
Showing 11 changed files with 20 additions and 89 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ internal class NonRoslynDummyBindingConfigProvider : IBindingConfigProvider
Language.Js,
Language.Ts,
Language.Secrets,
Language.Css
Language.Css,
Language.Html,
];

public bool IsLanguageSupported(Language language) => SupportedLanguages.Contains(language);
Expand Down
20 changes: 5 additions & 15 deletions src/Core.UnitTests/LanguageTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,21 +77,6 @@ public void Language_ISupported_UnsupportedLanguage_IsFalse()
other.IsSupported.Should().BeFalse();
}

[TestMethod]
public void Language_ServerLanguageObjectsAndKeys()
{
// Act + Assert
Language.CSharp.ServerLanguage.Key.Should().Be(SonarLanguageKeys.CSharp);
Language.VBNET.ServerLanguage.Key.Should().Be(SonarLanguageKeys.VBNet);
Language.Cpp.ServerLanguage.Key.Should().Be(SonarLanguageKeys.CPlusPlus);
Language.C.ServerLanguage.Key.Should().Be(SonarLanguageKeys.C);
Language.Js.ServerLanguage.Key.Should().Be(SonarLanguageKeys.JavaScript);
Language.Ts.ServerLanguage.Key.Should().Be(SonarLanguageKeys.TypeScript);
Language.Css.ServerLanguage.Key.Should().Be(SonarLanguageKeys.Css);
Language.Secrets.ServerLanguage.Key.Should().Be(SonarLanguageKeys.Secrets);
Language.Unknown.ServerLanguage.Should().BeNull();
}

[TestMethod]
public void Language_Equality()
{
Expand All @@ -115,6 +100,7 @@ public void GetLanguageFromLanguageKey_GetsCorrectLanguage()
var js = Language.GetLanguageFromLanguageKey("js");
var ts = Language.GetLanguageFromLanguageKey("ts");
var css = Language.GetLanguageFromLanguageKey("css");
var html = Language.GetLanguageFromLanguageKey("Web");
var unknown = Language.GetLanguageFromLanguageKey("unknown");

cs.Should().Be(Language.CSharp);
Expand All @@ -124,6 +110,7 @@ public void GetLanguageFromLanguageKey_GetsCorrectLanguage()
js.Should().Be(Language.Js);
ts.Should().Be(Language.Ts);
css.Should().Be(Language.Css);
html.Should().Be(Language.Html);
unknown.Should().Be(null);
}

Expand All @@ -137,6 +124,7 @@ public void GetLanguageFromRepositoryKey_GetsCorrectLanguage()
var js = Language.GetLanguageFromRepositoryKey("javascript");
var ts = Language.GetLanguageFromRepositoryKey("typescript");
var css = Language.GetLanguageFromRepositoryKey("css");
var html = Language.GetLanguageFromRepositoryKey("Web");
var secrets = Language.GetLanguageFromRepositoryKey("secrets");
var unknown = Language.GetLanguageFromRepositoryKey("unknown");

Expand All @@ -151,6 +139,7 @@ public void GetLanguageFromRepositoryKey_GetsCorrectLanguage()
js.Should().Be(Language.Js);
ts.Should().Be(Language.Ts);
css.Should().Be(Language.Css);
html.Should().Be(Language.Html);
secrets.Should().Be(Language.Secrets);
unknown.Should().Be(null);

Expand All @@ -169,6 +158,7 @@ public void GetSonarRepoKeyFromLanguageKey_GetsCorrectRepoKey()
Language.GetSonarRepoKeyFromLanguage(Language.Js).Should().Be("javascript");
Language.GetSonarRepoKeyFromLanguage(Language.Ts).Should().Be("typescript");
Language.GetSonarRepoKeyFromLanguage(Language.Css).Should().Be("css");
Language.GetSonarRepoKeyFromLanguage(Language.Html).Should().Be("Web");

Language.GetSonarRepoKeyFromLanguage(Language.Unknown).Should().BeNull();

Expand Down
2 changes: 1 addition & 1 deletion src/Core/Language.cs
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ public static IEnumerable<Language> KnownLanguages
{
get
{
return new[] { CSharp, VBNET, Cpp, C, Js, Ts, Css, Secrets };
return new[] { CSharp, VBNET, Cpp, C, Js, Ts, Css, Html, Secrets };
}
}

Expand Down
28 changes: 0 additions & 28 deletions src/Core/SonarArtefactKeys.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,34 +36,6 @@ namespace SonarLint.VisualStudio.Core
//
// * rule definition: part of a single repository. The full rule id is given by "[repo id]:[rule id]"

/// <summary>
/// Language keys for languages supported by SonarQube/Cloud plugins
/// </summary>
/// <remarks>A full list of languages keys can be obtained by calling https://sonarcloud.io/api/languages/list
/// </remarks>
public static class SonarLanguageKeys
{
// TODO: the SonarQube.Client assembly has a class that defines the SonarQube language keys:
// see SonarQube.Client.Models.SonarQubeLanguage. We shouldn't need both definitions.
public const string CSharp = "cs";
public const string VBNet = "vbnet";
public const string JavaScript = "js";
public const string TypeScript = "ts";
public const string Css = "css";
public const string C = "c";
public const string CPlusPlus = "cpp";
public const string Secrets = "secrets";
}

public static class SonarPluginKeys
{
public const string SonarCSharp = "csharp";
public const string SonarVBNet = "vbnet";
public const string SonarCFamily = "cpp";
public const string SonarJs = "javascript";
public const string SonarSecrets = "text";
}

public static class SonarRuleRepoKeys
{
public const string JavaScript = "javascript";
Expand Down
2 changes: 0 additions & 2 deletions src/Core/Telemetry/ITelemetryManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@ public interface ITelemetryManager

void OptIn();

void LanguageAnalyzed(string languageKey, TimeSpan analysisTime);

void TaintIssueInvestigatedLocally();

void TaintIssueInvestigatedRemotely();
Expand Down
20 changes: 0 additions & 20 deletions src/Integration.UnitTests/Telemetry/TelemetryManagerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,26 +135,6 @@ public void QuickFixApplied_CallsRpcService()
});
}

[DataTestMethod]
[DataRow(SonarLanguageKeys.C, Language.C, 1)]
[DataRow(SonarLanguageKeys.CPlusPlus, Language.CPP, 2)]
[DataRow(SonarLanguageKeys.CSharp, Language.CS, 3)]
[DataRow(SonarLanguageKeys.VBNet, Language.VBNET, 4)]
[DataRow(SonarLanguageKeys.JavaScript, Language.JS, 5)]
[DataRow(SonarLanguageKeys.TypeScript, Language.TS, 6)]
[DataRow(SonarLanguageKeys.Css, Language.CSS, 7)]
[DataRow(SonarLanguageKeys.Secrets, Language.SECRETS, 8)]
public void LanguageAnalyzed_CallsRpcService(string languageKey, Language language, int analysisTimeMs)
{
telemetryManager.LanguageAnalyzed(languageKey, TimeSpan.FromMilliseconds(analysisTimeMs));

Received.InOrder(() =>
{
telemetryHandler.Notify(Arg.Any<Action<ITelemetrySLCoreService>>());
telemetryService.AnalysisDoneOnSingleLanguage(Arg.Is<AnalysisDoneOnSingleLanguageParams>(a => a.language == language && a.analysisTimeMs == analysisTimeMs));
});
}

[DataTestMethod]
[DataRow(true)]
[DataRow(false)]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ public void CommandRegistration()
[DataRow("javascript:S333")]
[DataRow("typescript:S444")]
[DataRow("css:S777")]
[DataRow("Web:S787")]
[DataRow("secrets:S555")]
public void CheckStatusAndExecute_SingleIssue_SupportedRepo_StandaloneMode_VisibleAndEnabled(string errorCode)
{
Expand Down Expand Up @@ -119,6 +120,8 @@ public void CheckStatusAndExecute_SingleIssue_SupportedRepo_StandaloneMode_Visib
[DataRow("typescript:S111", SonarLintMode.LegacyConnected, false)]
[DataRow("css:S111", SonarLintMode.Connected, false)]
[DataRow("css:S111", SonarLintMode.LegacyConnected, false)]
[DataRow("Web:S111", SonarLintMode.Connected, false)]
[DataRow("Web:S111", SonarLintMode.LegacyConnected, false)]
public void CheckStatus_SingleIssue_SupportedRepo_ConnectedMode_HasExpectedEnabledStatus(string errorCode, SonarLintMode bindingMode,
bool expectedEnabled)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ public void QueryStatus_NotInConnectedMode_VisibleButDisabled()
[DataRow("javascript:S333")]
[DataRow("typescript:S444")]
[DataRow("css:S555")]
[DataRow("Web:S545")]
[DataRow("csharpsquid:S555")]
[DataRow("vbnet:S555")]
public void QueryStatus_ConnectedModeAndSupportedIssue_VisibleAndEnabled(string errorCode)
Expand Down
1 change: 1 addition & 0 deletions src/Integration.Vsix/Analysis/DisableRuleCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ private void Execute(object sender, EventArgs e)
SonarRuleRepoKeys.JavaScript,
SonarRuleRepoKeys.TypeScript,
SonarRuleRepoKeys.Css,
SonarRuleRepoKeys.HtmlRules,
SonarRuleRepoKeys.Secrets,
};

Expand Down
2 changes: 2 additions & 0 deletions src/Integration.Vsix/Analysis/MuteIssueCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
using SonarLint.VisualStudio.Core.Suppressions;
using SonarLint.VisualStudio.Core.Transition;
using SonarLint.VisualStudio.Infrastructure.VS;
using SonarQube.Client.Models;
using MessageBox = SonarLint.VisualStudio.Core.MessageBox;
using Task = System.Threading.Tasks.Task;

Expand Down Expand Up @@ -193,6 +194,7 @@ private async Task<bool> MuteIssueAsync(IFilterableIssue issue)
SonarRuleRepoKeys.JavaScript,
SonarRuleRepoKeys.TypeScript,
SonarRuleRepoKeys.Css,
SonarRuleRepoKeys.HtmlRules,
SonarRuleRepoKeys.CSharpRules,
SonarRuleRepoKeys.VBNetRules
};
Expand Down
27 changes: 5 additions & 22 deletions src/Integration/Telemetry/TelemetryManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,6 @@ public TelemetryManager(ISlCoreTelemetryHelper telemetryHelper, IKnownUIContexts

public void OptOut() => telemetryHelper.Notify(telemetryService => telemetryService.DisableTelemetry());

public void LanguageAnalyzed(string languageKey, TimeSpan analysisTime)
{
var language = Convert(languageKey);
telemetryHelper.Notify(telemetryService =>
telemetryService.AnalysisDoneOnSingleLanguage(new AnalysisDoneOnSingleLanguageParams(language, (int)Math.Round(analysisTime.TotalMilliseconds))));
}

public void TaintIssueInvestigatedLocally() => telemetryHelper.Notify(telemetryService => telemetryService.TaintVulnerabilitiesInvestigatedLocally());

public void TaintIssueInvestigatedRemotely() => telemetryHelper.Notify(telemetryService => telemetryService.TaintVulnerabilitiesInvestigatedRemotely());
Expand All @@ -77,29 +70,19 @@ private void OnCSharpProjectContextChanged(object sender, UIContextChangedEventA
{
if (e.Activated)
{
LanguageAnalyzed(SonarLanguageKeys.CSharp, TimeSpan.Zero);
LanguageAnalyzed(TimeSpan.Zero, Language.CS);
}
}

private void OnVBProjectContextChanged(object sender, UIContextChangedEventArgs e)
{
if (e.Activated)
{
LanguageAnalyzed(SonarLanguageKeys.VBNet, TimeSpan.Zero);
LanguageAnalyzed(TimeSpan.Zero, Language.VBNET);
}
}

private static Language Convert(string languageKey) =>
languageKey switch
{
SonarLanguageKeys.CPlusPlus => Language.CPP,
SonarLanguageKeys.C => Language.C,
SonarLanguageKeys.Css => Language.CSS,
SonarLanguageKeys.JavaScript => Language.JS,
SonarLanguageKeys.TypeScript => Language.TS,
SonarLanguageKeys.VBNet => Language.VBNET,
SonarLanguageKeys.CSharp => Language.CS,
SonarLanguageKeys.Secrets => Language.SECRETS,
_ => throw new ArgumentOutOfRangeException(nameof(languageKey), languageKey, null)
};
private void LanguageAnalyzed(TimeSpan analysisTime, Language language) =>
telemetryHelper.Notify(telemetryService =>
telemetryService.AnalysisDoneOnSingleLanguage(new AnalysisDoneOnSingleLanguageParams(language, (int)Math.Round(analysisTime.TotalMilliseconds))));
}

0 comments on commit 79c0043

Please sign in to comment.