提交 bc56c531 编写于 作者: K KristianJakubik

Add feature resources for analyzer

上级 fbd0d4ad
......@@ -167,5 +167,38 @@ public void Test()
}",
expected: Diagnostic(IDEDiagnosticIds.MakeStructFieldsWritable));
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMakeStructFieldsWritable)]
public async Task SingleReadonlyField_InClass()
{
await TestDiagnosticMissingAsync(
@"class MyClass
{
public readonly int Value;
public MyClass(int value)
{
Value = value;
}
public void Test()
{
[|this = new MyClass(5)|];
}
}");
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMakeStructFieldsWritable)]
public async Task StructWithoutField()
{
await TestDiagnosticMissingAsync(
@"struct MyStruct
{
public void Test()
{
[|this = new MyStruct()|];
}
}");
}
}
}
......@@ -51,10 +51,11 @@ public override Task RegisterCodeFixesAsync(CodeFixContext context)
{
var readonlySyntaxToken = fieldDeclaration.ChildTokens()
.FirstOrDefault(token => token.IsKind(SyntaxKind.ReadOnlyKeyword));
if (readonlySyntaxToken != default)
{
var newFieldDeclaration = fieldDeclaration.ReplaceToken(readonlySyntaxToken, emptyToken);
editor.ReplaceNode(fieldDeclaration, newFieldDeclaration);
var fieldWithoutReadonly = fieldDeclaration.ReplaceToken(readonlySyntaxToken, emptyToken);
editor.ReplaceNode(fieldDeclaration, fieldWithoutReadonly);
}
}
}
......@@ -63,7 +64,7 @@ public override Task RegisterCodeFixesAsync(CodeFixContext context)
private class MyCodeAction : CodeAction.DocumentChangeAction
{
public MyCodeAction(Func<CancellationToken, Task<Document>> createChangedDocument) :
base(FeaturesResources.Make_field_readonly, createChangedDocument)
base(FeaturesResources.Make_readonly_fields_writable, createChangedDocument)
{
}
}
......
......@@ -10,8 +10,8 @@ internal sealed class CSharpMakeStructFieldsWritableDiagnosticAnalyzer : Abstrac
{
private static readonly DiagnosticDescriptor s_diagnosticDescriptor = CreateDescriptor(
IDEDiagnosticIds.MakeStructFieldsWritable,
new LocalizableResourceString("test", FeaturesResources.ResourceManager, typeof(FeaturesResources)),
new LocalizableResourceString("test", FeaturesResources.ResourceManager, typeof(FeaturesResources)),
new LocalizableResourceString(nameof(FeaturesResources.Make_readonly_fields_writable), FeaturesResources.ResourceManager, typeof(FeaturesResources)),
new LocalizableResourceString(nameof(FeaturesResources.Make_readonly_fields_writable), FeaturesResources.ResourceManager, typeof(FeaturesResources)),
isUnneccessary: true);
public CSharpMakeStructFieldsWritableDiagnosticAnalyzer()
......@@ -48,6 +48,7 @@ private void RegisterActions(CompilationStartAnalysisContext context)
{
context.RegisterSymbolStartAction(symbolStartContext =>
{
// We are only interested in struct declarations
var namedTypeSymbol = (INamedTypeSymbol)symbolStartContext.Symbol;
if (namedTypeSymbol.TypeKind != TypeKind.Struct) return;
......
......@@ -10,7 +10,6 @@
namespace Microsoft.CodeAnalysis {
using System;
using System.Reflection;
/// <summary>
......@@ -40,7 +39,7 @@ internal class FeaturesResources {
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.CodeAnalysis.FeaturesResources", typeof(FeaturesResources).GetTypeInfo().Assembly);
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.CodeAnalysis.FeaturesResources", typeof(FeaturesResources).Assembly);
resourceMan = temp;
}
return resourceMan;
......@@ -2242,6 +2241,15 @@ internal class FeaturesResources {
}
}
/// <summary>
/// Looks up a localized string similar to Make readonly fields writable.
/// </summary>
internal static string Make_readonly_fields_writable {
get {
return ResourceManager.GetString("Make_readonly_fields_writable", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Member name can be simplified.
/// </summary>
......
......@@ -1481,4 +1481,7 @@ This version used in: {2}</value>
<data name="_0_can_be_simplified" xml:space="preserve">
<value>{0} can be simplified</value>
</data>
<data name="Make_readonly_fields_writable" xml:space="preserve">
<value>Make readonly fields writable</value>
</data>
</root>
\ No newline at end of file
......@@ -112,6 +112,11 @@
<target state="new">Introduce query variable</target>
<note />
</trans-unit>
<trans-unit id="Make_readonly_fields_writable">
<source>Make readonly fields writable</source>
<target state="new">Make readonly fields writable</target>
<note />
</trans-unit>
<trans-unit id="Private_member_0_can_be_removed_as_the_value_assigned_to_it_is_never_read">
<source>Private member '{0}' can be removed as the value assigned to it is never read.</source>
<target state="new">Private member '{0}' can be removed as the value assigned to it is never read.</target>
......
......@@ -112,6 +112,11 @@
<target state="new">Introduce query variable</target>
<note />
</trans-unit>
<trans-unit id="Make_readonly_fields_writable">
<source>Make readonly fields writable</source>
<target state="new">Make readonly fields writable</target>
<note />
</trans-unit>
<trans-unit id="Private_member_0_can_be_removed_as_the_value_assigned_to_it_is_never_read">
<source>Private member '{0}' can be removed as the value assigned to it is never read.</source>
<target state="new">Private member '{0}' can be removed as the value assigned to it is never read.</target>
......
......@@ -112,6 +112,11 @@
<target state="new">Introduce query variable</target>
<note />
</trans-unit>
<trans-unit id="Make_readonly_fields_writable">
<source>Make readonly fields writable</source>
<target state="new">Make readonly fields writable</target>
<note />
</trans-unit>
<trans-unit id="Private_member_0_can_be_removed_as_the_value_assigned_to_it_is_never_read">
<source>Private member '{0}' can be removed as the value assigned to it is never read.</source>
<target state="new">Private member '{0}' can be removed as the value assigned to it is never read.</target>
......
......@@ -112,6 +112,11 @@
<target state="new">Introduce query variable</target>
<note />
</trans-unit>
<trans-unit id="Make_readonly_fields_writable">
<source>Make readonly fields writable</source>
<target state="new">Make readonly fields writable</target>
<note />
</trans-unit>
<trans-unit id="Private_member_0_can_be_removed_as_the_value_assigned_to_it_is_never_read">
<source>Private member '{0}' can be removed as the value assigned to it is never read.</source>
<target state="new">Private member '{0}' can be removed as the value assigned to it is never read.</target>
......
......@@ -112,6 +112,11 @@
<target state="new">Introduce query variable</target>
<note />
</trans-unit>
<trans-unit id="Make_readonly_fields_writable">
<source>Make readonly fields writable</source>
<target state="new">Make readonly fields writable</target>
<note />
</trans-unit>
<trans-unit id="Private_member_0_can_be_removed_as_the_value_assigned_to_it_is_never_read">
<source>Private member '{0}' can be removed as the value assigned to it is never read.</source>
<target state="new">Private member '{0}' can be removed as the value assigned to it is never read.</target>
......
......@@ -112,6 +112,11 @@
<target state="new">Introduce query variable</target>
<note />
</trans-unit>
<trans-unit id="Make_readonly_fields_writable">
<source>Make readonly fields writable</source>
<target state="new">Make readonly fields writable</target>
<note />
</trans-unit>
<trans-unit id="Private_member_0_can_be_removed_as_the_value_assigned_to_it_is_never_read">
<source>Private member '{0}' can be removed as the value assigned to it is never read.</source>
<target state="new">Private member '{0}' can be removed as the value assigned to it is never read.</target>
......
......@@ -112,6 +112,11 @@
<target state="new">Introduce query variable</target>
<note />
</trans-unit>
<trans-unit id="Make_readonly_fields_writable">
<source>Make readonly fields writable</source>
<target state="new">Make readonly fields writable</target>
<note />
</trans-unit>
<trans-unit id="Private_member_0_can_be_removed_as_the_value_assigned_to_it_is_never_read">
<source>Private member '{0}' can be removed as the value assigned to it is never read.</source>
<target state="new">Private member '{0}' can be removed as the value assigned to it is never read.</target>
......
......@@ -112,6 +112,11 @@
<target state="new">Introduce query variable</target>
<note />
</trans-unit>
<trans-unit id="Make_readonly_fields_writable">
<source>Make readonly fields writable</source>
<target state="new">Make readonly fields writable</target>
<note />
</trans-unit>
<trans-unit id="Private_member_0_can_be_removed_as_the_value_assigned_to_it_is_never_read">
<source>Private member '{0}' can be removed as the value assigned to it is never read.</source>
<target state="new">Private member '{0}' can be removed as the value assigned to it is never read.</target>
......
......@@ -112,6 +112,11 @@
<target state="new">Introduce query variable</target>
<note />
</trans-unit>
<trans-unit id="Make_readonly_fields_writable">
<source>Make readonly fields writable</source>
<target state="new">Make readonly fields writable</target>
<note />
</trans-unit>
<trans-unit id="Private_member_0_can_be_removed_as_the_value_assigned_to_it_is_never_read">
<source>Private member '{0}' can be removed as the value assigned to it is never read.</source>
<target state="new">Private member '{0}' can be removed as the value assigned to it is never read.</target>
......
......@@ -112,6 +112,11 @@
<target state="new">Introduce query variable</target>
<note />
</trans-unit>
<trans-unit id="Make_readonly_fields_writable">
<source>Make readonly fields writable</source>
<target state="new">Make readonly fields writable</target>
<note />
</trans-unit>
<trans-unit id="Private_member_0_can_be_removed_as_the_value_assigned_to_it_is_never_read">
<source>Private member '{0}' can be removed as the value assigned to it is never read.</source>
<target state="new">Private member '{0}' can be removed as the value assigned to it is never read.</target>
......
......@@ -112,6 +112,11 @@
<target state="new">Introduce query variable</target>
<note />
</trans-unit>
<trans-unit id="Make_readonly_fields_writable">
<source>Make readonly fields writable</source>
<target state="new">Make readonly fields writable</target>
<note />
</trans-unit>
<trans-unit id="Private_member_0_can_be_removed_as_the_value_assigned_to_it_is_never_read">
<source>Private member '{0}' can be removed as the value assigned to it is never read.</source>
<target state="new">Private member '{0}' can be removed as the value assigned to it is never read.</target>
......
......@@ -112,6 +112,11 @@
<target state="new">Introduce query variable</target>
<note />
</trans-unit>
<trans-unit id="Make_readonly_fields_writable">
<source>Make readonly fields writable</source>
<target state="new">Make readonly fields writable</target>
<note />
</trans-unit>
<trans-unit id="Private_member_0_can_be_removed_as_the_value_assigned_to_it_is_never_read">
<source>Private member '{0}' can be removed as the value assigned to it is never read.</source>
<target state="new">Private member '{0}' can be removed as the value assigned to it is never read.</target>
......
......@@ -112,6 +112,11 @@
<target state="new">Introduce query variable</target>
<note />
</trans-unit>
<trans-unit id="Make_readonly_fields_writable">
<source>Make readonly fields writable</source>
<target state="new">Make readonly fields writable</target>
<note />
</trans-unit>
<trans-unit id="Private_member_0_can_be_removed_as_the_value_assigned_to_it_is_never_read">
<source>Private member '{0}' can be removed as the value assigned to it is never read.</source>
<target state="new">Private member '{0}' can be removed as the value assigned to it is never read.</target>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册