File: Rules\RuleSet.cs
Web Access
Project: src\src\nuget-client\src\NuGet.Core\NuGet.Packaging\NuGet.Packaging.csproj (NuGet.Packaging)
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.

using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;

namespace NuGet.Packaging.Rules
{
    public static class RuleSet
    {
        private static readonly IPackageRule[] PackageCreationRuleArray = new IPackageRule[] {
                new InvalidFrameworkFolderRule(AnalysisResources.InvalidFrameworkWarning),
                new MisplacedAssemblyUnderLibRule(AnalysisResources.AssemblyDirectlyUnderLibWarning),
                new MisplacedAssemblyOutsideLibRule(AnalysisResources.AssemblyOutsideLibWarning),
                new MisplacedScriptFileRule(AnalysisResources.ScriptOutsideToolsWarning),
                new MisplacedTransformFileRule(AnalysisResources.MisplacedTransformFileWarning),
                new InitScriptNotUnderToolsRule(AnalysisResources.MisplacedInitScriptWarning),
                new WinRTNameIsObsoleteRule( AnalysisResources.WinRTObsoleteWarning),
                new DefaultManifestValuesRule(AnalysisResources.DefaultSpecValueWarning),
                new InvalidPlaceholderFileRule(AnalysisResources.InvalidPlaceholderFileWarning),
                new InvalidPrereleaseDependencyRule(AnalysisResources.InvalidPrereleaseDependencyWarning),
                new UnspecifiedDependencyVersionRule(AnalysisResources.UnspecifiedDependencyVersionWarning),
                new UnrecognizedScriptFileRule(AnalysisResources.UnrecognizedScriptWarning),
                new PathTooLongRule(AnalysisResources.FilePathTooLongWarning),
                new UnrecognizedLicenseIdentifierRule(AnalysisResources.UnrecognizedLicenseIdentifier),
                new LicenseUrlDeprecationWarning(AnalysisResources.LicenseUrlDeprecationWarning),
                new AccidentallyCompatibleWithAllFrameworksRule(),
                new DependenciesGroupsForEachTFMRule(),
                new UpholdBuildConventionRule(),
                new ReferencesInNuspecMatchRefAssetsRule(),
                new InvalidUndottedFrameworkRule(),
                new IconUrlDeprecationWarning(AnalysisResources.IconUrlDeprecationWarning),
        };

        // Non-breaking best practice rules.  
        private static readonly IPackageRule[] PackageCreationBestPracticeRuleArray = new IPackageRule[] {
                new MissingReadmeRule(AnalysisResources.MissingReadmeInformation)
        };

        private static readonly ReadOnlyCollection<IPackageRule> PackageCreationRules = new ReadOnlyCollection<IPackageRule>(
            PackageCreationRuleArray.Concat(PackageCreationBestPracticeRuleArray).ToArray()
        );

        private static readonly ReadOnlyCollection<IPackageRule> PackagesConfigToPackageReferenceMigrationRules = new ReadOnlyCollection<IPackageRule>(
             new IPackageRule[] {
                new MisplacedAssemblyUnderLibRule(AnalysisResources.Migrator_AssemblyDirectlyUnderLibWarning),
                new InstallScriptInPackageReferenceProjectRule(AnalysisResources.Migrator_PackageHasInstallScript),
                new ContentFolderInPackageReferenceProjectRule(AnalysisResources.Migrator_PackageHasContentFolder),
                new XdtTransformInPackageReferenceProjectRule(AnalysisResources.Migrator_XdtTransformInPackage)
             }
         );

        public static IEnumerable<IPackageRule> PackageCreationRuleSet
        {
            get
            {
                return PackageCreationRules;
            }
        }

        public static IEnumerable<IPackageRule> PackagesConfigToPackageReferenceMigrationRuleSet
        {
            get
            {
                return PackagesConfigToPackageReferenceMigrationRules;
            }
        }
    }
}