提交 47e518ca 编写于 作者: C Cyrus Najmabadi

Merge remote-tracking branch 'upstream/master' into designerOOP

......@@ -38,9 +38,11 @@
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnnecessaryImports\CSharpRemoveUnnecessaryImportsDiagnosticAnalyzer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedMembers\CSharpRemoveUnusedMembersDiagnosticAnalyzer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedParametersAndValues\CSharpRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseCollectionInitializer\CSharpUseCollectionInitializerDiagnosticAnalyzer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseImplicitOrExplicitType\CSharpTypeStyleDiagnosticAnalyzerBase.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseImplicitOrExplicitType\CSharpUseExplicitTypeDiagnosticAnalyzer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseImplicitOrExplicitType\CSharpUseImplicitTypeDiagnosticAnalyzer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseObjectInitializer\CSharpUseObjectInitializerDiagnosticAnalyzer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseThrowExpression\CSharpUseThrowExpressionDiagnosticAnalyzer.cs" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -24,8 +24,11 @@
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnnecessaryImports\CSharpRemoveUnnecessaryImportsCodeFixProvider.cs" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedMembers\CSharpRemoveUnusedMembersCodeFixProvider.cs" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedParametersAndValues\CSharpRemoveUnusedValuesCodeFixProvider.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseCollectionInitializer\CSharpUseCollectionInitializerCodeFixProvider.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseExpressionBody\UseExpressionBodyCodeFixProvider.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseImplicitOrExplicitType\UseExplicitTypeCodeFixProvider.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseImplicitOrExplicitType\UseImplicitTypeCodeFixProvider.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseObjectInitializer\CSharpUseObjectInitializerCodeFixProvider.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseObjectInitializer\UseInitializerHelpers.cs" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -38,10 +38,12 @@
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedParametersAndValues\RemoveUnusedValueAssignmentTests.cs" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedParametersAndValues\RemoveUnusedValueExpressionStatementTests.cs" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedParametersAndValues\RemoveUnusedValuesTestsBase.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseCollectionInitializer\UseCollectionInitializerTests.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseImplicitOrExplicitType\UseExplicitTypeTests.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseImplicitOrExplicitType\UseExplicitTypeTests_FixAllTests.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseImplicitOrExplicitType\UseImplicitTypeTests.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseImplicitOrExplicitType\UseImplicitTypeTests_FixAllTests.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseObjectInitializer\UseObjectInitializerTests.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseThrowExpression\UseThrowExpressionTests.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseThrowExpression\UseThrowExpressionTests_FixAllTests.cs" />
</ItemGroup>
......
......@@ -1460,5 +1460,85 @@ public async Task ParameterWithoutName_NoDiagnostic()
}
}");
}
[WorkItem(41236, "https://github.com/dotnet/roslyn/issues/41236")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsRemoveUnusedParameters)]
public async Task NotImplementedException_NoDiagnostic1()
{
await TestDiagnosticMissingAsync(
@"using System;
class C
{
private void Goo(int [|i|])
{
throw new NotImplementedException();
}
}");
}
[WorkItem(41236, "https://github.com/dotnet/roslyn/issues/41236")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsRemoveUnusedParameters)]
public async Task NotImplementedException_NoDiagnostic2()
{
await TestDiagnosticMissingAsync(
@"using System;
class C
{
private void Goo(int [|i|])
=> throw new NotImplementedException();
}");
}
[WorkItem(41236, "https://github.com/dotnet/roslyn/issues/41236")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsRemoveUnusedParameters)]
public async Task NotImplementedException_NoDiagnostic3()
{
await TestDiagnosticMissingAsync(
@"using System;
class C
{
public C(int [|i|])
=> throw new NotImplementedException();
}");
}
[WorkItem(41236, "https://github.com/dotnet/roslyn/issues/41236")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsRemoveUnusedParameters)]
public async Task NotImplementedException_MultipleStatements1()
{
await TestDiagnosticsAsync(
@"using System;
class C
{
private void Goo(int [|i|])
{
throw new NotImplementedException();
return;
}
}",
Diagnostic(IDEDiagnosticIds.UnusedParameterDiagnosticId));
}
[WorkItem(41236, "https://github.com/dotnet/roslyn/issues/41236")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsRemoveUnusedParameters)]
public async Task NotImplementedException_MultipleStatements2()
{
await TestDiagnosticsAsync(
@"using System;
class C
{
private void Goo(int [|i|])
{
if (true)
throw new NotImplementedException();
}
}",
Diagnostic(IDEDiagnosticIds.UnusedParameterDiagnosticId));
}
}
}
......@@ -38,6 +38,11 @@
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedParametersAndValues\AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedParametersAndValues\AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedParametersAndValues\AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseCollectionInitializer\AbstractObjectCreationExpressionAnalyzer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseCollectionInitializer\AbstractUseCollectionInitializerDiagnosticAnalyzer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseCollectionInitializer\ObjectCreationExpressionAnalyzer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseObjectInitializer\AbstractUseObjectInitializerDiagnosticAnalyzer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseObjectInitializer\ObjectCreationExpressionAnalyzer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseThrowExpression\AbstractUseThrowExpressionDiagnosticAnalyzer.cs" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -165,6 +165,18 @@
<data name="Null_check_can_be_simplified" xml:space="preserve">
<value>Null check can be simplified</value>
</data>
<data name="Simplify_collection_initialization" xml:space="preserve">
<value>Simplify collection initialization</value>
</data>
<data name="Collection_initialization_can_be_simplified" xml:space="preserve">
<value>Collection initialization can be simplified</value>
</data>
<data name="Simplify_object_initialization" xml:space="preserve">
<value>Simplify object initialization</value>
</data>
<data name="Object_initialization_can_be_simplified" xml:space="preserve">
<value>Object initialization can be simplified</value>
</data>
<data name="Naming_rule_violation_0" xml:space="preserve">
<value>Naming rule violation: {0}</value>
<comment>{0} is the rule title, {1} is the way in which the rule was violated</comment>
......
......@@ -2,16 +2,20 @@
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
#nullable enable
using System.Collections.Concurrent;
using System.Collections.Immutable;
using System.Diagnostics;
using System.Linq;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.FlowAnalysis.SymbolUsageAnalysis;
using Microsoft.CodeAnalysis.Operations;
using Microsoft.CodeAnalysis.PooledObjects;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Roslyn.Utilities;
using System.Diagnostics.CodeAnalysis;
#if CODE_STYLE
using AbstractBuiltInCodeStyleDiagnosticAnalyzer = Microsoft.CodeAnalysis.CodeStyle.AbstractBuiltInCodeStyleDiagnosticAnalyzer;
......@@ -95,6 +99,12 @@ public static void Analyze(OperationBlockStartAnalysisContext context, SymbolSta
return;
}
// Ignore methods that are just a single-throw method. These are often
// in-progress pieces of work and we don't want to force the user to fixup other
// issues before they've even gotten around to writing their code.
if (IsSingleThrowNotImplementedOperation(firstBlock))
return;
var blockAnalyzer = new BlockAnalyzer(symbolStartAnalyzer, options);
context.RegisterOperationAction(blockAnalyzer.AnalyzeExpressionStatement, OperationKind.ExpressionStatement);
context.RegisterOperationAction(blockAnalyzer.AnalyzeDelegateCreationOrAnonymousFunction, OperationKind.DelegateCreation, OperationKind.AnonymousFunction);
......@@ -131,6 +141,60 @@ bool HasConditionalDirectives()
return false;
}
static bool IsSingleThrowNotImplementedOperation(IOperation firstBlock)
{
var compilation = firstBlock.SemanticModel.Compilation;
var notImplementedExceptionType = compilation.NotImplementedExceptionType();
if (notImplementedExceptionType == null)
return false;
if (!(firstBlock is IBlockOperation block))
return false;
if (block.Operations.Length == 0)
return false;
var firstOp = block.Operations.Length == 1
? block.Operations[0]
: TryGetSingleExplicitStatement(block.Operations);
if (firstOp == null)
return false;
// unwrap: { throw new NYI(); }
if (firstOp is IExpressionStatementOperation expressionStatement)
firstOp = expressionStatement.Operation;
// => throw new NotImplementedOperation(...)
return IsThrowNotImplementedOperation(notImplementedExceptionType, firstOp);
}
static IOperation? TryGetSingleExplicitStatement(ImmutableArray<IOperation> operations)
{
IOperation? firstOp = null;
foreach (var operation in operations)
{
if (operation.IsImplicit)
continue;
if (firstOp != null)
return null;
firstOp = operation;
}
return firstOp;
}
static bool IsThrowNotImplementedOperation(INamedTypeSymbol notImplementedExceptionType, IOperation operation)
=> operation is IThrowOperation throwOperation &&
UnwrapImplicitConversion(throwOperation.Exception) is IObjectCreationOperation objectCreation &&
notImplementedExceptionType.Equals(objectCreation.Type);
static IOperation UnwrapImplicitConversion(IOperation value)
=> value is IConversionOperation conversion && conversion.IsImplicit
? conversion.Operand
: value;
}
private void AnalyzeExpressionStatement(OperationAnalysisContext context)
......@@ -552,7 +616,7 @@ private void AnalyzeOperationBlockEnd(OperationBlockAnalysisContext context)
ISymbol symbol,
IOperation unreadWriteOperation,
SymbolUsageResult resultFromFlowAnalysis,
out ImmutableDictionary<string, string> properties)
out ImmutableDictionary<string, string>? properties)
{
Debug.Assert(!(symbol is ILocalSymbol local) || !local.IsRef);
......
......@@ -12,6 +12,10 @@
using Microsoft.CodeAnalysis.Text;
using Roslyn.Utilities;
#if CODE_STYLE
using Microsoft.CodeAnalysis.Internal.Options;
#endif
namespace Microsoft.CodeAnalysis.UseCollectionInitializer
{
internal abstract partial class AbstractUseCollectionInitializerDiagnosticAnalyzer<
......@@ -39,8 +43,8 @@ public override DiagnosticAnalyzerCategory GetAnalyzerCategory()
protected AbstractUseCollectionInitializerDiagnosticAnalyzer()
: base(IDEDiagnosticIds.UseCollectionInitializerDiagnosticId,
CodeStyleOptions.PreferCollectionInitializer,
new LocalizableResourceString(nameof(FeaturesResources.Simplify_collection_initialization), FeaturesResources.ResourceManager, typeof(FeaturesResources)),
new LocalizableResourceString(nameof(FeaturesResources.Collection_initialization_can_be_simplified), FeaturesResources.ResourceManager, typeof(FeaturesResources)))
new LocalizableResourceString(nameof(AnalyzersResources.Simplify_collection_initialization), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)),
new LocalizableResourceString(nameof(AnalyzersResources.Collection_initialization_can_be_simplified), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)))
{
}
......
......@@ -6,13 +6,16 @@
using System.Collections.Immutable;
using System.Linq;
using System.Threading;
using Microsoft.CodeAnalysis.CodeStyle;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.Text;
using Roslyn.Utilities;
#if CODE_STYLE
using Microsoft.CodeAnalysis.Internal.Options;
#endif
namespace Microsoft.CodeAnalysis.UseObjectInitializer
{
internal abstract partial class AbstractUseObjectInitializerDiagnosticAnalyzer<
......@@ -37,8 +40,8 @@ internal abstract partial class AbstractUseObjectInitializerDiagnosticAnalyzer<
protected AbstractUseObjectInitializerDiagnosticAnalyzer()
: base(IDEDiagnosticIds.UseObjectInitializerDiagnosticId,
CodeStyleOptions.PreferObjectInitializer,
new LocalizableResourceString(nameof(FeaturesResources.Simplify_object_initialization), FeaturesResources.ResourceManager, typeof(FeaturesResources)),
new LocalizableResourceString(nameof(FeaturesResources.Object_initialization_can_be_simplified), FeaturesResources.ResourceManager, typeof(FeaturesResources)))
new LocalizableResourceString(nameof(AnalyzersResources.Simplify_object_initialization), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)),
new LocalizableResourceString(nameof(AnalyzersResources.Object_initialization_can_be_simplified), AnalyzersResources.ResourceManager, typeof(AnalyzersResources)))
{
}
......
......@@ -32,6 +32,11 @@
<target state="new">Expression value is never used</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="new">Collection initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Member_access_should_be_qualified">
<source>Member access should be qualified.</source>
<target state="new">Member access should be qualified.</target>
......@@ -67,6 +72,11 @@
<target state="new">Parameter '{0}' can be removed; its initial value is never used</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="new">Object initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Populate_switch">
<source>Populate switch</source>
<target state="new">Populate switch</target>
......@@ -127,6 +137,16 @@
<target state="new">Remove unused private members</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="new">Simplify collection initialization</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="new">Simplify object initialization</target>
<note />
</trans-unit>
<trans-unit id="The_file_header_does_not_match_the_required_text">
<source>The file header does not match the required text</source>
<target state="new">The file header does not match the required text</target>
......
......@@ -32,6 +32,11 @@
<target state="new">Expression value is never used</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="new">Collection initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Member_access_should_be_qualified">
<source>Member access should be qualified.</source>
<target state="new">Member access should be qualified.</target>
......@@ -67,6 +72,11 @@
<target state="new">Parameter '{0}' can be removed; its initial value is never used</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="new">Object initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Populate_switch">
<source>Populate switch</source>
<target state="new">Populate switch</target>
......@@ -127,6 +137,16 @@
<target state="new">Remove unused private members</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="new">Simplify collection initialization</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="new">Simplify object initialization</target>
<note />
</trans-unit>
<trans-unit id="The_file_header_does_not_match_the_required_text">
<source>The file header does not match the required text</source>
<target state="new">The file header does not match the required text</target>
......
......@@ -32,6 +32,11 @@
<target state="new">Expression value is never used</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="new">Collection initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Member_access_should_be_qualified">
<source>Member access should be qualified.</source>
<target state="new">Member access should be qualified.</target>
......@@ -67,6 +72,11 @@
<target state="new">Parameter '{0}' can be removed; its initial value is never used</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="new">Object initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Populate_switch">
<source>Populate switch</source>
<target state="new">Populate switch</target>
......@@ -127,6 +137,16 @@
<target state="new">Remove unused private members</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="new">Simplify collection initialization</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="new">Simplify object initialization</target>
<note />
</trans-unit>
<trans-unit id="The_file_header_does_not_match_the_required_text">
<source>The file header does not match the required text</source>
<target state="new">The file header does not match the required text</target>
......
......@@ -32,6 +32,11 @@
<target state="new">Expression value is never used</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="new">Collection initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Member_access_should_be_qualified">
<source>Member access should be qualified.</source>
<target state="new">Member access should be qualified.</target>
......@@ -67,6 +72,11 @@
<target state="new">Parameter '{0}' can be removed; its initial value is never used</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="new">Object initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Populate_switch">
<source>Populate switch</source>
<target state="new">Populate switch</target>
......@@ -127,6 +137,16 @@
<target state="new">Remove unused private members</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="new">Simplify collection initialization</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="new">Simplify object initialization</target>
<note />
</trans-unit>
<trans-unit id="The_file_header_does_not_match_the_required_text">
<source>The file header does not match the required text</source>
<target state="new">The file header does not match the required text</target>
......
......@@ -32,6 +32,11 @@
<target state="new">Expression value is never used</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="new">Collection initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Member_access_should_be_qualified">
<source>Member access should be qualified.</source>
<target state="new">Member access should be qualified.</target>
......@@ -67,6 +72,11 @@
<target state="new">Parameter '{0}' can be removed; its initial value is never used</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="new">Object initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Populate_switch">
<source>Populate switch</source>
<target state="new">Populate switch</target>
......@@ -127,6 +137,16 @@
<target state="new">Remove unused private members</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="new">Simplify collection initialization</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="new">Simplify object initialization</target>
<note />
</trans-unit>
<trans-unit id="The_file_header_does_not_match_the_required_text">
<source>The file header does not match the required text</source>
<target state="new">The file header does not match the required text</target>
......
......@@ -32,6 +32,11 @@
<target state="new">Expression value is never used</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="new">Collection initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Member_access_should_be_qualified">
<source>Member access should be qualified.</source>
<target state="new">Member access should be qualified.</target>
......@@ -67,6 +72,11 @@
<target state="new">Parameter '{0}' can be removed; its initial value is never used</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="new">Object initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Populate_switch">
<source>Populate switch</source>
<target state="new">Populate switch</target>
......@@ -127,6 +137,16 @@
<target state="new">Remove unused private members</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="new">Simplify collection initialization</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="new">Simplify object initialization</target>
<note />
</trans-unit>
<trans-unit id="The_file_header_does_not_match_the_required_text">
<source>The file header does not match the required text</source>
<target state="new">The file header does not match the required text</target>
......
......@@ -32,6 +32,11 @@
<target state="new">Expression value is never used</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="new">Collection initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Member_access_should_be_qualified">
<source>Member access should be qualified.</source>
<target state="new">Member access should be qualified.</target>
......@@ -67,6 +72,11 @@
<target state="new">Parameter '{0}' can be removed; its initial value is never used</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="new">Object initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Populate_switch">
<source>Populate switch</source>
<target state="new">Populate switch</target>
......@@ -127,6 +137,16 @@
<target state="new">Remove unused private members</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="new">Simplify collection initialization</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="new">Simplify object initialization</target>
<note />
</trans-unit>
<trans-unit id="The_file_header_does_not_match_the_required_text">
<source>The file header does not match the required text</source>
<target state="new">The file header does not match the required text</target>
......
......@@ -32,6 +32,11 @@
<target state="new">Expression value is never used</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="new">Collection initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Member_access_should_be_qualified">
<source>Member access should be qualified.</source>
<target state="new">Member access should be qualified.</target>
......@@ -67,6 +72,11 @@
<target state="new">Parameter '{0}' can be removed; its initial value is never used</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="new">Object initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Populate_switch">
<source>Populate switch</source>
<target state="new">Populate switch</target>
......@@ -127,6 +137,16 @@
<target state="new">Remove unused private members</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="new">Simplify collection initialization</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="new">Simplify object initialization</target>
<note />
</trans-unit>
<trans-unit id="The_file_header_does_not_match_the_required_text">
<source>The file header does not match the required text</source>
<target state="new">The file header does not match the required text</target>
......
......@@ -32,6 +32,11 @@
<target state="new">Expression value is never used</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="new">Collection initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Member_access_should_be_qualified">
<source>Member access should be qualified.</source>
<target state="new">Member access should be qualified.</target>
......@@ -67,6 +72,11 @@
<target state="new">Parameter '{0}' can be removed; its initial value is never used</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="new">Object initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Populate_switch">
<source>Populate switch</source>
<target state="new">Populate switch</target>
......@@ -127,6 +137,16 @@
<target state="new">Remove unused private members</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="new">Simplify collection initialization</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="new">Simplify object initialization</target>
<note />
</trans-unit>
<trans-unit id="The_file_header_does_not_match_the_required_text">
<source>The file header does not match the required text</source>
<target state="new">The file header does not match the required text</target>
......
......@@ -32,6 +32,11 @@
<target state="new">Expression value is never used</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="new">Collection initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Member_access_should_be_qualified">
<source>Member access should be qualified.</source>
<target state="new">Member access should be qualified.</target>
......@@ -67,6 +72,11 @@
<target state="new">Parameter '{0}' can be removed; its initial value is never used</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="new">Object initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Populate_switch">
<source>Populate switch</source>
<target state="new">Populate switch</target>
......@@ -127,6 +137,16 @@
<target state="new">Remove unused private members</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="new">Simplify collection initialization</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="new">Simplify object initialization</target>
<note />
</trans-unit>
<trans-unit id="The_file_header_does_not_match_the_required_text">
<source>The file header does not match the required text</source>
<target state="new">The file header does not match the required text</target>
......
......@@ -32,6 +32,11 @@
<target state="new">Expression value is never used</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="new">Collection initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Member_access_should_be_qualified">
<source>Member access should be qualified.</source>
<target state="new">Member access should be qualified.</target>
......@@ -67,6 +72,11 @@
<target state="new">Parameter '{0}' can be removed; its initial value is never used</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="new">Object initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Populate_switch">
<source>Populate switch</source>
<target state="new">Populate switch</target>
......@@ -127,6 +137,16 @@
<target state="new">Remove unused private members</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="new">Simplify collection initialization</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="new">Simplify object initialization</target>
<note />
</trans-unit>
<trans-unit id="The_file_header_does_not_match_the_required_text">
<source>The file header does not match the required text</source>
<target state="new">The file header does not match the required text</target>
......
......@@ -32,6 +32,11 @@
<target state="new">Expression value is never used</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="new">Collection initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Member_access_should_be_qualified">
<source>Member access should be qualified.</source>
<target state="new">Member access should be qualified.</target>
......@@ -67,6 +72,11 @@
<target state="new">Parameter '{0}' can be removed; its initial value is never used</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="new">Object initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Populate_switch">
<source>Populate switch</source>
<target state="new">Populate switch</target>
......@@ -127,6 +137,16 @@
<target state="new">Remove unused private members</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="new">Simplify collection initialization</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="new">Simplify object initialization</target>
<note />
</trans-unit>
<trans-unit id="The_file_header_does_not_match_the_required_text">
<source>The file header does not match the required text</source>
<target state="new">The file header does not match the required text</target>
......
......@@ -32,6 +32,11 @@
<target state="new">Expression value is never used</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="new">Collection initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Member_access_should_be_qualified">
<source>Member access should be qualified.</source>
<target state="new">Member access should be qualified.</target>
......@@ -67,6 +72,11 @@
<target state="new">Parameter '{0}' can be removed; its initial value is never used</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="new">Object initialization can be simplified</target>
<note />
</trans-unit>
<trans-unit id="Populate_switch">
<source>Populate switch</source>
<target state="new">Populate switch</target>
......@@ -127,6 +137,16 @@
<target state="new">Remove unused private members</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="new">Simplify collection initialization</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="new">Simplify object initialization</target>
<note />
</trans-unit>
<trans-unit id="The_file_header_does_not_match_the_required_text">
<source>The file header does not match the required text</source>
<target state="new">The file header does not match the required text</target>
......
......@@ -23,6 +23,8 @@
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnnecessaryImports\AbstractRemoveUnnecessaryImportsCodeFixProvider.cs" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedMembers\AbstractRemoveUnusedMembersCodeFixProvider.cs" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedParametersAndValues\AbstractRemoveUnusedValuesCodeFixProvider.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseCollectionInitializer\AbstractUseCollectionInitializerCodeFixProvider.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseObjectInitializer\AbstractUseObjectInitializerCodeFixProvider.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UseThrowExpression\UseThrowExpressionCodeFixProvider.cs" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -121,10 +121,10 @@ public override Task RegisterCodeFixesAsync(CodeFixContext context)
TStatementSyntax statement, TObjectCreationExpressionSyntax objectCreation,
ImmutableArray<TExpressionStatementSyntax> matches);
private class MyCodeAction : CodeAction.DocumentChangeAction
private class MyCodeAction : CustomCodeActions.DocumentChangeAction
{
public MyCodeAction(Func<CancellationToken, Task<Document>> createChangedDocument)
: base(FeaturesResources.Collection_initialization_can_be_simplified, createChangedDocument)
: base(AnalyzersResources.Collection_initialization_can_be_simplified, createChangedDocument)
{
}
}
......
......@@ -120,10 +120,10 @@ public override Task RegisterCodeFixesAsync(CodeFixContext context)
TStatementSyntax statement, TObjectCreationExpressionSyntax objectCreation,
ImmutableArray<Match<TExpressionSyntax, TStatementSyntax, TMemberAccessExpressionSyntax, TAssignmentStatementSyntax>> matches);
private class MyCodeAction : CodeAction.DocumentChangeAction
private class MyCodeAction : CustomCodeActions.DocumentChangeAction
{
public MyCodeAction(Func<CancellationToken, Task<Document>> createChangedDocument)
: base(FeaturesResources.Object_initialization_can_be_simplified, createChangedDocument)
: base(AnalyzersResources.Object_initialization_can_be_simplified, createChangedDocument)
{
}
}
......
......@@ -22,5 +22,7 @@
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnnecessaryImports\VisualBasicRemoveUnnecessaryImportsDiagnosticAnalyzer.vb" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedMembers\VisualBasicRemoveUnusedMembersDiagnosticAnalyzer.vb" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedParametersAndValues\VisualBasicRemoveUnusedParametersAndValuesDiagnosticAnalyzer.vb" />
<Compile Include="$(MSBuildThisFileDirectory)UseCollectionInitializer\VisualBasicUseCollectionInitializerDiagnosticAnalyzer.vb" />
<Compile Include="$(MSBuildThisFileDirectory)UseObjectInitializer\VisualBasicUseObjectInitializerDiagnosticAnalyzer.vb" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -20,5 +20,8 @@
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnnecessaryImports\VisualBasicRemoveUnnecessaryImportsCodeFixProvider.vb" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedMembers\VisualBasicRemoveUnusedMembersCodeFixProvider.vb" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedParametersAndValues\VisualBasicRemoveUnusedValuesCodeFixProvider.vb" />
<Compile Include="$(MSBuildThisFileDirectory)UseCollectionInitializer\VisualBasicUseCollectionInitializerCodeFixProvider.vb" />
<Compile Include="$(MSBuildThisFileDirectory)UseObjectInitializer\UseInitializerHelpers.vb" />
<Compile Include="$(MSBuildThisFileDirectory)UseObjectInitializer\VisualBasicUseObjectInitializerCodeFixProvider.vb" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -128,5 +128,73 @@ $"Public Class C
End Sub
End Class")
End Function
<WorkItem(41236, "https://github.com/dotnet/roslyn/issues/41236")>
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsRemoveUnusedParameters)>
Public Async Function NotImplementedException_NoDiagnostic1() As Task
Await TestDiagnosticMissingAsync(
"imports system
class C
private sub Goo([|i|] as integer)
throw new NotImplementedException()
end sub
end class")
End Function
<WorkItem(41236, "https://github.com/dotnet/roslyn/issues/41236")>
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsRemoveUnusedParameters)>
Public Async Function NotImplementedException_NoDiagnostic2() As Task
Await TestDiagnosticMissingAsync(
"imports system
class C
private function Goo([|i|] as integer) as integer
throw new NotImplementedException()
end function
end class")
End Function
<WorkItem(41236, "https://github.com/dotnet/roslyn/issues/41236")>
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsRemoveUnusedParameters)>
Public Async Function NotImplementedException_NoDiagnostic3() As Task
Await TestDiagnosticMissingAsync(
"imports system
class C
public sub new([|i|] as integer)
throw new NotImplementedException()
end sub
end class")
End Function
<WorkItem(41236, "https://github.com/dotnet/roslyn/issues/41236")>
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsRemoveUnusedParameters)>
Public Async Function NotImplementedException_MultipleStatements1() As Task
Await TestDiagnosticsAsync(
"imports system
class C
private sub Goo([|i|] as integer)
throw new NotImplementedException()
return
end sub
end class", parameters:=Nothing,
Diagnostic(IDEDiagnosticIds.UnusedParameterDiagnosticId))
End Function
<WorkItem(41236, "https://github.com/dotnet/roslyn/issues/41236")>
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsRemoveUnusedParameters)>
Public Async Function NotImplementedException_MultipleStatements2() As Task
Await TestMissingAsync(
"imports system
class C
private sub Goo([|i|] as integer)
if (true)
throw new NotImplementedException()
end sub
end class")
End Function
End Class
End Namespace
......@@ -24,5 +24,7 @@
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedParametersAndValues\RemoveUnusedValueAssignmentTests.vb" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedParametersAndValues\RemoveUnusedValueExpressionStatementTests.vb" />
<Compile Include="$(MSBuildThisFileDirectory)RemoveUnusedParametersAndValues\RemoveUnusedValuesTestsBase.vb" />
<Compile Include="$(MSBuildThisFileDirectory)UseCollectionInitializer\UseCollectionInitializerTests.vb" />
<Compile Include="$(MSBuildThisFileDirectory)UseObjectInitializer\UseObjectInitializerTests.vb" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -988,9 +988,6 @@ This version used in: {2}</value>
<data name="Install_package_0" xml:space="preserve">
<value>Install package '{0}'</value>
</data>
<data name="Object_initialization_can_be_simplified" xml:space="preserve">
<value>Object initialization can be simplified</value>
</data>
<data name="project_0" xml:space="preserve">
<value>project {0}</value>
</data>
......@@ -1030,9 +1027,6 @@ This version used in: {2}</value>
<data name="Pascal_Case" xml:space="preserve">
<value>Pascal Case</value>
</data>
<data name="Collection_initialization_can_be_simplified" xml:space="preserve">
<value>Collection initialization can be simplified</value>
</data>
<data name="Use_coalesce_expression" xml:space="preserve">
<value>Use coalesce expression</value>
</data>
......@@ -1042,12 +1036,6 @@ This version used in: {2}</value>
<data name="Variable_declaration_can_be_inlined" xml:space="preserve">
<value>Variable declaration can be inlined</value>
</data>
<data name="Simplify_collection_initialization" xml:space="preserve">
<value>Simplify collection initialization</value>
</data>
<data name="Simplify_object_initialization" xml:space="preserve">
<value>Simplify object initialization</value>
</data>
<data name="Prefer_explicitly_provided_tuple_element_name" xml:space="preserve">
<value>Prefer explicitly provided tuple element name</value>
</data>
......
......@@ -2000,11 +2000,6 @@ Tato verze se používá zde: {2}.</target>
<target state="translated">Nainstalovat balíček {0}</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="translated">Inicializace objektu se může zjednodušit.</target>
<note />
</trans-unit>
<trans-unit id="project_0">
<source>project {0}</source>
<target state="translated">projekt {0}</target>
......@@ -2060,11 +2055,6 @@ Tato verze se používá zde: {2}.</target>
<target state="translated">PascalCase</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="translated">Inicializace kolekce se dá zjednodušit.</target>
<note />
</trans-unit>
<trans-unit id="Use_coalesce_expression">
<source>Use coalesce expression</source>
<target state="translated">Použít slučovací výraz</target>
......@@ -2080,16 +2070,6 @@ Tato verze se používá zde: {2}.</target>
<target state="translated">Deklaraci proměnné je možné vložit do řádku.</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="translated">Zjednodušit inicializaci kolekce</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="translated">Zjednodušit inicializaci objektu</target>
<note />
</trans-unit>
<trans-unit id="Prefer_explicitly_provided_tuple_element_name">
<source>Prefer explicitly provided tuple element name</source>
<target state="translated">Preferovat výslovně zadaný název prvku řazené kolekce členů</target>
......
......@@ -2000,11 +2000,6 @@ Diese Version wird verwendet in: {2}</target>
<target state="translated">Paket "{0}" installieren</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="translated">Die Objektinitialisierung kann vereinfacht werden.</target>
<note />
</trans-unit>
<trans-unit id="project_0">
<source>project {0}</source>
<target state="translated">Projekt "{0}"</target>
......@@ -2060,11 +2055,6 @@ Diese Version wird verwendet in: {2}</target>
<target state="translated">Pascal-Schreibweise</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="translated">Die Initialisierung der Sammlung kann vereinfacht werden.</target>
<note />
</trans-unit>
<trans-unit id="Use_coalesce_expression">
<source>Use coalesce expression</source>
<target state="translated">COALESCE-Ausdruck verwenden</target>
......@@ -2080,16 +2070,6 @@ Diese Version wird verwendet in: {2}</target>
<target state="translated">Variablendeklaration kann inline erfolgen.</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="translated">Initialisierung der Sammlung vereinfachen</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="translated">Initialisierung von Objekten vereinfachen</target>
<note />
</trans-unit>
<trans-unit id="Prefer_explicitly_provided_tuple_element_name">
<source>Prefer explicitly provided tuple element name</source>
<target state="translated">Explizit angegebenen Tupelelementnamen bevorzugen</target>
......
......@@ -2000,11 +2000,6 @@ Esta versión se utiliza en: {2}</target>
<target state="translated">Instalar paquete '{0}'</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="translated">La inicialización del objeto se puede simplificar</target>
<note />
</trans-unit>
<trans-unit id="project_0">
<source>project {0}</source>
<target state="translated">proyecto {0}</target>
......@@ -2060,11 +2055,6 @@ Esta versión se utiliza en: {2}</target>
<target state="translated">Pascal Case</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="translated">La inicialización de la recopilación se pueden simplificar</target>
<note />
</trans-unit>
<trans-unit id="Use_coalesce_expression">
<source>Use coalesce expression</source>
<target state="translated">Usar expresión coalesce</target>
......@@ -2080,16 +2070,6 @@ Esta versión se utiliza en: {2}</target>
<target state="translated">La declaración de variables se puede insertar</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="translated">Simplificar la inicialización de la recopilación</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="translated">Simplificar la inicialización de objetos</target>
<note />
</trans-unit>
<trans-unit id="Prefer_explicitly_provided_tuple_element_name">
<source>Prefer explicitly provided tuple element name</source>
<target state="translated">Preferir el nombre del elemento de tupla proporcionado explícitamente</target>
......
......@@ -2000,11 +2000,6 @@ Version utilisée dans : {2}</target>
<target state="translated">Installer le package '{0}'</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="translated">L'initialisation de l'objet peut être simplifiée</target>
<note />
</trans-unit>
<trans-unit id="project_0">
<source>project {0}</source>
<target state="translated">projet {0}</target>
......@@ -2060,11 +2055,6 @@ Version utilisée dans : {2}</target>
<target state="translated">Casse Pascal</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="translated">L'initialisation des collections peut être simplifiée</target>
<note />
</trans-unit>
<trans-unit id="Use_coalesce_expression">
<source>Use coalesce expression</source>
<target state="translated">Utiliser l'expression de fusion</target>
......@@ -2080,16 +2070,6 @@ Version utilisée dans : {2}</target>
<target state="translated">La déclaration de variable peut être inlined</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="translated">Simplifier l'initialisation des collections</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="translated">Simplifier l'initialisation des objets</target>
<note />
</trans-unit>
<trans-unit id="Prefer_explicitly_provided_tuple_element_name">
<source>Prefer explicitly provided tuple element name</source>
<target state="translated">Préférer le nom d'élément tuple fourni explicitement</target>
......
......@@ -2000,11 +2000,6 @@ Questa versione è usata {2}</target>
<target state="translated">Installa il pacchetto '{0}'</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="translated">L'inizializzazione dell'oggetto può essere semplificata</target>
<note />
</trans-unit>
<trans-unit id="project_0">
<source>project {0}</source>
<target state="translated">progetto {0}</target>
......@@ -2060,11 +2055,6 @@ Questa versione è usata {2}</target>
<target state="translated">Notazione Pascal</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="translated">L'inizializzazione della raccolta può essere semplificata</target>
<note />
</trans-unit>
<trans-unit id="Use_coalesce_expression">
<source>Use coalesce expression</source>
<target state="translated">Usa l'espressione COALESCE</target>
......@@ -2080,16 +2070,6 @@ Questa versione è usata {2}</target>
<target state="translated">La dichiarazione di variabile può essere impostata come inline</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="translated">Semplifica l'inizializzazione della raccolta</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="translated">Semplifica l'inizializzazione degli oggetti</target>
<note />
</trans-unit>
<trans-unit id="Prefer_explicitly_provided_tuple_element_name">
<source>Prefer explicitly provided tuple element name</source>
<target state="translated">Preferisci il nome di elemento di tupla specificato in modo esplicito</target>
......
......@@ -2000,11 +2000,6 @@ This version used in: {2}</source>
<target state="translated">パッケージ '{0}' のインストール</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="translated">オブジェクトの初期化を簡略化できます</target>
<note />
</trans-unit>
<trans-unit id="project_0">
<source>project {0}</source>
<target state="translated">プロジェクト {0}</target>
......@@ -2060,11 +2055,6 @@ This version used in: {2}</source>
<target state="translated">パスカル ケース</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="translated">コレクションの初期化を簡略化できます</target>
<note />
</trans-unit>
<trans-unit id="Use_coalesce_expression">
<source>Use coalesce expression</source>
<target state="translated">coalesce 式を使用します</target>
......@@ -2080,16 +2070,6 @@ This version used in: {2}</source>
<target state="translated">変数の宣言をインライン化できます</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="translated">コレクションの初期化を簡略化します</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="translated">オブジェクトの初期化を簡略化します</target>
<note />
</trans-unit>
<trans-unit id="Prefer_explicitly_provided_tuple_element_name">
<source>Prefer explicitly provided tuple element name</source>
<target state="translated">明示的に提供されたタプル要素名を優先します</target>
......
......@@ -2000,11 +2000,6 @@ This version used in: {2}</source>
<target state="translated">{0}' 패키지 설치</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="translated">개체 초기화를 간단하게 만들 수 있습니다.</target>
<note />
</trans-unit>
<trans-unit id="project_0">
<source>project {0}</source>
<target state="translated">프로젝트 {0}</target>
......@@ -2060,11 +2055,6 @@ This version used in: {2}</source>
<target state="translated">파스칼식 대/소문자</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="translated">컬렉션 초기화를 단순화할 수 있습니다.</target>
<note />
</trans-unit>
<trans-unit id="Use_coalesce_expression">
<source>Use coalesce expression</source>
<target state="translated">COALESCE 식 사용</target>
......@@ -2080,16 +2070,6 @@ This version used in: {2}</source>
<target state="translated">변수 선언은 인라인될 수 있습니다.</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="translated">컬렉션 초기화 단순화</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="translated">개체 초기화 단순화</target>
<note />
</trans-unit>
<trans-unit id="Prefer_explicitly_provided_tuple_element_name">
<source>Prefer explicitly provided tuple element name</source>
<target state="translated">명시적으로 제공된 튜플 요소 이름 기본 사용</target>
......
......@@ -2000,11 +2000,6 @@ Ta wersja jest używana wersja: {2}</target>
<target state="translated">Zainstaluj pakiet „{0}“</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="translated">Inicjowanie obiektu można uprościć</target>
<note />
</trans-unit>
<trans-unit id="project_0">
<source>project {0}</source>
<target state="translated">projekt {0}</target>
......@@ -2060,11 +2055,6 @@ Ta wersja jest używana wersja: {2}</target>
<target state="translated">PascalCase</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="translated">Można uprościć inicjowanie kolekcji</target>
<note />
</trans-unit>
<trans-unit id="Use_coalesce_expression">
<source>Use coalesce expression</source>
<target state="translated">Użyj wyrażenia łączącego</target>
......@@ -2080,16 +2070,6 @@ Ta wersja jest używana wersja: {2}</target>
<target state="translated">Deklaracja zmiennej może być śródwierszowa</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="translated">Uprość inicjowanie kolekcji</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="translated">Uprość inicjowanie obiektów</target>
<note />
</trans-unit>
<trans-unit id="Prefer_explicitly_provided_tuple_element_name">
<source>Prefer explicitly provided tuple element name</source>
<target state="translated">Preferuj jawnie podaną nazwę elementu krotki</target>
......
......@@ -2000,11 +2000,6 @@ Essa versão é usada no: {2}</target>
<target state="translated">Instalar o pacote '{0}'</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="translated">A inicialização do objeto pode ser simplificada</target>
<note />
</trans-unit>
<trans-unit id="project_0">
<source>project {0}</source>
<target state="translated">projeto {0}</target>
......@@ -2060,11 +2055,6 @@ Essa versão é usada no: {2}</target>
<target state="translated">Pascal Case</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="translated">A inicialização de coleção pode ser simplificada</target>
<note />
</trans-unit>
<trans-unit id="Use_coalesce_expression">
<source>Use coalesce expression</source>
<target state="translated">Usar a expressão de união</target>
......@@ -2080,16 +2070,6 @@ Essa versão é usada no: {2}</target>
<target state="translated">A declaração de variável pode ser embutida</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="translated">Simplificar a inicialização de coleção</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="translated">Simplificar a inicialização de objeto</target>
<note />
</trans-unit>
<trans-unit id="Prefer_explicitly_provided_tuple_element_name">
<source>Prefer explicitly provided tuple element name</source>
<target state="translated">Preferir o nome do elemento de tupla fornecido explicitamente</target>
......
......@@ -2000,11 +2000,6 @@ This version used in: {2}</source>
<target state="translated">Установить пакет "{0}"</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="translated">Инициализацию объекта можно упростить.</target>
<note />
</trans-unit>
<trans-unit id="project_0">
<source>project {0}</source>
<target state="translated">проект: {0}</target>
......@@ -2060,11 +2055,6 @@ This version used in: {2}</source>
<target state="translated">ВсеЧастиСПрописнойБуквы</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="translated">Инициализацию коллекции можно упростить.</target>
<note />
</trans-unit>
<trans-unit id="Use_coalesce_expression">
<source>Use coalesce expression</source>
<target state="translated">Используйте выражение объединения</target>
......@@ -2080,16 +2070,6 @@ This version used in: {2}</source>
<target state="translated">Объявление переменной может быть встроенным.</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="translated">Упростите инициализацию коллекции</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="translated">Упростите инициализацию объекта</target>
<note />
</trans-unit>
<trans-unit id="Prefer_explicitly_provided_tuple_element_name">
<source>Prefer explicitly provided tuple element name</source>
<target state="translated">Предпочитать явно указанное имя элемента кортежа</target>
......
......@@ -2000,11 +2000,6 @@ Bu sürüm şurada kullanılır: {2}</target>
<target state="translated">{0}' paketini yükle</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="translated">Nesne başlatma basitleştirilebilir</target>
<note />
</trans-unit>
<trans-unit id="project_0">
<source>project {0}</source>
<target state="translated">proje {0}</target>
......@@ -2060,11 +2055,6 @@ Bu sürüm şurada kullanılır: {2}</target>
<target state="translated">Baş Harfleri Büyük Olmak Üzere Bitişik</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="translated">Koleksiyon başlatma işlemi kolaylaştırılabilir</target>
<note />
</trans-unit>
<trans-unit id="Use_coalesce_expression">
<source>Use coalesce expression</source>
<target state="translated">Birleştirme ifadesi kullan</target>
......@@ -2080,16 +2070,6 @@ Bu sürüm şurada kullanılır: {2}</target>
<target state="translated">Değişken bildirimi satır içine alınabilir</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="translated">Koleksiyon başlatmayı kolaylaştır</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="translated">Nesne başlatmayı kolaylaştır</target>
<note />
</trans-unit>
<trans-unit id="Prefer_explicitly_provided_tuple_element_name">
<source>Prefer explicitly provided tuple element name</source>
<target state="translated">Açıkça sağlanan demet öğesi adını tercih et</target>
......
......@@ -2000,11 +2000,6 @@ This version used in: {2}</source>
<target state="translated">安装包“{0}”</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="translated">可以简化对象初始化</target>
<note />
</trans-unit>
<trans-unit id="project_0">
<source>project {0}</source>
<target state="translated">项目 {0}</target>
......@@ -2060,11 +2055,6 @@ This version used in: {2}</source>
<target state="translated">帕斯卡拼写法</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="translated">可以简化集合初始化</target>
<note />
</trans-unit>
<trans-unit id="Use_coalesce_expression">
<source>Use coalesce expression</source>
<target state="translated">使用 COALESCE 表达式</target>
......@@ -2080,16 +2070,6 @@ This version used in: {2}</source>
<target state="translated">可以内联变量声明</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="translated">简化集合初始化</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="translated">简化对象初始化</target>
<note />
</trans-unit>
<trans-unit id="Prefer_explicitly_provided_tuple_element_name">
<source>Prefer explicitly provided tuple element name</source>
<target state="translated">首选显式提供的元组元素名称</target>
......
......@@ -2000,11 +2000,6 @@ This version used in: {2}</source>
<target state="translated">安裝套件 '{0}'</target>
<note />
</trans-unit>
<trans-unit id="Object_initialization_can_be_simplified">
<source>Object initialization can be simplified</source>
<target state="translated">物件初始化可以簡化</target>
<note />
</trans-unit>
<trans-unit id="project_0">
<source>project {0}</source>
<target state="translated">專案 {0}</target>
......@@ -2060,11 +2055,6 @@ This version used in: {2}</source>
<target state="translated">Pascal 命名法的大小寫</target>
<note />
</trans-unit>
<trans-unit id="Collection_initialization_can_be_simplified">
<source>Collection initialization can be simplified</source>
<target state="translated">集合初始化可簡化</target>
<note />
</trans-unit>
<trans-unit id="Use_coalesce_expression">
<source>Use coalesce expression</source>
<target state="translated">使用 coalesce 運算式</target>
......@@ -2080,16 +2070,6 @@ This version used in: {2}</source>
<target state="translated">變數宣告可內置</target>
<note />
</trans-unit>
<trans-unit id="Simplify_collection_initialization">
<source>Simplify collection initialization</source>
<target state="translated">簡化集合初始化</target>
<note />
</trans-unit>
<trans-unit id="Simplify_object_initialization">
<source>Simplify object initialization</source>
<target state="translated">簡化物件初始化</target>
<note />
</trans-unit>
<trans-unit id="Prefer_explicitly_provided_tuple_element_name">
<source>Prefer explicitly provided tuple element name</source>
<target state="translated">建議使用明確提供的元組元素名稱</target>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册