private static StyleCopSettings GetStyleCopSettings(SourceText text, DeserializationFailureBehavior failureBehavior)
        {
            try
            {
                var root = JsonConvert.DeserializeObject <SettingsFile>(text.ToString());
                return(root.Settings);
            }
            catch (JsonException) when(failureBehavior == DeserializationFailureBehavior.ReturnDefaultSettings)
            {
                // The settings file is invalid -> return the default settings.
            }

            return(new StyleCopSettings());
        }
Ejemplo n.º 2
0
        private static BuilderCopSettings GetBuilderCopSettings(SourceText text, DeserializationFailureBehavior failureBehavior)
        {
            try {
                JObject settingsObject = JsonConvert.DeserializeObject <JObject>(text.ToString());
                ValidateResource(
                    settingsObject,
                    typeof(BuilderCopSettings).GetTypeInfo().Assembly.GetManifestResourceStream("TestDataBuilderGenerator.Settings.Resources.BuilderCop.json-schema.json"));
                return(new BuilderCopSettings(settingsObject.SelectToken("settings")));
            } catch (Exception ex) when(failureBehavior == DeserializationFailureBehavior.ReturnDefaultSettings)
            {
                // The settings file is invalid -> return the default settings.
                Debug.WriteLine(ex.Message);
            }

            return(new BuilderCopSettings());
        }
Ejemplo n.º 3
0
        internal static StyleCopSettings GetStyleCopSettings(this AnalysisContext context, AnalyzerOptions options, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
        {
            SourceText text = TryGetStyleCopSettingsText(options, cancellationToken);
            if (text == null)
            {
                return new StyleCopSettings();
            }

            if (failureBehavior == DeserializationFailureBehavior.ReturnDefaultSettings)
            {
                StyleCopSettings settings;
                if (!context.TryGetValue(text, SettingsValueProvider, out settings))
                {
                    return new StyleCopSettings();
                }

                return settings;
            }

            return JsonConvert.DeserializeObject<SettingsFile>(text.ToString()).Settings;
        }
Ejemplo n.º 4
0
#pragma warning disable RS1012 // Start action has no registered actions.
        internal static StyleCopSettings GetStyleCopSettings(this CompilationStartAnalysisContext context, AnalyzerOptions options, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
#pragma warning restore RS1012 // Start action has no registered actions.
        {
            string     settingsFilePath;
            SourceText text = TryGetStyleCopSettingsText(options, cancellationToken, out settingsFilePath);

            if (text == null)
            {
                return(new StyleCopSettings());
            }

            if (failureBehavior == DeserializationFailureBehavior.ReturnDefaultSettings)
            {
                StyleCopSettings settings;
                if (!context.TryGetValue(text, SettingsValueProvider, out settings))
                {
                    return(new StyleCopSettings());
                }

                return(settings);
            }

            return(GetStyleCopSettings(settingsFilePath, text, failureBehavior));
        }
        private static StyleCopSettings GetStyleCopSettings(ImmutableArray <AdditionalText> additionalFiles, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
        {
            try
            {
                foreach (var additionalFile in additionalFiles)
                {
                    if (Path.GetFileName(additionalFile.Path).ToLowerInvariant() == SettingsFileName)
                    {
                        SourceText additionalTextContent = GetText(additionalFile, cancellationToken);
                        var        root = JsonConvert.DeserializeObject <SettingsFile>(additionalTextContent.ToString());
                        return(root.Settings);
                    }
                }
            }
            catch (JsonException) when(failureBehavior == DeserializationFailureBehavior.ReturnDefaultSettings)
            {
                // The settings file is invalid -> return the default settings.
            }

            return(new StyleCopSettings());
        }
Ejemplo n.º 6
0
        private static StyleCopSettings GetStyleCopSettings(AnalyzerOptions options, SyntaxTree tree, ImmutableArray <AdditionalText> additionalFiles, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
        {
            foreach (var additionalFile in additionalFiles)
            {
                if (IsStyleCopSettingsFile(additionalFile.Path))
                {
                    SourceText additionalTextContent = additionalFile.GetText(cancellationToken);
                    return(GetStyleCopSettings(options, tree, additionalFile.Path, additionalTextContent, failureBehavior));
                }
            }

            if (tree != null)
            {
                var optionsProvider = options.AnalyzerConfigOptionsProvider().GetOptions(tree);
                return(new StyleCopSettings(new JsonObject(), optionsProvider));
            }

            return(new StyleCopSettings());
        }
        private static DependencyCopSettings GetDependencyCopSettings(string path, SourceText text, DeserializationFailureBehavior failureBehavior)
        {
            try
            {
                var jsonText = text.ToString();
                if (string.IsNullOrWhiteSpace(jsonText))
                {
                    throw new JsonException("The dependency cop settings file is empty.");
                }

                return(JsonConvert.DeserializeObject <DependencyCopSettings>(jsonText));
            }
            catch (JsonException) when(failureBehavior == DeserializationFailureBehavior.ReturnDefaultSettings)
            {
                // The settings file is invalid -> return the default settings.
            }

            return(DependencyCopSettings.Default);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// Gets the StyleCop settings.
 /// </summary>
 /// <param name="options">The analyzer options that will be used to determine the StyleCop settings.</param>
 /// <param name="failureBehavior">The behavior of the method when a <see cref="JsonException"/> occurs while
 /// deserializing the settings file.</param>
 /// <param name="cancellationToken">The cancellation token that the operation will observe.</param>
 /// <returns>A <see cref="StyleCopSettings"/> instance that represents the StyleCop settings for the given context.</returns>
 internal static StyleCopSettings GetStyleCopSettings(this AnalyzerOptions options, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
 {
     return GetStyleCopSettings(options != null ? options.AdditionalFiles : ImmutableArray.Create<AdditionalText>(), failureBehavior, cancellationToken);
 }
Ejemplo n.º 9
0
        private static StyleCopSettings GetStyleCopSettings(SourceText text, DeserializationFailureBehavior failureBehavior)
        {
            try
            {
                var root = JsonConvert.DeserializeObject<SettingsFile>(text.ToString());
                return root.Settings;
            }
            catch (JsonException) when (failureBehavior == DeserializationFailureBehavior.ReturnDefaultSettings)
            {
                // The settings file is invalid -> return the default settings.
            }

            return new StyleCopSettings();
        }
Ejemplo n.º 10
0
 /// <summary>
 /// Gets the StyleCop settings.
 /// </summary>
 /// <param name="options">The analyzer options that will be used to determine the StyleCop settings.</param>
 /// <param name="failureBehavior">The behavior of the method when a <see cref="JsonParseException"/> or
 /// <see cref="InvalidSettingsException"/> occurs while deserializing the settings file.</param>
 /// <param name="cancellationToken">The cancellation token that the operation will observe.</param>
 /// <returns>A <see cref="StyleCopSettings"/> instance that represents the StyleCop settings for the given context.</returns>
 internal static StyleCopSettings GetStyleCopSettings(this AnalyzerOptions options, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
 {
     return(GetStyleCopSettings(options != null ? options.AdditionalFiles : ImmutableArray.Create <AdditionalText>(), failureBehavior, cancellationToken));
 }
        private static void CreateAndAddStyleCopSettingsToCache(AdditionalText additionalFile, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken, Func <SourceText, SourceTextValueProvider <StyleCopSettings>, StyleCopSettings> contextSettingsProvider)
        {
            SourceText text = GetStyleCopSettingsText(additionalFile, cancellationToken);

            if (text == null)
            {
                lock (settingsByFileName)
                {
                    settingsByFileName.Add(additionalFile.Path, new StyleCopSettings());
                }

                return;
            }

            if (failureBehavior == DeserializationFailureBehavior.ReturnDefaultSettings)
            {
                StyleCopSettings settings = contextSettingsProvider(text, SettingsValueProvider);
                if (settings == null)
                {
                    lock (settingsByFileName)
                    {
                        settingsByFileName.Add(additionalFile.Path, new StyleCopSettings());
                    }

                    return;
                }

                lock (settingsByFileName)
                {
                    settingsByFileName.Add(additionalFile.Path, settings);
                }

                return;
            }

            lock (settingsByFileName)
            {
                settingsByFileName.Add(additionalFile.Path, JsonConvert.DeserializeObject <SettingsFile>(text.ToString()).Settings);
            }

            return;
        }
        private static StyleCopSettings GetCachedStyleCopSettings(ImmutableArray <AdditionalText> additionalFiles, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken, Func <SourceText, SourceTextValueProvider <StyleCopSettings>, StyleCopSettings> contextSettingsProvider)
        {
            foreach (var additionalFile in additionalFiles)
            {
                if (Path.GetFileName(additionalFile.Path).ToLowerInvariant() == SettingsFileName)
                {
                    lock (settingsByFileName)
                    {
                        if (!settingsByFileName.ContainsKey(additionalFile.Path))
                        {
                            CreateAndAddStyleCopSettingsToCache(additionalFile, failureBehavior, cancellationToken, contextSettingsProvider);
                        }

                        return(settingsByFileName[additionalFile.Path]);
                    }
                }
            }

            return(null);
        }
 private static StyleCopSettings GetCachedStyleCopSettings(AnalyzerOptions options, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken, Func <SourceText, SourceTextValueProvider <StyleCopSettings>, StyleCopSettings> contextSettingsProvider)
 {
     return(GetCachedStyleCopSettings(options.AdditionalFiles, failureBehavior, cancellationToken, contextSettingsProvider));
 }
#pragma warning disable RS1012 // Start action has no registered actions
        private static StyleCopSettings GetCachedStyleCopSettings(CompilationStartAnalysisContext context, AnalyzerOptions options, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
#pragma warning restore RS1012 // Start action has no registered actions
        {
            return(GetCachedStyleCopSettings(
                       options,
                       failureBehavior,
                       cancellationToken,
                       (sourceText, sourceTextValueProvider) =>
            {
                StyleCopSettings settings = null;
                context.TryGetValue(sourceText, sourceTextValueProvider, out settings);
                return settings;
            }));
        }
 private static StyleCopSettings GetCachedStyleCopSettings(AnalysisContext context, AnalyzerOptions options, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
 {
     return(GetCachedStyleCopSettings(
                options,
                failureBehavior,
                cancellationToken,
                (sourceText, sourceTextValueProvider) =>
     {
         StyleCopSettings settings = null;
         context.TryGetValue(sourceText, sourceTextValueProvider, out settings);
         return settings;
     }));
 }
#pragma warning disable RS1012 // Start action has no registered actions.
        internal static StyleCopSettings GetStyleCopSettings(this CompilationStartAnalysisContext context, AnalyzerOptions options, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
#pragma warning restore RS1012 // Start action has no registered actions.
        {
            return(GetCachedStyleCopSettings(context, options, failureBehavior, cancellationToken));
        }
Ejemplo n.º 17
0
        private static StyleCopSettings GetStyleCopSettings(string path, SourceText text, DeserializationFailureBehavior failureBehavior)
        {
            try
            {
                var rootValue = JsonReader.Parse(text.ToString());
                if (!rootValue.IsJsonObject)
                {
                    throw new JsonParseException(
                              $"Settings file at '{path}' was missing or empty.",
                              JsonParseException.ErrorType.InvalidOrUnexpectedCharacter,
                              default(TextPosition));
                }

                var settingsObject = rootValue.AsJsonObject["settings"];
                if (settingsObject.IsJsonObject)
                {
                    return(new StyleCopSettings(settingsObject.AsJsonObject));
                }
                else if (settingsObject.IsNull)
                {
                    throw new InvalidSettingsException("\"settings\" must be a JSON object.");
                }

                return(new StyleCopSettings());
            }
            catch (InvalidSettingsException) when(failureBehavior == DeserializationFailureBehavior.ReturnDefaultSettings)
            {
                // The settings file is invalid -> return the default settings.
            }
            catch (JsonParseException) when(failureBehavior == DeserializationFailureBehavior.ReturnDefaultSettings)
            {
                // The settings file is invalid -> return the default settings.
            }

            return(new StyleCopSettings());
        }
Ejemplo n.º 18
0
        private static StyleCopSettings GetStyleCopSettings(ImmutableArray <AdditionalText> additionalFiles, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
        {
            foreach (var additionalFile in additionalFiles)
            {
                if (IsStyleCopSettingsFile(additionalFile.Path))
                {
                    SourceText additionalTextContent = additionalFile.GetText(cancellationToken);
                    return(GetStyleCopSettings(additionalFile.Path, additionalTextContent, failureBehavior));
                }
            }

            return(new StyleCopSettings());
        }
        private static StyleCopSettings GetStyleCopSettings(ImmutableArray <AdditionalText> additionalFiles, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
        {
            return(GetCachedStyleCopSettings(
                       additionalFiles,
                       failureBehavior,
                       cancellationToken,
                       (sourceText, sourceTextValueProvider) =>
            {
                SourceText additionalTextContent = sourceText;
                var root = JsonConvert.DeserializeObject <SettingsFile>(additionalTextContent.ToString());

                if (root == null)
                {
                    throw new JsonException($"Settings file at 'UNKNOWN' was missing or empty.");
                }

                return root.Settings;
            }));
        }
Ejemplo n.º 20
0
        internal static StyleCopSettings GetStyleCopSettings(this AnalysisContext context, AnalyzerOptions options, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
        {
            string     settingsFilePath;
            SourceText text = TryGetStyleCopSettingsText(options, cancellationToken, out settingsFilePath);

            if (text == null)
            {
                return(new StyleCopSettings());
            }

            if (failureBehavior == DeserializationFailureBehavior.ReturnDefaultSettings)
            {
                StyleCopSettings settings;
                if (!context.TryGetValue(text, SettingsValueProvider, out settings))
                {
                    return(new StyleCopSettings());
                }

                return(settings);
            }

            return(GetStyleCopSettings(settingsFilePath, text, failureBehavior));
        }
 internal static StyleCopSettings GetStyleCopSettings(this AnalysisContext context, AnalyzerOptions options, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
 {
     return(GetCachedStyleCopSettings(context, options, failureBehavior, cancellationToken));
 }
Ejemplo n.º 22
0
        private static StyleCopSettings GetStyleCopSettings(ImmutableArray<AdditionalText> additionalFiles, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
        {
            try
            {
                foreach (var additionalFile in additionalFiles)
                {
                    if (Path.GetFileName(additionalFile.Path).ToLowerInvariant() == SettingsFileName)
                    {
                        SourceText additionalTextContent = additionalFile.GetText(cancellationToken);
                        var root = JsonConvert.DeserializeObject<SettingsFile>(additionalTextContent.ToString());
                        return root.Settings;
                    }
                }
            }
            catch (JsonException) when (failureBehavior == DeserializationFailureBehavior.ReturnDefaultSettings)
            {
                // The settings file is invalid -> return the default settings.
            }

            return new StyleCopSettings();
        }
Ejemplo n.º 23
0
        private static BuilderCopSettings GetBuilderCopSettings(ImmutableArray <AdditionalText> additionalFiles, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
        {
            foreach (var additionalFile in additionalFiles)
            {
                if (Path.GetFileName(additionalFile.Path).ToLowerInvariant() == SettingsFileName)
                {
                    SourceText additionalTextContent = additionalFile.GetText(cancellationToken);
                    return(GetBuilderCopSettings(additionalTextContent, failureBehavior));
                }
            }

            return(new BuilderCopSettings());
        }
Ejemplo n.º 24
0
        internal static StyleCopSettings GetStyleCopSettings(this AnalysisContext context, AnalyzerOptions options, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
        {
            var text = TryGetStyleCopSettingsText(options, cancellationToken);

            if (text == null)
            {
                return(new StyleCopSettings());
            }

            if (failureBehavior == DeserializationFailureBehavior.ReturnDefaultSettings)
            {
                StyleCopSettings settings;
                if (!context.TryGetValue(text, SettingsValueProvider, out settings))
                {
                    return(new StyleCopSettings());
                }

                return(settings);
            }

            return(JsonConvert.DeserializeObject <SettingsFile>(text.ToString()).Settings);
        }
Ejemplo n.º 25
0
        internal static BuilderCopSettings GetBuilderCopSettings(this CompilationStartAnalysisContext context, AnalyzerOptions options, DeserializationFailureBehavior failureBehavior, CancellationToken cancellationToken)
        {
            SourceText text = TryGetBuilderCopSettingsText(options, cancellationToken);

            if (text == null)
            {
                return(new BuilderCopSettings());
            }

            if (failureBehavior == DeserializationFailureBehavior.ReturnDefaultSettings)
            {
                BuilderCopSettings settings;
                if (!context.TryGetValue(text, SettingsValueProvider, out settings))
                {
                    return(new BuilderCopSettings());
                }

                return(settings);
            }

            return(GetBuilderCopSettings(text, failureBehavior));
        }