%PDF- %PDF-
Direktori : /lib/dotnet/sdk/8.0.117/Sdks/Microsoft.NET.Sdk/targets/ |
Current File : //lib/dotnet/sdk/8.0.117/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.Analyzers.targets |
<!-- *********************************************************************************************** Microsoft.NET.Sdk.Analyzers.targets WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have created a backup copy. Incorrect changes to this file will make it impossible to load or build your projects from the command-line or the IDE. Copyright (c) .NET Foundation. All rights reserved. *********************************************************************************************** --> <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <!-- Analysis level is a single property that can be used to control both the compiler warning waves and enable .NET analyzers. Valid values are 'none', 'latest', 'preview', or a version number --> <!-- If not specified and equal to the current most-recent TFM, default the AnalysisLevel to latest. Otherwise, default AnalysisLevel to the TFM. We set 'latest' indirectly here because the next chunk of logic handles user-defined prefix/suffix, which can also set 'latest', so we choose to only do the 'latest' => actual value translation one time. --> <_NoneAnalysisLevel>4.0</_NoneAnalysisLevel> <!-- When the base TFM of the platform bumps, these must be bumped as well. Preview should always be the 'next' TFM. --> <_LatestAnalysisLevel>8.0</_LatestAnalysisLevel> <_PreviewAnalysisLevel>9.0</_PreviewAnalysisLevel> <AnalysisLevel Condition="'$(AnalysisLevel)' == '' And '$(TargetFrameworkIdentifier)' == '.NETCoreApp' And $([MSBuild]::VersionEquals($(_TargetFrameworkVersionWithoutV), '$(_LatestAnalysisLevel)'))">latest</AnalysisLevel> <AnalysisLevel Condition="'$(AnalysisLevel)' == '' And '$(TargetFrameworkIdentifier)' == '.NETCoreApp' And $([MSBuild]::VersionGreaterThanOrEquals($(_TargetFrameworkVersionWithoutV), '5.0'))">$(_TargetFrameworkVersionWithoutV)</AnalysisLevel> <!-- AnalysisLevel can also contain compound values with a prefix and suffix separated by a '-' character. The prefix indicates the core AnalysisLevel and the suffix indicates the bucket of rules to enable by default. For example, some valid compound values for AnalysisLevel are: 1. '5-all' - Indicates core AnalysisLevel = '5' with 'all' the rules enabled by default. 2. 'latest-none' - Indicates core AnalysisLevel = 'latest' with 'none' of the rules enabled by default. AnalysisLevelPrefix is used to set the EffectiveAnalysisLevel below. AnalysisLevelSuffix is processed further in Microsoft.CodeAnalysis.NetAnalyzers.targets imported below. --> <AnalysisLevelPrefix Condition="$(AnalysisLevel.Contains('-'))">$([System.Text.RegularExpressions.Regex]::Replace($(AnalysisLevel), '-(.)*', ''))</AnalysisLevelPrefix> <AnalysisLevelSuffix Condition="'$(AnalysisLevelPrefix)' != ''">$([System.Text.RegularExpressions.Regex]::Replace($(AnalysisLevel), '$(AnalysisLevelPrefix)-', ''))</AnalysisLevelSuffix> <!-- EffectiveAnalysisLevel is used to differentiate from user specified strings (such as 'none') and an implied numerical option (such as '4')--> <EffectiveAnalysisLevel Condition="'$(AnalysisLevel)' == 'none' or '$(AnalysisLevelPrefix)' == 'none'">$(_NoneAnalysisLevel)</EffectiveAnalysisLevel> <EffectiveAnalysisLevel Condition="'$(AnalysisLevel)' == 'latest' or '$(AnalysisLevelPrefix)' == 'latest'">$(_LatestAnalysisLevel)</EffectiveAnalysisLevel> <EffectiveAnalysisLevel Condition="'$(AnalysisLevel)' == 'preview' or '$(AnalysisLevelPrefix)' == 'preview'">$(_PreviewAnalysisLevel)</EffectiveAnalysisLevel> <!-- Set EffectiveAnalysisLevel to the value of AnalysisLevel if it is a version number --> <EffectiveAnalysisLevel Condition="'$(EffectiveAnalysisLevel)' == '' And '$(AnalysisLevelPrefix)' != ''">$(AnalysisLevelPrefix)</EffectiveAnalysisLevel> <EffectiveAnalysisLevel Condition="'$(EffectiveAnalysisLevel)' == '' And '$(AnalysisLevel)' != ''">$(AnalysisLevel)</EffectiveAnalysisLevel> <!-- Set WarningLevel based on all we know about the project --> <!-- NOTE: at this time only the C# compiler supports warning waves like this. --> <!-- If the user specified 'preview' we want to pick a very high warning level to opt into the highest possible warning wave --> <WarningLevel Condition="'$(Language)' == 'C#' And '$(WarningLevel)' == '' And '$(AnalysisLevel)' == 'preview'">9999</WarningLevel> <!-- The CSharp.props used to hard-code WarningLevel to 4, so to maintain parity with .NET Framework projects we do that here. --> <WarningLevel Condition="'$(Language)' == 'C#' And '$(WarningLevel)' == '' And '$(TargetFrameworkIdentifier)' == '.NETFramework' ">4</WarningLevel> <!-- .NET projects, however, can float up to their TFM's major version --> <WarningLevel Condition="'$(Language)' == 'C#' And '$(WarningLevel)' == '' And '$(TargetFrameworkIdentifier)' == '.NETCoreApp' ">$(_TargetFrameworkVersionWithoutV.Substring(0, 1))</WarningLevel> </PropertyGroup> <!-- Enable Analyzers based on EffectiveAnalysisLevel --> <PropertyGroup Condition="'$(EffectiveAnalysisLevel)' != '' And $([MSBuild]::VersionGreaterThanOrEquals($(EffectiveAnalysisLevel), '5.0'))"> <!-- EnableNETAnalyzers Allows analyzers to be disabled in bulk via msbuild if the user wants to --> <EnableNETAnalyzers Condition="'$(EnableNETAnalyzers)' == ''">true</EnableNETAnalyzers> <!-- Intermediate step to enable ILLink.Analyzers so ILLink, Blazor, Xamarin, AOT, etc. can enable the same flags --> <EnableSingleFileAnalyzer Condition="'$(EnableSingleFileAnalyzer)' == '' And ('$(PublishSingleFile)' == 'true' Or '$(PublishAot)' == 'true' Or '$(IsAotCompatible)' == 'true')">true</EnableSingleFileAnalyzer> <!-- Enable the trim analyzer when any trimming settings are enabled. Warnings may suppressed based on other settings. --> <EnableTrimAnalyzer Condition="'$(EnableTrimAnalyzer)' == '' And ('$(PublishTrimmed)' == 'true' Or '$(IsTrimmable)' == 'true' Or '$(PublishAot)' == 'true')">true</EnableTrimAnalyzer> <!-- Enable the AOT analyzer when AOT is enabled. Warnings may suppressed based on other settings. --> <EnableAotAnalyzer Condition="'$(EnableAotAnalyzer)' == '' And ('$(PublishAot)' == 'true' or '$(IsAotCompatible)' == 'true')">true</EnableAotAnalyzer> <!-- EnforceCodeStyleInBuild Allows code style analyzers to be disabled in bulk via msbuild if the user wants to --> <EnforceCodeStyleInBuild Condition="'$(EnforceCodeStyleInBuild)' == ''">false</EnforceCodeStyleInBuild> </PropertyGroup> <!-- Establish good defaults for scenarios where no EffectiveAnalysisLevel was set (e.g. .NETFramework) --> <PropertyGroup Condition="'$(EffectiveAnalysisLevel)' == '' Or ('$(EffectiveAnalysisLevel)' != '' And $([MSBuild]::VersionLessThanOrEquals($(EffectiveAnalysisLevel), '4.0')))"> <EnableNETAnalyzers Condition="'$(EnableNETAnalyzers)' == ''">false</EnableNETAnalyzers> <EnforceCodeStyleInBuild Condition="'$(EnforceCodeStyleInBuild)' == ''">false</EnforceCodeStyleInBuild> <EnableTrimAnalyzer Condition="'$(EnableTrimAnalyzer)' == ''">false</EnableTrimAnalyzer> <EnableAotAnalyzer Condition="'$(EnableAotAnalyzer)' == ''">false</EnableAotAnalyzer> <EnableSingleFileAnalyzer Condition="'$(EnableSingleFileAnalyzer)' == ''">false</EnableSingleFileAnalyzer> </PropertyGroup> <!-- Unconditionally import 'Microsoft.CodeAnalysis.NetAnalyzers.props' for all C# and VB projects for supporting https://github.com/dotnet/roslyn-analyzers/issues/3977 --> <Import Project="$(MSBuildThisFileDirectory)..\analyzers\build\Microsoft.CodeAnalysis.NetAnalyzers.props" Condition="'$(Language)' == 'C#' Or '$(Language)' == 'VB'" /> <Import Project="$(MSBuildThisFileDirectory)..\analyzers\build\Microsoft.CodeAnalysis.NetAnalyzers.targets" Condition="$(EnableNETAnalyzers)" /> <Import Project="$(MSBuildThisFileDirectory)..\codestyle\cs\build\Microsoft.CodeAnalysis.CSharp.CodeStyle.targets" Condition="$(EnforceCodeStyleInBuild) And '$(Language)' == 'C#'" /> <Import Project="$(MSBuildThisFileDirectory)..\codestyle\vb\build\Microsoft.CodeAnalysis.VisualBasic.CodeStyle.targets" Condition="$(EnforceCodeStyleInBuild) And '$(Language)' == 'VB'" /> <!-- .NET Analyzers --> <ItemGroup Condition="$(EnableNETAnalyzers)"> <Analyzer Condition="'$(Language)' == 'VB'" Include="$(MSBuildThisFileDirectory)..\analyzers\Microsoft.CodeAnalysis.VisualBasic.NetAnalyzers.dll" IsImplicitlyDefined="true" /> <Analyzer Condition="'$(Language)' == 'C#'" Include="$(MSBuildThisFileDirectory)..\analyzers\Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll" IsImplicitlyDefined="true" /> <Analyzer Include="$(MSBuildThisFileDirectory)..\analyzers\Microsoft.CodeAnalysis.NetAnalyzers.dll" IsImplicitlyDefined="true" /> </ItemGroup> <!-- CompilerVisibleProperties for .NET --> <ItemGroup Condition="'$(Language)' == 'C#' Or '$(Language)' == 'VB'"> <!-- Used for analyzer to match namespace to folder structure --> <CompilerVisibleProperty Include="RootNamespace" /> <CompilerVisibleProperty Include="ProjectDir" /> <!-- Used by the analyzers in the Microsoft.Interop.ComInterfaceGenerator to detect combinations of built-in and source generated COM interop --> <CompilerVisibleProperty Include="EnableComHosting" /> <CompilerVisibleProperty Include="EnableGeneratedComInterfaceComImportInterop" /> </ItemGroup> <!-- C# Code Style Analyzers --> <ItemGroup Condition="$(EnforceCodeStyleInBuild) And '$(Language)' == 'C#'"> <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\cs\Microsoft.CodeAnalysis.CodeStyle.dll" IsImplicitlyDefined="true" /> <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\cs\Microsoft.CodeAnalysis.CodeStyle.Fixes.dll" IsImplicitlyDefined="true" /> <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\cs\Microsoft.CodeAnalysis.CSharp.CodeStyle.dll" IsImplicitlyDefined="true" /> <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\cs\Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes.dll" IsImplicitlyDefined="true" /> </ItemGroup> <!-- Visual Basic Code Style Analyzers --> <ItemGroup Condition="$(EnforceCodeStyleInBuild) And '$(Language)' == 'VB'"> <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\vb\Microsoft.CodeAnalysis.CodeStyle.dll" IsImplicitlyDefined="true" /> <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\vb\Microsoft.CodeAnalysis.CodeStyle.Fixes.dll" IsImplicitlyDefined="true" /> <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\vb\Microsoft.CodeAnalysis.VisualBasic.CodeStyle.dll" IsImplicitlyDefined="true" /> <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\vb\Microsoft.CodeAnalysis.VisualBasic.CodeStyle.Fixes.dll" IsImplicitlyDefined="true" /> </ItemGroup> </Project>