コード例 #1
0
 private void StopTheStopwatchAndLog(
     Stopwatch stopwatch,
     string providerName,
     ProviderCollectingMode providerCollectingMode)
 {
     stopwatch.Stop();
     logger.LogTrace(logWithAnsiConsoleMarkup
         ? $"     [green]{providerName}[/] collect base rules by collecting mode: [green]{providerCollectingMode}[/] - time: [green]{stopwatch.Elapsed.GetPrettyTime()}[/]"
         : $"     {providerName} collect base rules by collecting mode: {providerCollectingMode} - time: {stopwatch.Elapsed.GetPrettyTime()}");
 }
    public async Task CollectBaseRules(ProviderCollectingMode providerCollectingMode)
    {
        // Arrange
        var provider = new MicrosoftCodeAnalysisNetAnalyzersProvider(NullLogger.Instance);

        // Act
        var actual = await provider.CollectBaseRules(providerCollectingMode);

        // Assert
        Assert.NotNull(actual);
        Assert.NotNull(actual.Name);
        Assert.Equal(MicrosoftCodeAnalysisNetAnalyzersProvider.Name, actual.Name);
        Assert.NotNull(actual.Rules);
        Assert.True(actual.Rules.Count >= 252);
    }
コード例 #3
0
    public async Task CollectBaseRules(ProviderCollectingMode providerCollectingMode)
    {
        // Arrange
        var provider = new MeziantouProvider(NullLogger.Instance);

        // Act
        var actual = await provider.CollectBaseRules(providerCollectingMode);

        // Assert
        Assert.NotNull(actual);
        Assert.NotNull(actual.Name);
        Assert.Equal(MeziantouProvider.Name, actual.Name);
        Assert.NotNull(actual.Rules);
        Assert.True(actual.Rules.Count >= 101);
    }
コード例 #4
0
    public async Task CollectBaseRules(ProviderCollectingMode providerCollectingMode)
    {
        // Arrange
        var provider = new MicrosoftCompilerErrorsProviderUndocumented(NullLogger.Instance);

        // Act
        var actual = await provider.CollectBaseRules(providerCollectingMode);

        // Assert
        Assert.NotNull(actual);
        Assert.NotNull(actual.Name);
        Assert.Equal(MicrosoftCompilerErrorsProviderUndocumented.Name, actual.Name);
        Assert.NotNull(actual.Rules);
        Assert.True(actual.Rules.Count >= 46);
    }
コード例 #5
0
    public async Task CollectBaseRules(ProviderCollectingMode providerCollectingMode)
    {
        // Arrange
        var provider = new SonarAnalyzerCSharpProvider(NullLogger.Instance);

        // Act
        var actual = await provider.CollectBaseRules(providerCollectingMode);

        // Assert
        Assert.NotNull(actual);
        Assert.NotNull(actual.Name);
        Assert.Equal(SonarAnalyzerCSharpProvider.Name, actual.Name);
        Assert.NotNull(actual.Rules);
        Assert.True(actual.Rules.Count >= 400);
    }
コード例 #6
0
    public async Task CollectBaseRules(ProviderCollectingMode providerCollectingMode)
    {
        // Arrange
        var provider = new SecurityCodeScanVs2019Provider(NullLogger.Instance);

        // Act
        var actual = await provider.CollectBaseRules(providerCollectingMode);

        // Assert
        Assert.NotNull(actual);
        Assert.NotNull(actual.Name);
        Assert.Equal(SecurityCodeScanVs2019Provider.Name, actual.Name);
        Assert.NotNull(actual.Rules);
        Assert.True(actual.Rules.Count >= 31);
    }
コード例 #7
0
    public async Task <AnalyzerProviderBaseRuleData> CollectBaseRules(
        ProviderCollectingMode providerCollectingMode)
    {
        var data = CreateData();

        var stopwatch = Stopwatch.StartNew();

        logger.LogTrace($"     [green]{data.Name}[/] collect base rules");

        if (providerCollectingMode == ProviderCollectingMode.LocalCache)
        {
            var dataFromTemp = await ReadFromTempFolder(data);

            if (dataFromTemp is not null)
            {
                StopTheStopwatchAndLog(stopwatch, data.Name, providerCollectingMode);

                return(dataFromTemp);
            }
        }

        if (providerCollectingMode != ProviderCollectingMode.ReCollect)
        {
            var dataFromGithub = await ReadFromGithub(data);

            if (dataFromGithub is not null)
            {
                await WriteToTempFolder(dataFromGithub);

                StopTheStopwatchAndLog(stopwatch, data.Name, providerCollectingMode);

                return(dataFromGithub);
            }
        }

        await ReCollect(data);
        await WriteToTempFolder(data);

        StopTheStopwatchAndLog(stopwatch, data.Name, providerCollectingMode);

        return(data);
    }
    public static async Task <Collection <AnalyzerProviderBaseRuleData> > GetAnalyzerProviderBaseRules(
        ILogger logger,
        ProviderCollectingMode providerCollectingMode,
        bool logWithAnsiConsoleMarkup)
    {
        var stopwatch = Stopwatch.StartNew();

        logger.LogTrace("     Collecting rules metadata");

        var analyzerProviders         = new AnalyzerProviderCollector(logger);
        var analyzerProviderBaseRules = await analyzerProviders.CollectAllBaseRules(providerCollectingMode, logWithAnsiConsoleMarkup);

        stopwatch.Stop();
        logger.LogTrace($"     Collecting rules metadata time: {stopwatch.Elapsed.GetPrettyTime()}");

        LogAnalyzerProviderInformation(logger, analyzerProviderBaseRules);
        LogAnalyzerProviderErrors(logger, analyzerProviderBaseRules);

        return(analyzerProviderBaseRules);
    }
コード例 #9
0
    public async Task <Collection <AnalyzerProviderBaseRuleData> > CollectAllBaseRules(
        ProviderCollectingMode providerCollectingMode,
        bool logWithAnsiConsoleMarkup)
    {
        var data = new Collection <AnalyzerProviderBaseRuleData>();

        var asyncFixerProvider = new AsyncFixerProvider(logger, logWithAnsiConsoleMarkup);
        var asyncFixerTask     = asyncFixerProvider.CollectBaseRules(providerCollectingMode);

        var asyncifyProvider = new AsyncifyProvider(logger, logWithAnsiConsoleMarkup);
        var asyncifyTask     = asyncifyProvider.CollectBaseRules(providerCollectingMode);

        var meziantouProvider = new MeziantouProvider(logger, logWithAnsiConsoleMarkup);
        var meziantouTask     = meziantouProvider.CollectBaseRules(providerCollectingMode);

        var microsoftCodeAnalysisNetAnalyzersProvider = new MicrosoftCodeAnalysisNetAnalyzersProvider(logger, logWithAnsiConsoleMarkup);
        var microsoftCodeAnalysisNetAnalyzersTask     = microsoftCodeAnalysisNetAnalyzersProvider.CollectBaseRules(providerCollectingMode);

        var microsoftCompilerErrorsProvider = new MicrosoftCompilerErrorsProvider(logger, logWithAnsiConsoleMarkup);
        var microsoftCompilerErrorsTask     = microsoftCompilerErrorsProvider.CollectBaseRules(providerCollectingMode);

        var microsoftCodeAnalysisNetAnalyzersProviderUndocumented = new MicrosoftCompilerErrorsProviderUndocumented(logger, logWithAnsiConsoleMarkup);
        var microsoftCompilerErrorsUndocumentedTask = microsoftCodeAnalysisNetAnalyzersProviderUndocumented.CollectBaseRules(ProviderCollectingMode.ReCollect);

        var microsoftVisualStudioThreadingAnalyzersProvider     = new MicrosoftVisualStudioThreadingAnalyzersProvider(logger, logWithAnsiConsoleMarkup);
        var microsoftVisualStudioThreadingAnalyzersProviderTask = microsoftVisualStudioThreadingAnalyzersProvider.CollectBaseRules(ProviderCollectingMode.ReCollect);

        var nSubstituteAnalyzersProvider     = new NSubstituteAnalyzersProvider(logger, logWithAnsiConsoleMarkup);
        var nSubstituteAnalyzersProviderTask = nSubstituteAnalyzersProvider.CollectBaseRules(ProviderCollectingMode.ReCollect);

        var securityCodeScanVs2019Provider = new SecurityCodeScanVs2019Provider(logger, logWithAnsiConsoleMarkup);
        var securityCodeScanVs2019Task     = securityCodeScanVs2019Provider.CollectBaseRules(providerCollectingMode);

        var styleCopAnalyzersProvider = new StyleCopAnalyzersProvider(logger, logWithAnsiConsoleMarkup);
        var styleCopAnalyzersTask     = styleCopAnalyzersProvider.CollectBaseRules(providerCollectingMode);

        var sonarAnalyzerCSharpProvider = new SonarAnalyzerCSharpProvider(logger, logWithAnsiConsoleMarkup);
        var sonarAnalyzerCSharpTask     = sonarAnalyzerCSharpProvider.CollectBaseRules(providerCollectingMode);

        var wpfAnalyzersProvider     = new WpfAnalyzersProvider(logger, logWithAnsiConsoleMarkup);
        var wpfAnalyzersProviderTask = wpfAnalyzersProvider.CollectBaseRules(providerCollectingMode);

        var xunitProvider     = new XunitProvider(logger, logWithAnsiConsoleMarkup);
        var xunitProviderTask = xunitProvider.CollectBaseRules(providerCollectingMode);

        await Task.WhenAll(
            asyncFixerTask,
            asyncifyTask,
            meziantouTask,
            microsoftCodeAnalysisNetAnalyzersTask,
            microsoftCompilerErrorsTask,
            microsoftCompilerErrorsUndocumentedTask,
            microsoftVisualStudioThreadingAnalyzersProviderTask,
            nSubstituteAnalyzersProviderTask,
            securityCodeScanVs2019Task,
            styleCopAnalyzersTask,
            sonarAnalyzerCSharpTask,
            wpfAnalyzersProviderTask,
            xunitProviderTask);

        data.Add(await asyncFixerTask);
        data.Add(await asyncifyTask);
        data.Add(await meziantouTask);
        data.Add(await microsoftCodeAnalysisNetAnalyzersTask);
        data.Add(await microsoftCompilerErrorsTask);
        data.Add(await microsoftCompilerErrorsUndocumentedTask);
        data.Add(await microsoftVisualStudioThreadingAnalyzersProviderTask);
        data.Add(await nSubstituteAnalyzersProviderTask);
        data.Add(await securityCodeScanVs2019Task);
        data.Add(await styleCopAnalyzersTask);
        data.Add(await sonarAnalyzerCSharpTask);
        data.Add(await wpfAnalyzersProviderTask);
        data.Add(await xunitProviderTask);

        return(data);
    }
コード例 #10
0
 private static string CreateArgumentFetchMode(ProviderCollectingMode collectingMode)
 => @$ "{ArgumentCommandConstants.LongFetchMode} {collectingMode}";