diff --git a/Directory.Build.props b/Directory.Build.props index a4335939ce15..bc09f78c3ac2 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -140,20 +140,6 @@ $(RuntimeInstallerBaseName)-internal - - - - $([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant()) diff --git a/src/Analyzers/Internal.AspNetCore.Analyzers/src/Internal.AspNetCore.Analyzers.csproj b/src/Analyzers/Internal.AspNetCore.Analyzers/src/Internal.AspNetCore.Analyzers.csproj deleted file mode 100644 index cf315eea4151..000000000000 --- a/src/Analyzers/Internal.AspNetCore.Analyzers/src/Internal.AspNetCore.Analyzers.csproj +++ /dev/null @@ -1,26 +0,0 @@ - - - - ASP.NET Core internal use analyzers. - netstandard1.3 - $(PackageTags);analyzers - $(NoWarn);CS1591 - analyzers/dotnet/cs/ - - false - true - true - false - - true - - - - - - - diff --git a/src/Analyzers/Internal.AspNetCore.Analyzers/src/PubternalityAnalyzer.cs b/src/Analyzers/Internal.AspNetCore.Analyzers/src/PubternalityAnalyzer.cs deleted file mode 100644 index b66aa38c2ee1..000000000000 --- a/src/Analyzers/Internal.AspNetCore.Analyzers/src/PubternalityAnalyzer.cs +++ /dev/null @@ -1,279 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Collections.Immutable; -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp; -using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.CodeAnalysis.Diagnostics; - -namespace Internal.AspNetCore.Analyzers -{ - [DiagnosticAnalyzer(LanguageNames.CSharp)] - public class PubternalityAnalyzer : DiagnosticAnalyzer - { - public PubternalityAnalyzer() - { - SupportedDiagnostics = ImmutableArray.Create(new[] - { - PubturnalityDescriptors.PUB0001, - PubturnalityDescriptors.PUB0002 - }); - } - - public override ImmutableArray SupportedDiagnostics { get; } - - public override void Initialize(AnalysisContext context) - { - context.EnableConcurrentExecution(); - - context.RegisterCompilationStartAction(analysisContext => - { - analysisContext.RegisterSymbolAction(symbolAnalysisContext => AnalyzeTypeUsage(symbolAnalysisContext), SymbolKind.Namespace); - analysisContext.RegisterSyntaxNodeAction(syntaxContext => AnalyzeTypeUsage(syntaxContext), SyntaxKind.IdentifierName); - }); - } - - private void AnalyzeTypeUsage(SymbolAnalysisContext context) - { - var ns = (INamespaceSymbol)context.Symbol; - if (IsInternal(ns)) - { - return; - } - - foreach (var namespaceOrTypeSymbol in ns.GetMembers()) - { - if (namespaceOrTypeSymbol.IsType) - { - CheckType((ITypeSymbol)namespaceOrTypeSymbol, context); - } - } - } - - private void CheckType(ITypeSymbol typeSymbol, SymbolAnalysisContext context) - { - if (IsPrivate(typeSymbol) || IsPrivate(typeSymbol.ContainingType)) - { - return; - } - - if (typeSymbol.BaseType != null) - { - CheckType(context, typeSymbol.BaseType, typeSymbol.DeclaringSyntaxReferences); - } - - foreach (var member in typeSymbol.GetMembers()) - { - CheckMember(context, member); - } - - foreach (var innerType in typeSymbol.GetTypeMembers()) - { - CheckType(innerType, context); - } - - if (typeSymbol is INamedTypeSymbol namedTypeSymbol) - { - // Check delegate signatures - if (namedTypeSymbol.DelegateInvokeMethod != null) - { - CheckMethod(context, namedTypeSymbol.DelegateInvokeMethod); - } - } - } - - private void CheckMember(SymbolAnalysisContext context, ISymbol symbol) - { - if (IsPrivate(symbol)) - { - return; - } - - switch (symbol) - { - case IFieldSymbol fieldSymbol: - { - CheckType(context, fieldSymbol.Type, fieldSymbol.DeclaringSyntaxReferences); - break; - } - case IPropertySymbol propertySymbol: - { - CheckType(context, propertySymbol.Type, propertySymbol.DeclaringSyntaxReferences); - break; - } - case IMethodSymbol methodSymbol: - { - // Skip compiler generated members that we already explicitly check - switch (methodSymbol.MethodKind) - { - case MethodKind.EventAdd: - case MethodKind.EventRaise: - case MethodKind.EventRemove: - case MethodKind.PropertyGet: - case MethodKind.PropertySet: - case MethodKind.DelegateInvoke: - case MethodKind.Ordinary when methodSymbol.ContainingType.TypeKind == TypeKind.Delegate: - return; - } - - CheckMethod(context, methodSymbol); - break; - } - case IEventSymbol eventSymbol: - CheckType(context, eventSymbol.Type, eventSymbol.DeclaringSyntaxReferences); - break; - } - } - - private void CheckMethod(SymbolAnalysisContext context, IMethodSymbol methodSymbol) - { - if (IsPrivate(methodSymbol)) - { - return; - } - - foreach (var parameter in methodSymbol.Parameters) - { - CheckType(context, parameter.Type, parameter.DeclaringSyntaxReferences); - } - - CheckType(context, methodSymbol.ReturnType, methodSymbol.DeclaringSyntaxReferences); - } - - private static bool IsPrivate(ISymbol symbol) - { - return symbol != null && - (symbol.DeclaredAccessibility == Accessibility.Private || - symbol.DeclaredAccessibility == Accessibility.Internal || - IsInternal(symbol.ContainingNamespace)); - } - - private void CheckAttributes(SymbolAnalysisContext context, ImmutableArray attributes) - { - foreach (var attributeData in attributes) - { - CheckType(context, attributeData.AttributeClass, attributeData.ApplicationSyntaxReference); - } - } - - private void CheckType(SymbolAnalysisContext context, ITypeSymbol symbol, SyntaxReference syntax) - { - var pubternalType = GetPubternalType(symbol); - if (pubternalType != null) - { - ReportPUB0001(context, pubternalType, syntax); - } - } - private void CheckType(SymbolAnalysisContext context, ITypeSymbol symbol, ImmutableArray syntaxReferences) - { - var pubternalType = GetPubternalType(symbol); - if (pubternalType != null) - { - foreach (var syntaxReference in syntaxReferences) - { - ReportPUB0001(context, pubternalType, syntaxReference); - } - } - } - - private static void ReportPUB0001(SymbolAnalysisContext context, ITypeSymbol pubternalType, SyntaxReference syntax) - { - var syntaxNode = syntax.GetSyntax(); - var location = syntaxNode.GetLocation(); - - if (syntaxNode is BaseTypeDeclarationSyntax baseTypeDeclarationSyntax) - { - location = baseTypeDeclarationSyntax.Identifier.GetLocation(); - } - - if (syntaxNode is DelegateDeclarationSyntax delegateDeclarationSyntax) - { - location = delegateDeclarationSyntax.ReturnType.GetLocation(); - } - - if (syntaxNode is BasePropertyDeclarationSyntax propertyDeclaration) - { - location = propertyDeclaration.Type.GetLocation(); - } - - if (syntaxNode is MethodDeclarationSyntax method) - { - location = method.ReturnType.GetLocation(); - } - - if (syntaxNode is VariableDeclaratorSyntax variableDeclarator) - { - if (variableDeclarator.Parent is VariableDeclarationSyntax fieldDeclaration) - { - location = fieldDeclaration.Type.GetLocation(); - } - } - - context.ReportDiagnostic(Diagnostic.Create(PubturnalityDescriptors.PUB0001, location, pubternalType.ToDisplayString())); - } - - private ITypeSymbol GetPubternalType(ITypeSymbol symbol) - { - if (IsInternal(symbol.ContainingNamespace)) - { - return symbol; - } - else - { - if (symbol is INamedTypeSymbol namedTypeSymbol && namedTypeSymbol.IsGenericType) - { - foreach (var argument in namedTypeSymbol.TypeArguments) - { - var argumentSymbol = GetPubternalType(argument); - if (argumentSymbol != null) - { - return argumentSymbol; - } - } - } - } - - return null; - } - - private void AnalyzeTypeUsage(SyntaxNodeAnalysisContext syntaxContext) - { - var identifier = (IdentifierNameSyntax)syntaxContext.Node; - - var symbolInfo = ModelExtensions.GetTypeInfo(syntaxContext.SemanticModel, identifier, syntaxContext.CancellationToken); - if (symbolInfo.Type == null) - { - return; - } - - var type = symbolInfo.Type; - if (!IsInternal(type.ContainingNamespace)) - { - // don't care about non-pubternal type references - return; - } - - if (!syntaxContext.ContainingSymbol.ContainingAssembly.Equals(type.ContainingAssembly)) - { - syntaxContext.ReportDiagnostic(Diagnostic.Create(PubturnalityDescriptors.PUB0002, identifier.GetLocation(), type.ToDisplayString())); - } - } - - private static bool IsInternal(INamespaceSymbol ns) - { - while (ns != null) - { - if (ns.Name == "Internal") - { - return true; - } - - ns = ns.ContainingNamespace; - } - - return false; - } - } -} diff --git a/src/Analyzers/Internal.AspNetCore.Analyzers/src/PubturnalityDescriptors.cs b/src/Analyzers/Internal.AspNetCore.Analyzers/src/PubturnalityDescriptors.cs deleted file mode 100644 index 6064ebaf3487..000000000000 --- a/src/Analyzers/Internal.AspNetCore.Analyzers/src/PubturnalityDescriptors.cs +++ /dev/null @@ -1,25 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Microsoft.CodeAnalysis; - -namespace Internal.AspNetCore.Analyzers -{ - internal class PubturnalityDescriptors - { - public static DiagnosticDescriptor PUB0001 = new DiagnosticDescriptor( - "PUB0001", - "Pubternal type in public API", - "Pubternal type ('{0}') usage in public API", - "Usage", - DiagnosticSeverity.Warning, true); - - public static DiagnosticDescriptor PUB0002 = new DiagnosticDescriptor( - "PUB0002", - "Cross assembly pubternal reference", - "Cross assembly pubternal type ('{0}') reference", - "Usage", - DiagnosticSeverity.Error, false); - } -} diff --git a/src/Analyzers/Internal.AspNetCore.Analyzers/test/Internal.AspNetCore.Analyzers.Tests.csproj b/src/Analyzers/Internal.AspNetCore.Analyzers/test/Internal.AspNetCore.Analyzers.Tests.csproj deleted file mode 100644 index 99dcca9dc176..000000000000 --- a/src/Analyzers/Internal.AspNetCore.Analyzers/test/Internal.AspNetCore.Analyzers.Tests.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - $(DefaultNetCoreTargetFramework);net472 - true - - false - - - - - - - - diff --git a/src/Analyzers/Internal.AspNetCore.Analyzers/test/PubternabilityAnalyzerTests.cs b/src/Analyzers/Internal.AspNetCore.Analyzers/test/PubternabilityAnalyzerTests.cs deleted file mode 100644 index a147e3c59bb4..000000000000 --- a/src/Analyzers/Internal.AspNetCore.Analyzers/test/PubternabilityAnalyzerTests.cs +++ /dev/null @@ -1,263 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.CodeAnalysis; -using Microsoft.AspNetCore.Testing; -using Microsoft.AspNetCore.Analyzer.Testing; -using Xunit; -using Xunit.Abstractions; - -namespace Internal.AspNetCore.Analyzers.Tests -{ - public class PubternabilityAnalyzerTests : DiagnosticVerifier - { - - private const string InternalDefinitions = @" -namespace A.Internal.Namespace -{ - public class C {} - public delegate C CD (); - public class CAAttribute: System.Attribute {} - - public class Program - { - public static void Main() {} - } -}"; - public PubternabilityAnalyzerTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) - { - } - - [Theory] - [MemberData(nameof(PublicMemberDefinitions))] - [QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/22440")] - public async Task PublicExposureOfPubternalTypeProducesPUB0001(string member) - { - var code = GetSourceFromNamespaceDeclaration($@" -namespace A -{{ - public class T - {{ - {member} - }} -}}"); - var diagnostic = Assert.Single(await GetDiagnostics(code.Source)); - Assert.Equal("PUB0001", diagnostic.Id); - AnalyzerAssert.DiagnosticLocation(code.DefaultMarkerLocation, diagnostic.Location); - } - - [Theory] - [MemberData(nameof(PublicMemberWithAllowedDefinitions))] - public async Task PublicExposureOfPubternalMembersSometimesAllowed(string member) - { - var code = GetSourceFromNamespaceDeclaration($@" -namespace A -{{ - public class T - {{ - {member} - }} -}}"); - Assert.Empty(await GetDiagnostics(code.Source)); - } - - - [Theory] - [MemberData(nameof(PublicTypeDefinitions))] - public async Task PublicExposureOfPubternalTypeProducesInTypeDefinitionPUB0001(string member) - { - var code = GetSourceFromNamespaceDeclaration($@" -namespace A -{{ - {member} -}}"); - var diagnostic = Assert.Single(await GetDiagnostics(code.Source)); - Assert.Equal("PUB0001", diagnostic.Id); - AnalyzerAssert.DiagnosticLocation(code.DefaultMarkerLocation, diagnostic.Location); - } - - [Theory] - [MemberData(nameof(PublicMemberDefinitions))] - public async Task PrivateUsageOfPubternalTypeDoesNotProduce(string member) - { - var code = GetSourceFromNamespaceDeclaration($@" -namespace A -{{ - internal class T - {{ - {member} - }} -}}"); - var diagnostics = await GetDiagnostics(code.Source); - Assert.Empty(diagnostics); - } - - [Theory] - [MemberData(nameof(PrivateMemberDefinitions))] - public async Task PrivateUsageOfPubternalTypeDoesNotProduceInPublicClasses(string member) - { - var code = GetSourceFromNamespaceDeclaration($@" -namespace A -{{ - public class T - {{ - {member} - }} -}}"); - var diagnostics = await GetDiagnostics(code.Source); - Assert.Empty(diagnostics); - } - - - [Theory] - [MemberData(nameof(PublicTypeWithAllowedDefinitions))] - public async Task PublicExposureOfPubternalTypeSometimesAllowed(string member) - { - var code = GetSourceFromNamespaceDeclaration($@" -namespace A -{{ - {member} -}}"); - var diagnostics = await GetDiagnostics(code.Source); - Assert.Empty(diagnostics); - } - - [Theory] - [MemberData(nameof(PrivateMemberDefinitions))] - [MemberData(nameof(PublicMemberDefinitions))] - [QuarantinedTest] - public async Task DefinitionOfPubternalCrossAssemblyProducesPUB0002(string member) - { - var code = TestSource.Read($@" -using A.Internal.Namespace; -namespace A -{{ - internal class T - {{ - {member} - }} -}}"); - - var diagnostic = Assert.Single(await GetDiagnosticWithProjectReference(code.Source)); - Assert.Equal("PUB0002", diagnostic.Id); - AnalyzerAssert.DiagnosticLocation(code.DefaultMarkerLocation, diagnostic.Location); - } - - [Theory] - [MemberData(nameof(TypeUsages))] - public async Task UsageOfPubternalCrossAssemblyProducesPUB0002(string usage) - { - var code = TestSource.Read($@" -using A.Internal.Namespace; -namespace A -{{ - public class T - {{ - private void M() - {{ - {usage} - }} - }} -}}"); - var diagnostic = Assert.Single(await GetDiagnosticWithProjectReference(code.Source)); - Assert.Equal("PUB0002", diagnostic.Id); - AnalyzerAssert.DiagnosticLocation(code.DefaultMarkerLocation, diagnostic.Location); - } - - public static IEnumerable PublicMemberDefinitions => - ApplyModifiers(MemberDefinitions, "public", "protected"); - - public static IEnumerable PublicMemberWithAllowedDefinitions => - ApplyModifiers(AllowedMemberDefinitions, "public"); - - public static IEnumerable PublicTypeDefinitions => - ApplyModifiers(TypeDefinitions, "public"); - - public static IEnumerable PublicTypeWithAllowedDefinitions => - ApplyModifiers(AllowedDefinitions, "public"); - - public static IEnumerable PrivateMemberDefinitions => - ApplyModifiers(MemberDefinitions, "private", "internal"); - - public static IEnumerable TypeUsages => - ApplyModifiers(TypeUsageStrings, string.Empty); - - public static string[] MemberDefinitions => new [] - { - "/*MM*/C c;", - "T(/*MM*/C c) {}", - "/*MM*/CD c { get; }", - "event /*MM*/CD c;", - "delegate /*MM*/C WOW();" - }; - - public static string[] TypeDefinitions => new [] - { - "delegate /*MM*/C WOW();", - "class /*MM*/T: P { } public class P {}", - "class /*MM*/T: C {}", - "class T { public class /*MM*/T1: C { } }" - }; - - public static string[] AllowedMemberDefinitions => new [] - { - "T([CA]int c) {}", - "[CA] MOD int f;", - "[CA] MOD int f { get; set; }", - "[CA] MOD class CC { }" - }; - - public static string[] AllowedDefinitions => new [] - { - "class T: I { } interface I {}" - }; - - public static string[] TypeUsageStrings => new [] - { - "/*MM*/var c = new C();", - "/*MM*/CD d = () => null;", - "var t = typeof(/*MM*/CAAttribute);" - }; - - private static IEnumerable ApplyModifiers(string[] code, params string[] mods) - { - foreach (var mod in mods) - { - foreach (var s in code) - { - if (s.Contains("MOD")) - { - yield return new object[] { s.Replace("MOD", mod) }; - } - else - { - yield return new object[] { mod + " " + s }; - } - } - } - } - - private TestSource GetSourceFromNamespaceDeclaration(string namespaceDefinition) - { - return TestSource.Read("using A.Internal.Namespace;" + InternalDefinitions + namespaceDefinition); - } - - private Task GetDiagnosticWithProjectReference(string code) - { - var libraray = CreateProject(InternalDefinitions); - - var mainProject = CreateProject(code).AddProjectReference(new ProjectReference(libraray.Id)); - - return GetDiagnosticsAsync(mainProject.Documents.ToArray(), new PubternalityAnalyzer(), new [] { "PUB0002" }); - } - - private Task GetDiagnostics(string code) - { - return GetDiagnosticsAsync(new[] { code }, new PubternalityAnalyzer(), new [] { "PUB0002" }); - } - } -} diff --git a/src/Components/WebAssembly/Sdk/tools/Microsoft.NET.Sdk.BlazorWebAssembly.Tools.csproj b/src/Components/WebAssembly/Sdk/tools/Microsoft.NET.Sdk.BlazorWebAssembly.Tools.csproj index 6ac7a26c1924..25c407299c3b 100644 --- a/src/Components/WebAssembly/Sdk/tools/Microsoft.NET.Sdk.BlazorWebAssembly.Tools.csproj +++ b/src/Components/WebAssembly/Sdk/tools/Microsoft.NET.Sdk.BlazorWebAssembly.Tools.csproj @@ -6,7 +6,6 @@ false false - true false diff --git a/src/Framework/Directory.Build.props b/src/Framework/Directory.Build.props index af42f01e22f4..7e8014e865f1 100644 --- a/src/Framework/Directory.Build.props +++ b/src/Framework/Directory.Build.props @@ -6,7 +6,6 @@ PlatformManifest.txt $(ArtifactsObjDir)$(PlatformManifestFileName) - true $(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).0 diff --git a/src/Installers/Debian/Directory.Build.props b/src/Installers/Debian/Directory.Build.props index 7eb60ce3ee1a..96148dda3750 100644 --- a/src/Installers/Debian/Directory.Build.props +++ b/src/Installers/Debian/Directory.Build.props @@ -2,7 +2,6 @@ - true $(InstallersOutputPath) $(IntermediateOutputPath)$(TargetRuntimeIdentifier)\ diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/src/Microsoft.NET.Sdk.Razor.csproj b/src/Razor/Microsoft.NET.Sdk.Razor/src/Microsoft.NET.Sdk.Razor.csproj index c1f511a8acbd..e78c40f5b062 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/src/Microsoft.NET.Sdk.Razor.csproj +++ b/src/Razor/Microsoft.NET.Sdk.Razor/src/Microsoft.NET.Sdk.Razor.csproj @@ -13,8 +13,6 @@ $(NoWarn);NU5100 $(NoWarn);NU5129 - - true false diff --git a/src/Tools/Directory.Build.props b/src/Tools/Directory.Build.props index 12132ebe9114..31a5e853642f 100644 --- a/src/Tools/Directory.Build.props +++ b/src/Tools/Directory.Build.props @@ -1,7 +1,6 @@ $(MSBuildThisFileDirectory)Shared\ - true