Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
68cfbed6
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
68cfbed6
编写于
6月 02, 2015
作者:
T
Tom Meschter
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Extract code to modify rule sets
Extract the code to modify rule sets to a helper type.
上级
e0c54290
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
111 addition
and
94 deletion
+111
-94
src/VisualStudio/Core/SolutionExplorerShim/DiagnosticItem/DiagnosticItem.cs
...ore/SolutionExplorerShim/DiagnosticItem/DiagnosticItem.cs
+1
-94
src/VisualStudio/Core/SolutionExplorerShim/RuleSetDocumentExtensions.cs
...io/Core/SolutionExplorerShim/RuleSetDocumentExtensions.cs
+109
-0
src/VisualStudio/Core/SolutionExplorerShim/SolutionExplorerShim.csproj
...dio/Core/SolutionExplorerShim/SolutionExplorerShim.csproj
+1
-0
未找到文件。
src/VisualStudio/Core/SolutionExplorerShim/DiagnosticItem/DiagnosticItem.cs
浏览文件 @
68cfbed6
...
...
@@ -148,102 +148,9 @@ private void UpdateRuleSetFile(string pathToRuleSet, ReportDiagnostic value)
{
var
ruleSetDocument
=
XDocument
.
Load
(
pathToRuleSet
);
var
newAction
=
ConvertReportDiagnosticToAction
(
value
);
var
analyzerID
=
_analyzerItem
.
AnalyzerReference
.
Display
;
var
rules
=
FindOrCreateRulesElement
(
ruleSetDocument
,
analyzerID
);
var
rule
=
FindOrCreateRuleElement
(
rules
,
_descriptor
.
Id
);
if
(
value
==
ReportDiagnostic
.
Default
)
{
// If the new severity is 'Default' we just delete the entry for the rule from the ruleset file.
// In the absence of an explicit entry in the ruleset file, the rule reverts back to its 'Default'
// severity (so far as the 'current' ruleset file is concerened - the rule's effective severity
// could still be decided by other factors such as project settings or a base ruleset file).
rule
.
Remove
();
}
else
{
rule
.
Attribute
(
"Action"
).
Value
=
newAction
;
}
var
allMatchingRules
=
ruleSetDocument
.
Root
.
Descendants
(
"Rule"
)
.
Where
(
r
=>
r
.
Attribute
(
"Id"
).
Value
.
Equals
(
_descriptor
.
Id
))
.
ToList
();
foreach
(
var
matchingRule
in
allMatchingRules
)
{
if
(
value
==
ReportDiagnostic
.
Default
)
{
// If the new severity is 'Default' we just delete the entry for the rule from the ruleset file.
// In the absence of an explicit entry in the ruleset file, the rule reverts back to its 'Default'
// severity (so far as the 'current' ruleset file is concerened - the rule's effective severity
// could still be decided by other factors such as project settings or a base ruleset file).
matchingRule
.
Remove
();
}
else
{
matchingRule
.
Attribute
(
"Action"
).
Value
=
newAction
;
}
}
ruleSetDocument
.
SetSeverity
(
_analyzerItem
.
AnalyzerReference
.
Display
,
_descriptor
.
Id
,
value
);
ruleSetDocument
.
Save
(
pathToRuleSet
);
}
private
XElement
FindOrCreateRuleElement
(
XElement
rules
,
string
id
)
{
var
ruleElement
=
rules
.
Elements
(
"Rule"
)
.
FirstOrDefault
(
r
=>
r
.
Attribute
(
"Id"
).
Value
.
Equals
(
id
));
if
(
ruleElement
==
null
)
{
ruleElement
=
new
XElement
(
"Rule"
,
new
XAttribute
(
"Id"
,
id
),
new
XAttribute
(
"Action"
,
"Warning"
));
rules
.
Add
(
ruleElement
);
}
return
ruleElement
;
}
private
XElement
FindOrCreateRulesElement
(
XDocument
ruleSetDocument
,
string
analyzerID
)
{
var
rulesElement
=
ruleSetDocument
.
Root
.
Elements
(
"Rules"
)
.
FirstOrDefault
(
r
=>
r
.
Attribute
(
"AnalyzerId"
).
Value
.
Equals
(
analyzerID
));
if
(
rulesElement
==
null
)
{
rulesElement
=
new
XElement
(
"Rules"
,
new
XAttribute
(
"AnalyzerId"
,
analyzerID
),
new
XAttribute
(
"RuleNamespace"
,
analyzerID
));
ruleSetDocument
.
Root
.
Add
(
rulesElement
);
}
return
rulesElement
;
}
private
static
string
ConvertReportDiagnosticToAction
(
ReportDiagnostic
value
)
{
switch
(
value
)
{
case
ReportDiagnostic
.
Default
:
return
"Default"
;
case
ReportDiagnostic
.
Error
:
return
"Error"
;
case
ReportDiagnostic
.
Warn
:
return
"Warning"
;
case
ReportDiagnostic
.
Info
:
return
"Info"
;
case
ReportDiagnostic
.
Hidden
:
return
"Hidden"
;
case
ReportDiagnostic
.
Suppress
:
return
"None"
;
default
:
throw
ExceptionUtilities
.
Unreachable
;
}
}
}
}
src/VisualStudio/Core/SolutionExplorerShim/RuleSetDocumentExtensions.cs
0 → 100644
浏览文件 @
68cfbed6
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using
System.Linq
;
using
System.Xml.Linq
;
using
Microsoft.CodeAnalysis
;
using
Roslyn.Utilities
;
namespace
Microsoft.VisualStudio.LanguageServices.Implementation.SolutionExplorer
{
internal
static
class
RuleSetDocumentExtensions
{
internal
static
void
SetSeverity
(
this
XDocument
ruleSet
,
string
analyzerId
,
string
ruleId
,
ReportDiagnostic
value
)
{
var
newAction
=
ConvertReportDiagnosticToAction
(
value
);
var
rules
=
FindOrCreateRulesElement
(
ruleSet
,
analyzerId
);
var
rule
=
FindOrCreateRuleElement
(
rules
,
ruleId
);
if
(
value
==
ReportDiagnostic
.
Default
)
{
// If the new severity is 'Default' we just delete the entry for the rule from the ruleset file.
// In the absence of an explicit entry in the ruleset file, the rule reverts back to its 'Default'
// severity (so far as the 'current' ruleset file is concerened - the rule's effective severity
// could still be decided by other factors such as project settings or a base ruleset file).
rule
.
Remove
();
}
else
{
rule
.
Attribute
(
"Action"
).
Value
=
newAction
;
}
var
allMatchingRules
=
ruleSet
.
Root
.
Descendants
(
"Rule"
)
.
Where
(
r
=>
r
.
Attribute
(
"Id"
).
Value
.
Equals
(
ruleId
))
.
ToList
();
foreach
(
var
matchingRule
in
allMatchingRules
)
{
if
(
value
==
ReportDiagnostic
.
Default
)
{
// If the new severity is 'Default' we just delete the entry for the rule from the ruleset file.
// In the absence of an explicit entry in the ruleset file, the rule reverts back to its 'Default'
// severity (so far as the 'current' ruleset file is concerened - the rule's effective severity
// could still be decided by other factors such as project settings or a base ruleset file).
matchingRule
.
Remove
();
}
else
{
matchingRule
.
Attribute
(
"Action"
).
Value
=
newAction
;
}
}
}
private
static
string
ConvertReportDiagnosticToAction
(
ReportDiagnostic
value
)
{
switch
(
value
)
{
case
ReportDiagnostic
.
Default
:
return
"Default"
;
case
ReportDiagnostic
.
Error
:
return
"Error"
;
case
ReportDiagnostic
.
Warn
:
return
"Warning"
;
case
ReportDiagnostic
.
Info
:
return
"Info"
;
case
ReportDiagnostic
.
Hidden
:
return
"Hidden"
;
case
ReportDiagnostic
.
Suppress
:
return
"None"
;
default
:
throw
ExceptionUtilities
.
Unreachable
;
}
}
private
static
XElement
FindOrCreateRuleElement
(
XElement
rules
,
string
id
)
{
var
ruleElement
=
rules
.
Elements
(
"Rule"
)
.
FirstOrDefault
(
r
=>
r
.
Attribute
(
"Id"
).
Value
.
Equals
(
id
));
if
(
ruleElement
==
null
)
{
ruleElement
=
new
XElement
(
"Rule"
,
new
XAttribute
(
"Id"
,
id
),
new
XAttribute
(
"Action"
,
"Warning"
));
rules
.
Add
(
ruleElement
);
}
return
ruleElement
;
}
private
static
XElement
FindOrCreateRulesElement
(
XDocument
ruleSetDocument
,
string
analyzerID
)
{
var
rulesElement
=
ruleSetDocument
.
Root
.
Elements
(
"Rules"
)
.
FirstOrDefault
(
r
=>
r
.
Attribute
(
"AnalyzerId"
).
Value
.
Equals
(
analyzerID
));
if
(
rulesElement
==
null
)
{
rulesElement
=
new
XElement
(
"Rules"
,
new
XAttribute
(
"AnalyzerId"
,
analyzerID
),
new
XAttribute
(
"RuleNamespace"
,
analyzerID
));
ruleSetDocument
.
Root
.
Add
(
rulesElement
);
}
return
rulesElement
;
}
}
}
src/VisualStudio/Core/SolutionExplorerShim/SolutionExplorerShim.csproj
浏览文件 @
68cfbed6
...
...
@@ -148,6 +148,7 @@
<Compile
Include=
"LocalizableProperties.cs"
/>
<Compile
Include=
"DiagnosticItem\DiagnosticItemSource.cs"
/>
<Compile
Include=
"DiagnosticItem\DiagnosticItem.cs"
/>
<Compile
Include=
"RuleSetDocumentExtensions.cs"
/>
<Compile
Include=
"SolutionExplorerShim.Designer.cs"
>
<AutoGen>
True
</AutoGen>
<DesignTime>
True
</DesignTime>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录