Ejemplo n.º 1
0
        private static CSharpCompilationOptions CreateCSharpCompilationOptions()
        {
            string moduleName                        = null;
            string mainTypeName                      = null;
            string scriptClassName                   = null;
            IEnumerable <string> usings              = null;
            OptimizationLevel    optimizationLevel   = OptimizationLevel.Debug;
            bool   checkOverflow                     = false;
            bool   allowUnsafe                       = false;
            string cryptoKeyContainer                = null;
            string cryptoKeyFile                     = null;
            ImmutableArray <byte> cryptoPublicKey    = default(ImmutableArray <byte>);
            bool?            delaySign               = null;
            Platform         platform                = 0;
            ReportDiagnostic generalDiagnosticOption = 0;
            int warningLevel = 0;
            IEnumerable <KeyValuePair <string, ReportDiagnostic> > specificDiagnosticOptions = null;
            bool                      concurrentBuild                  = false;
            bool                      deterministic                    = false;
            DateTime                  currentLocalTime                 = default(DateTime);
            bool                      debugPlusMode                    = false;
            XmlReferenceResolver      xmlReferenceResolver             = new XmlFileResolver(null);
            SourceReferenceResolver   sourceReferenceResolver          = new SourceFileResolver(ImmutableArray <string> .Empty, null);
            SyntaxTreeOptionsProvider syntaxTreeOptionsProvider        = null;
            MetadataReferenceResolver metadataReferenceResolver        = new MetadataReferenceResolverWithEquality();
            AssemblyIdentityComparer  assemblyIdentityComparer         = AssemblyIdentityComparer.Default;  // Currently uses reference equality
            StrongNameProvider        strongNameProvider               = new DesktopStrongNameProvider();
            MetadataImportOptions     metadataImportOptions            = 0;
            bool                      referencesSupersedeLowerVersions = false;
            bool                      reportSuppressedDiagnostics      = false;
            var topLevelBinderFlags = BinderFlags.None;
            var publicSign          = false;
            NullableContextOptions nullableContextOptions = NullableContextOptions.Disable;

            return(new CSharpCompilationOptions(OutputKind.ConsoleApplication,
                                                reportSuppressedDiagnostics, moduleName, mainTypeName, scriptClassName, usings,
                                                optimizationLevel, checkOverflow, allowUnsafe, cryptoKeyContainer, cryptoKeyFile,
                                                cryptoPublicKey, delaySign, platform, generalDiagnosticOption, warningLevel,
                                                specificDiagnosticOptions, concurrentBuild, deterministic, currentLocalTime,
                                                debugPlusMode, xmlReferenceResolver, sourceReferenceResolver,
                                                syntaxTreeOptionsProvider, metadataReferenceResolver, assemblyIdentityComparer,
                                                strongNameProvider, metadataImportOptions, referencesSupersedeLowerVersions,
                                                publicSign, topLevelBinderFlags, nullableContextOptions));
        }
Ejemplo n.º 2
0
        internal static bool IsEffective(
            this DiagnosticDescriptor descriptor,
            SyntaxTree syntaxTree,
            CompilationOptions compilationOptions,
            CancellationToken cancellationToken = default)
        {
            var reportDiagnostic = Microsoft.CodeAnalysis.ReportDiagnostic.Default;

            SyntaxTreeOptionsProvider provider = compilationOptions.SyntaxTreeOptionsProvider;

            if (provider is not null &&
                !provider.TryGetGlobalDiagnosticValue(descriptor.Id, cancellationToken, out reportDiagnostic) &&
                !provider.TryGetDiagnosticValue(syntaxTree, descriptor.Id, cancellationToken, out reportDiagnostic))
            {
                reportDiagnostic = compilationOptions.SpecificDiagnosticOptions.GetValueOrDefault(descriptor.Id);
            }

            return(reportDiagnostic switch
            {
                Microsoft.CodeAnalysis.ReportDiagnostic.Default => descriptor.IsEnabledByDefault,
                Microsoft.CodeAnalysis.ReportDiagnostic.Suppress => false,
                _ => true,
            });