コード例 #1
0
        private ScriptCompiler(LogFactory logFactory, RuntimeDependencyResolver runtimeDependencyResolver)
        {
            _logger                   = logFactory(typeof(ScriptCompiler));
            _scriptEnvironment        = ScriptEnvironment.Default;
            RuntimeDependencyResolver = runtimeDependencyResolver;

            // nullable diagnostic options should be set to errors
            for (var i = 8600; i <= 8655; i++)
            {
                SpecificDiagnosticOptions.Add($"CS{i}", ReportDiagnostic.Error);
            }
        }
コード例 #2
0
        private void SetCompilationOptions <TReturn>(ScriptContext context, Script <TReturn> script)
        {
            var compilationOptionsField = typeof(CSharpCompilation).GetTypeInfo().GetDeclaredField("_options");
            var compilation             = script.GetCompilation();
            var compilationOptions      = (CSharpCompilationOptions)compilationOptionsField.GetValue(compilation);

            compilationOptions = compilationOptions.WithSpecificDiagnosticOptions(SpecificDiagnosticOptions.ToImmutableDictionary());
            compilationOptionsField.SetValue(compilation, compilationOptions);

            if (context.OptimizationLevel == OptimizationLevel.Release)
            {
                _logger.Debug("Configuration/Optimization mode: Release");
                SetReleaseOptimizationLevel(compilation);
            }
            else
            {
                _logger.Debug("Configuration/Optimization mode: Debug");
            }
        }
コード例 #3
0
        internal override Diagnostic FilterDiagnostic(Diagnostic diagnostic)
        {
            // return PhpDiagnosticFilter.Filter(diagnostic, WarningLevel, GeneralDiagnosticOption, SpecificDiagnosticOptions);

            if (diagnostic == null)
            {
                return null;
            }

            ReportDiagnostic reportAction;

            if (SpecificDiagnosticOptions != null && SpecificDiagnosticOptions.TryGetValue(diagnostic.Id, out ReportDiagnostic d))
            {
                reportAction = d;
            }
            else
            {
                reportAction = ReportDiagnostic.Default;
            }

            return diagnostic.WithReportDiagnostic(reportAction);
        }