Esempio n. 1
0
        public virtual EditorConfigOptions InitializeEditorConfigOptions(AnalyzerOptions analyzerOptions, Compilation compilation, out Diagnostic error)
        {
            error = null;
            EditorConfigOptions options = new EditorConfigOptions(DefaultDuplicateTokenThreshold);
            var editorConfigHelper      = new AdditionalFilesHelper(analyzerOptions, compilation);

            ExceptionsOptions exceptionsOptions = editorConfigHelper.LoadExceptionsOptions(Rule.Id);

            options.IgnoreExceptionsFile   = exceptionsOptions.IgnoreExceptionsFile;
            options.GenerateExceptionsFile = exceptionsOptions.GenerateExceptionsFile;

            string strTokenCount = editorConfigHelper.GetValueFromEditorConfig(Rule.Id, @"token_count");

            if (!string.IsNullOrWhiteSpace(strTokenCount))
            {
                strTokenCount = strTokenCount.Trim();
                bool isParseSuccessful = int.TryParse(strTokenCount, out int duplicateTokenThreshold);

                if (!isParseSuccessful)
                {
                    duplicateTokenThreshold = DefaultDuplicateTokenThreshold;
                    error = Diagnostic.Create(InvalidTokenCountRule, null, strTokenCount);
                }

                const int MaxTokenCount = 200;
                if (duplicateTokenThreshold > MaxTokenCount)
                {
                    error = Diagnostic.Create(TokenCountTooBigRule, null, duplicateTokenThreshold, MaxTokenCount);
                    duplicateTokenThreshold = MaxTokenCount;
                }
                const int MinTokenCount = 20;
                if (duplicateTokenThreshold < MinTokenCount)
                {
                    error = Diagnostic.Create(TokenCountTooSmallRule, null, duplicateTokenThreshold, MinTokenCount);
                    duplicateTokenThreshold = MinTokenCount;
                }
                options.TokenCount = duplicateTokenThreshold;
            }
            return(options);
        }