Skip to content

Commit 8c4af3a

Browse files
committed
Merge branch 'main' into MSTEST0021
# Conflicts: # src/Analyzers/MSTest.Analyzers/AnalyzerReleases.Unshipped.md # src/Analyzers/MSTest.Analyzers/Helpers/DiagnosticIds.cs # src/Analyzers/MSTest.Analyzers/Resources.Designer.cs # src/Analyzers/MSTest.Analyzers/Resources.resx # src/Analyzers/MSTest.Analyzers/xlf/Resources.cs.xlf # src/Analyzers/MSTest.Analyzers/xlf/Resources.de.xlf # src/Analyzers/MSTest.Analyzers/xlf/Resources.es.xlf # src/Analyzers/MSTest.Analyzers/xlf/Resources.fr.xlf # src/Analyzers/MSTest.Analyzers/xlf/Resources.it.xlf # src/Analyzers/MSTest.Analyzers/xlf/Resources.ja.xlf # src/Analyzers/MSTest.Analyzers/xlf/Resources.ko.xlf # src/Analyzers/MSTest.Analyzers/xlf/Resources.pl.xlf # src/Analyzers/MSTest.Analyzers/xlf/Resources.pt-BR.xlf # src/Analyzers/MSTest.Analyzers/xlf/Resources.ru.xlf # src/Analyzers/MSTest.Analyzers/xlf/Resources.tr.xlf # src/Analyzers/MSTest.Analyzers/xlf/Resources.zh-Hans.xlf # src/Analyzers/MSTest.Analyzers/xlf/Resources.zh-Hant.xlf # test/UnitTests/MSTest.Analyzers.UnitTests/testsbaseline.txt
2 parents 03a3217 + 4c6d6d4 commit 8c4af3a

24 files changed

Lines changed: 333 additions & 20 deletions

eng/Version.Details.xml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Dependencies>
33
<ToolsetDependencies>
4-
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="8.0.0-beta.24161.7">
4+
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="8.0.0-beta.24165.4">
55
<Uri>https://github.com/dotnet/arcade</Uri>
6-
<Sha>cd10e5d3748676d70ae2b4d9c84f073eeb203cac</Sha>
6+
<Sha>f311667e0587f19c3fa9553a909975662107a351</Sha>
77
</Dependency>
8-
<Dependency Name="Microsoft.DotNet.Build.Tasks.Templating" Version="8.0.0-beta.24161.7">
8+
<Dependency Name="Microsoft.DotNet.Build.Tasks.Templating" Version="8.0.0-beta.24165.4">
99
<Uri>https://github.com/dotnet/arcade</Uri>
10-
<Sha>cd10e5d3748676d70ae2b4d9c84f073eeb203cac</Sha>
10+
<Sha>f311667e0587f19c3fa9553a909975662107a351</Sha>
1111
</Dependency>
1212
<Dependency Name="Microsoft.DotNet.XliffTasks" Version="9.0.0-beta.24102.4">
1313
<Uri>https://github.com/dotnet/arcade</Uri>
@@ -17,17 +17,17 @@
1717
<Uri>https://dev.azure.com/devdiv/DevDiv/_git/vs-code-coverage</Uri>
1818
<Sha>4c964d79cff663c7dc28fa5a67895f419e6ef6fb</Sha>
1919
</Dependency>
20-
<Dependency Name="Microsoft.Testing.Framework" Version="1.2.0-preview.24164.2">
20+
<Dependency Name="Microsoft.Testing.Framework" Version="1.2.0-preview.24166.1">
2121
<Uri>https://github.com/microsoft/testanywhere</Uri>
22-
<Sha>cda8e69fc8b735848170e0537c2088639e8cadc4</Sha>
22+
<Sha>513d21b446a108f0e2255c0b96203278816df43d</Sha>
2323
</Dependency>
24-
<Dependency Name="Microsoft.Testing.Platform" Version="1.2.0-preview.24164.2">
24+
<Dependency Name="Microsoft.Testing.Platform" Version="1.2.0-preview.24166.1">
2525
<Uri>https://github.com/microsoft/testanywhere</Uri>
26-
<Sha>cda8e69fc8b735848170e0537c2088639e8cadc4</Sha>
26+
<Sha>513d21b446a108f0e2255c0b96203278816df43d</Sha>
2727
</Dependency>
28-
<Dependency Name="MSTest.Engine" Version="1.0.0-alpha.24164.2">
28+
<Dependency Name="MSTest.Engine" Version="1.0.0-alpha.24166.1">
2929
<Uri>https://github.com/microsoft/testanywhere</Uri>
30-
<Sha>cda8e69fc8b735848170e0537c2088639e8cadc4</Sha>
30+
<Sha>513d21b446a108f0e2255c0b96203278816df43d</Sha>
3131
</Dependency>
3232
</ToolsetDependencies>
3333
</Dependencies>

eng/Versions.props

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@
2424
<MicrosoftCodeAnalysisPublicApiAnalyzersVersion>$(MicrosoftCodeAnalysisAnalyzersVersion)</MicrosoftCodeAnalysisPublicApiAnalyzersVersion>
2525
<MicrosoftCodeAnalysisBannedApiAnalyzersVersion>$(MicrosoftCodeAnalysisPublicApiAnalyzersVersion)</MicrosoftCodeAnalysisBannedApiAnalyzersVersion>
2626
<!-- MSBuild Sdk versions updates -->
27-
<MicrosoftDotNetBuildTasksTemplatingPackageVersion>8.0.0-beta.24161.7</MicrosoftDotNetBuildTasksTemplatingPackageVersion>
27+
<MicrosoftDotNetBuildTasksTemplatingPackageVersion>8.0.0-beta.24165.4</MicrosoftDotNetBuildTasksTemplatingPackageVersion>
2828
<!-- Testing platform (this comment is here to avoid conflict on darc PRs) -->
29-
<MicrosoftTestingFrameworkVersion>1.2.0-preview.24164.2</MicrosoftTestingFrameworkVersion>
30-
<MicrosoftTestingPlatformVersion>1.2.0-preview.24164.2</MicrosoftTestingPlatformVersion>
31-
<MSTestEngineVersion>1.0.0-alpha.24164.2</MSTestEngineVersion>
29+
<MicrosoftTestingFrameworkVersion>1.2.0-preview.24166.1</MicrosoftTestingFrameworkVersion>
30+
<MicrosoftTestingPlatformVersion>1.2.0-preview.24166.1</MicrosoftTestingPlatformVersion>
31+
<MSTestEngineVersion>1.0.0-alpha.24166.1</MSTestEngineVersion>
3232
<MicrosoftVisualStudioThreadingAnalyzersVersion>17.9.28</MicrosoftVisualStudioThreadingAnalyzersVersion>
3333
<StyleCopAnalyzersVersion>1.2.0-beta.556</StyleCopAnalyzersVersion>
3434
</PropertyGroup>

eng/common/templates-official/job/publish-build-assets.yml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,16 @@ jobs:
9494
inputs:
9595
targetType: inline
9696
script: |
97-
Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(BARBuildId)
98-
Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value "$(DefaultChannels)"
99-
Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(IsStableBuild)
97+
New-Item -Path "$(Build.StagingDirectory)/ReleaseConfigs" -ItemType Directory -Force
98+
$filePath = "$(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt"
99+
Add-Content -Path $filePath -Value $(BARBuildId)
100+
Add-Content -Path $filePath -Value "$(DefaultChannels)"
101+
Add-Content -Path $filePath -Value $(IsStableBuild)
100102
101103
- task: 1ES.PublishBuildArtifacts@1
102104
displayName: Publish ReleaseConfigs Artifact
103105
inputs:
104-
PathtoPublish: '$(Build.StagingDirectory)/ReleaseConfigs.txt'
106+
PathtoPublish: '$(Build.StagingDirectory)/ReleaseConfigs'
105107
PublishLocation: Container
106108
ArtifactName: ReleaseConfigs
107109

global.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"rollForward": "patch"
2020
},
2121
"msbuild-sdks": {
22-
"Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24161.7",
22+
"Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24165.4",
2323
"MSBuild.Sdk.Extras": "3.0.44"
2424
}
2525
}

src/Analyzers/MSTest.Analyzers/AnalyzerReleases.Unshipped.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ MSTEST0017 | Usage | Info | AssertionArgsShouldBePassedInCorrectOrder, [Document
88
MSTEST0019 | Design | Disabled | PreferTestInitializeOverConstructorAnalyzer, [Documentation](https://learn.microsoft.com/dotnet/core/testing/mstest-analyzers/mstest0019)
99
MSTEST0020 | Design | Disabled | PreferConstructorOverTestInitializeAnalyzer, [Documentation](https://learn.microsoft.com/dotnet/core/testing/mstest-analyzers/mstest0020)
1010
MSTEST0021 | Design | Disabled | PreferDisposeOverTestCleanupAnalyzer, [Documentation](https://learn.microsoft.com/dotnet/core/testing/mstest-analyzers/mstest0021)
11+
MSTEST0022 | Design | Disabled | PreferTestCleanupOverDisposeAnalyzer, [Documentation](https://learn.microsoft.com/dotnet/core/testing/mstest-analyzers/mstest0022)

src/Analyzers/MSTest.Analyzers/Helpers/DiagnosticIds.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@ internal static class DiagnosticIds
2525
public const string PreferTestInitializeOverConstructorRuleId = "MSTEST0019";
2626
public const string PreferConstructorOverTestInitializeRuleId = "MSTEST0020";
2727
public const string PreferDisposeOverTestCleanupRuleId = "MSTEST0021";
28+
public const string PreferTestCleanupOverDisposeRuleId = "MSTEST0022";
2829
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
3+
4+
using System.Collections.Immutable;
5+
6+
using Analyzer.Utilities.Extensions;
7+
8+
using Microsoft.CodeAnalysis;
9+
using Microsoft.CodeAnalysis.Diagnostics;
10+
11+
using MSTest.Analyzers.Helpers;
12+
13+
namespace MSTest.Analyzers;
14+
15+
[DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)]
16+
public sealed class PreferTestCleanupOverDisposeAnalyzer : DiagnosticAnalyzer
17+
{
18+
private static readonly LocalizableResourceString Title = new(nameof(Resources.PreferTestCleanupOverDisposeTitle), Resources.ResourceManager, typeof(Resources));
19+
private static readonly LocalizableResourceString MessageFormat = new(nameof(Resources.PreferTestCleanupOverDisposeMessageFormat), Resources.ResourceManager, typeof(Resources));
20+
21+
internal static readonly DiagnosticDescriptor Rule = DiagnosticDescriptorHelper.Create(
22+
DiagnosticIds.PreferTestCleanupOverDisposeRuleId,
23+
Title,
24+
MessageFormat,
25+
null,
26+
Category.Design,
27+
DiagnosticSeverity.Info,
28+
isEnabledByDefault: false);
29+
30+
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; }
31+
= ImmutableArray.Create(Rule);
32+
33+
public override void Initialize(AnalysisContext context)
34+
{
35+
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None);
36+
context.EnableConcurrentExecution();
37+
38+
context.RegisterCompilationStartAction(context =>
39+
{
40+
if (context.Compilation.TryGetOrCreateTypeByMetadataName(WellKnownTypeNames.SystemIDisposable, out var idisposableSymbol))
41+
{
42+
var iasyncDisposableSymbol = context.Compilation.GetOrCreateTypeByMetadataName(WellKnownTypeNames.SystemIAsyncDisposable);
43+
var valueTaskSymbol = context.Compilation.GetOrCreateTypeByMetadataName(WellKnownTypeNames.SystemThreadingTasksValueTask);
44+
context.RegisterSymbolAction(context => AnalyzeSymbol(context, idisposableSymbol, iasyncDisposableSymbol, valueTaskSymbol), SymbolKind.Method);
45+
}
46+
});
47+
}
48+
49+
private static void AnalyzeSymbol(SymbolAnalysisContext context, INamedTypeSymbol idisposableSymbol, INamedTypeSymbol? iasyncDisposableSymbol,
50+
INamedTypeSymbol? valueTaskSymbol)
51+
{
52+
IMethodSymbol methodSymbol = (IMethodSymbol)context.Symbol;
53+
54+
if (methodSymbol.IsAsyncDisposeImplementation(iasyncDisposableSymbol, valueTaskSymbol)
55+
|| methodSymbol.IsDisposeImplementation(idisposableSymbol))
56+
{
57+
context.ReportDiagnostic(methodSymbol.CreateDiagnostic(Rule));
58+
}
59+
}
60+
}

src/Analyzers/MSTest.Analyzers/Resources.Designer.cs

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Analyzers/MSTest.Analyzers/Resources.resx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,12 @@
313313
<data name="PreferDisposeOverTestCleanupTitle" xml:space="preserve">
314314
<value>Prefer 'Dispose' over TestCleanup methods</value>
315315
</data>
316+
<data name="PreferTestCleanupOverDisposeMessageFormat" xml:space="preserve">
317+
<value>Prefer TestCleanup over 'Dispose' methods</value>
318+
</data>
319+
<data name="PreferTestCleanupOverDisposeTitle" xml:space="preserve">
320+
<value>Prefer TestCleanup over 'Dispose' methods</value>
321+
</data>
316322
<data name="PreferTestInitializeOverConstructorMessageFormat" xml:space="preserve">
317323
<value>Prefer TestInitialize methods over constructors</value>
318324
</data>
@@ -517,4 +523,4 @@
517523
<data name="UseParallelizeAttributeAnalyzerTitle" xml:space="preserve">
518524
<value>Explicitly enable or disable tests parallelization</value>
519525
</data>
520-
</root>
526+
</root>

src/Analyzers/MSTest.Analyzers/xlf/Resources.cs.xlf

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,16 @@
343343
<target state="new">Prefer 'Dispose' over TestCleanup methods</target>
344344
<note />
345345
</trans-unit>
346+
<trans-unit id="PreferTestCleanupOverDisposeMessageFormat">
347+
<source>Prefer TestCleanup over 'Dispose' methods</source>
348+
<target state="new">Prefer TestCleanup over 'Dispose' methods</target>
349+
<note />
350+
</trans-unit>
351+
<trans-unit id="PreferTestCleanupOverDisposeTitle">
352+
<source>Prefer TestCleanup over 'Dispose' methods</source>
353+
<target state="new">Prefer TestCleanup over 'Dispose' methods</target>
354+
<note />
355+
</trans-unit>
346356
<trans-unit id="PreferTestInitializeOverConstructorMessageFormat">
347357
<source>Prefer TestInitialize methods over constructors</source>
348358
<target state="new">Prefer TestInitialize methods over constructors</target>

0 commit comments

Comments
 (0)