提交 38e4eda4 编写于 作者: M Manish Vasani

Add "Run Code Analysis" command support for Solution explorer "Analyzer and...

Add "Run Code Analysis" command support for Solution explorer "Analyzer and Code Cleanup" project context menu
上级 dc2fb63d
......@@ -372,6 +372,10 @@
</Strings>
</Button>
<!-- Run code analysis commands -->
<!-- "Run Code Analysis on <%ProjectName%>" command for Top level "Build" and "Analyze" menus.
"ECMD_RUNFXCOPSEL" is actually defined in stdidcmd.h, we're just referencing it here -->
<Button guid="guidVSStd2K" id="ECMD_RUNFXCOPSEL" priority="0x0000" type="Button">
<CommandFlag>TextChanges</CommandFlag>
<CommandFlag>DynamicVisibility</CommandFlag>
......@@ -381,6 +385,19 @@
<ButtonText>Run Code &amp;Analysis on Selection</ButtonText>
</Strings>
</Button>
<!-- "Run Code Analysis" command for Solution Explorer "Analyze and Code Cleanup" context menu for project node -->
<Button guid="guidRoslynGrpId" id="cmdidRunCodeAnalysisForProject" priority="0x0000" type="Button">
<Parent guid="guidSHLMainMenu" id="IDG_VS_CTXT_PROJECT_ANALYZE_GENERAL"/>
<CommandFlag>DynamicVisibility</CommandFlag>
<CommandFlag>DefaultInvisible</CommandFlag>
<Strings>
<ButtonText>Run C&amp;ode Analysis</ButtonText>
<CanonicalName>RunCodeAnalysisForProject</CanonicalName>
<LocCanonicalName>RunCodeAnalysisForProject</LocCanonicalName>
<CommandName>RunCodeAnalysisForProject</CommandName>
</Strings>
</Button>
</Buttons>
<Menus>
......@@ -559,6 +576,8 @@
<IDSymbol name="grpErrorListDiagnosticSeverityItems" value="0x012a" />
<IDSymbol name="cmdidGoToImplementation" value="0x0200" />
<IDSymbol name="cmdidRunCodeAnalysisForProject" value="0x0201" />
</GuidSymbol>
<GuidSymbol name="guidCSharpInteractiveCommandSet" value="{1492db0a-85a2-4e43-bf0d-ce55b89a8cc6}">
......
......@@ -44,10 +44,7 @@ public static class RoslynCommands
public const int GoToImplementation = 0x0200;
// Run Code Analysis commands.
// The IDs are actually defined in stdidcmd.h, we're just referencing it here.
public const int ECMD_RUNFXCOPSEL = 1647;
public const int ECMD_RUNFXCOPPROJCTX = 1648;
public const int RunCodeAnalysisForProject = 0x0201;
}
}
}
......@@ -26,6 +26,10 @@ namespace Microsoft.VisualStudio.LanguageServices.Implementation.Diagnostics
[Export(typeof(IVisualStudioDiagnosticAnalyzerService))]
internal partial class VisualStudioDiagnosticAnalyzerService : IVisualStudioDiagnosticAnalyzerService
{
// "Run Code Analysis on <%ProjectName%>" command for Top level "Build" and "Analyze" menus.
// The below ID is actually defined as "ECMD_RUNFXCOPSEL" in stdidcmd.h, we're just referencing it here.
private const int RunCodeAnalysisForSelectedProjectCommandId = 1647;
private readonly VisualStudioWorkspace _workspace;
private readonly IDiagnosticAnalyzerService _diagnosticService;
private readonly IThreadingContext _threadingContext;
......@@ -54,7 +58,8 @@ public void Initialize(IServiceProvider serviceProvider)
var menuCommandService = (IMenuCommandService)_serviceProvider.GetService(typeof(IMenuCommandService));
if (menuCommandService != null)
{
AddCommand(menuCommandService, ID.RoslynCommands.ECMD_RUNFXCOPSEL, OnRunCodeAnalysisForSelectedProject, OnRunCodeAnalysisForSelectedProjectStatus);
AddCommand(menuCommandService, RunCodeAnalysisForSelectedProjectCommandId, VSConstants.VSStd2K, OnRunCodeAnalysisForSelectedProject, OnRunCodeAnalysisForSelectedProjectStatus);
AddCommand(menuCommandService, ID.RoslynCommands.RunCodeAnalysisForProject, Guids.RoslynGroupId, OnRunCodeAnalysisForSelectedProject, OnRunCodeAnalysisForSelectedProjectStatus);
}
return;
......@@ -63,10 +68,11 @@ public void Initialize(IServiceProvider serviceProvider)
static OleMenuCommand AddCommand(
IMenuCommandService menuCommandService,
int commandId,
Guid commandGroup,
EventHandler invokeHandler,
EventHandler beforeQueryStatus)
{
var commandIdWithGroupId = new CommandID(VSConstants.VSStd2K, commandId);
var commandIdWithGroupId = new CommandID(commandGroup, commandId);
var command = new OleMenuCommand(invokeHandler, delegate { }, beforeQueryStatus, commandIdWithGroupId);
menuCommandService.AddCommand(command);
return command;
......@@ -136,7 +142,8 @@ private void OnRunCodeAnalysisForSelectedProjectStatus(object sender, EventArgs
if (visible)
{
if (hierarchy.TryGetProject(out var project))
if (command.CommandID.ID == RunCodeAnalysisForSelectedProjectCommandId &&
hierarchy.TryGetProject(out var project))
{
// Change to show the name of the project as part of the menu item display text.
command.Text = string.Format(ServicesVSResources.Run_Code_Analysis_on_0, project.Name);
......
......@@ -212,6 +212,21 @@
<target state="translated">OpenActiveRuleSet</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|ButtonText">
<source>Run C&amp;ode Analysis</source>
<target state="new">Run C&amp;ode Analysis</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|CommandName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|LocCanonicalName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidSetSeverityDefault|ButtonText">
<source>&amp;Default</source>
<target state="translated">&amp;Výchozí</target>
......
......@@ -212,6 +212,21 @@
<target state="translated">OpenActiveRuleSet</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|ButtonText">
<source>Run C&amp;ode Analysis</source>
<target state="new">Run C&amp;ode Analysis</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|CommandName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|LocCanonicalName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidSetSeverityDefault|ButtonText">
<source>&amp;Default</source>
<target state="translated">&amp;Standard</target>
......
......@@ -212,6 +212,21 @@
<target state="translated">OpenActiveRuleSet</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|ButtonText">
<source>Run C&amp;ode Analysis</source>
<target state="new">Run C&amp;ode Analysis</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|CommandName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|LocCanonicalName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidSetSeverityDefault|ButtonText">
<source>&amp;Default</source>
<target state="translated">Pre&amp;determinado</target>
......
......@@ -212,6 +212,21 @@
<target state="translated">OpenActiveRuleSet</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|ButtonText">
<source>Run C&amp;ode Analysis</source>
<target state="new">Run C&amp;ode Analysis</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|CommandName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|LocCanonicalName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidSetSeverityDefault|ButtonText">
<source>&amp;Default</source>
<target state="translated">Par &amp;défaut</target>
......
......@@ -212,6 +212,21 @@
<target state="translated">OpenActiveRuleSet</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|ButtonText">
<source>Run C&amp;ode Analysis</source>
<target state="new">Run C&amp;ode Analysis</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|CommandName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|LocCanonicalName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidSetSeverityDefault|ButtonText">
<source>&amp;Default</source>
<target state="translated">Pre&amp;definito</target>
......
......@@ -212,6 +212,21 @@
<target state="translated">OpenActiveRuleSet</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|ButtonText">
<source>Run C&amp;ode Analysis</source>
<target state="new">Run C&amp;ode Analysis</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|CommandName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|LocCanonicalName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidSetSeverityDefault|ButtonText">
<source>&amp;Default</source>
<target state="translated">既定(&amp;D)</target>
......
......@@ -212,6 +212,21 @@
<target state="translated">OpenActiveRuleSet</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|ButtonText">
<source>Run C&amp;ode Analysis</source>
<target state="new">Run C&amp;ode Analysis</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|CommandName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|LocCanonicalName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidSetSeverityDefault|ButtonText">
<source>&amp;Default</source>
<target state="translated">기본값(&amp;D)</target>
......
......@@ -212,6 +212,21 @@
<target state="translated">OpenActiveRuleSet</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|ButtonText">
<source>Run C&amp;ode Analysis</source>
<target state="new">Run C&amp;ode Analysis</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|CommandName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|LocCanonicalName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidSetSeverityDefault|ButtonText">
<source>&amp;Default</source>
<target state="translated">&amp;Domyślny</target>
......
......@@ -212,6 +212,21 @@
<target state="translated">OpenActiveRuleSet</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|ButtonText">
<source>Run C&amp;ode Analysis</source>
<target state="new">Run C&amp;ode Analysis</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|CommandName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|LocCanonicalName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidSetSeverityDefault|ButtonText">
<source>&amp;Default</source>
<target state="translated">&amp;Padrão</target>
......
......@@ -212,6 +212,21 @@
<target state="translated">OpenActiveRuleSet</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|ButtonText">
<source>Run C&amp;ode Analysis</source>
<target state="new">Run C&amp;ode Analysis</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|CommandName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|LocCanonicalName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidSetSeverityDefault|ButtonText">
<source>&amp;Default</source>
<target state="translated">&amp;По умолчанию</target>
......
......@@ -212,6 +212,21 @@
<target state="translated">OpenActiveRuleSet</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|ButtonText">
<source>Run C&amp;ode Analysis</source>
<target state="new">Run C&amp;ode Analysis</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|CommandName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|LocCanonicalName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidSetSeverityDefault|ButtonText">
<source>&amp;Default</source>
<target state="translated">&amp;Varsayılan</target>
......
......@@ -212,6 +212,21 @@
<target state="translated">OpenActiveRuleSet</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|ButtonText">
<source>Run C&amp;ode Analysis</source>
<target state="new">Run C&amp;ode Analysis</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|CommandName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|LocCanonicalName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidSetSeverityDefault|ButtonText">
<source>&amp;Default</source>
<target state="translated">默认值(&amp;D)</target>
......
......@@ -212,6 +212,21 @@
<target state="translated">OpenActiveRuleSet</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|ButtonText">
<source>Run C&amp;ode Analysis</source>
<target state="new">Run C&amp;ode Analysis</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|CommandName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidRunCodeAnalysisForProject|LocCanonicalName">
<source>RunCodeAnalysisForProject</source>
<target state="new">RunCodeAnalysisForProject</target>
<note />
</trans-unit>
<trans-unit id="cmdidSetSeverityDefault|ButtonText">
<source>&amp;Default</source>
<target state="translated">預設(&amp;D)</target>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册