From 3a4823f1dec15365685ea1dc7d6007e9e563211e Mon Sep 17 00:00:00 2001 From: Josef Pihrt Date: Tue, 28 Nov 2023 21:02:38 +0100 Subject: [PATCH 1/5] Fix analyzer RCS1093 --- .../RCS1093FileContainsNoCodeTests.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Tests/Analyzers.Tests/RCS1093FileContainsNoCodeTests.cs b/src/Tests/Analyzers.Tests/RCS1093FileContainsNoCodeTests.cs index 30f5dd22fb..2ef0c7aa28 100644 --- a/src/Tests/Analyzers.Tests/RCS1093FileContainsNoCodeTests.cs +++ b/src/Tests/Analyzers.Tests/RCS1093FileContainsNoCodeTests.cs @@ -41,4 +41,18 @@ class C "); } + + [Fact, Trait(Traits.Analyzer, DiagnosticIdentifiers.FileContainsNoCode)] + public async Task TestNoDiagnostic_PragmaWarningDirective() + { + await VerifyNoDiagnosticAsync(@"#pragma warning disable RCS1093 // Remove file with no code. +//using System; +//using System.Collections.Generic; +//using System.Data; +//using System.IO; + +//public class TestClass +//{ +//}"); + } } From ab673edcbb5037bf6acfd3329842c5b60423a33c Mon Sep 17 00:00:00 2001 From: Josef Pihrt Date: Tue, 28 Nov 2023 21:03:00 +0100 Subject: [PATCH 2/5] update --- .../Analysis/FileContainsNoCodeAnalyzer.cs | 42 ++++++++++++++++--- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/src/Analyzers/CSharp/Analysis/FileContainsNoCodeAnalyzer.cs b/src/Analyzers/CSharp/Analysis/FileContainsNoCodeAnalyzer.cs index 2dfa99c6bf..3f8227ce2c 100644 --- a/src/Analyzers/CSharp/Analysis/FileContainsNoCodeAnalyzer.cs +++ b/src/Analyzers/CSharp/Analysis/FileContainsNoCodeAnalyzer.cs @@ -6,6 +6,7 @@ using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Diagnostics; using Microsoft.CodeAnalysis.Text; +using System; namespace Roslynator.CSharp.Analysis; @@ -40,12 +41,43 @@ private static void AnalyzeCompilationUnit(SyntaxNodeAnalysisContext context) if (compilationUnit.Span == token.Span && !token.HasTrailingTrivia - && !token.LeadingTrivia.Any(f => f.IsKind( - SyntaxKind.IfDirectiveTrivia, - SyntaxKind.ElseDirectiveTrivia, - SyntaxKind.ElifDirectiveTrivia, - SyntaxKind.EndIfDirectiveTrivia))) + && !token.LeadingTrivia.Any(trivia => + { + switch (trivia.Kind()) + { + case SyntaxKind.IfDirectiveTrivia: + case SyntaxKind.ElseDirectiveTrivia: + case SyntaxKind.ElifDirectiveTrivia: + case SyntaxKind.EndIfDirectiveTrivia: + { + return false; + } + case SyntaxKind.PragmaWarningDirectiveTrivia: + { + var pragma = (PragmaWarningDirectiveTriviaSyntax)trivia.GetStructure(); + + foreach (ExpressionSyntax errorCode in pragma.ErrorCodes) + { + if (errorCode is IdentifierNameSyntax identifierName + && string.Equals(identifierName.Identifier.ValueText, "RCS1093", StringComparison.OrdinalIgnoreCase)) + { + return false; + } + } + + return true; + } + default: + { + return true; + } + } + })) { + foreach (var trivia in token.LeadingTrivia) + { + } + SyntaxTree syntaxTree = compilationUnit.SyntaxTree; if (!GeneratedCodeUtility.IsGeneratedCodeFile(syntaxTree.FilePath)) From 2adef205816d7d12bbe37f1b3bcab5c9a8079f7f Mon Sep 17 00:00:00 2001 From: Josef Pihrt Date: Tue, 28 Nov 2023 21:08:36 +0100 Subject: [PATCH 3/5] update --- .../Analysis/FileContainsNoCodeAnalyzer.cs | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/Analyzers/CSharp/Analysis/FileContainsNoCodeAnalyzer.cs b/src/Analyzers/CSharp/Analysis/FileContainsNoCodeAnalyzer.cs index 3f8227ce2c..c8d4346f5d 100644 --- a/src/Analyzers/CSharp/Analysis/FileContainsNoCodeAnalyzer.cs +++ b/src/Analyzers/CSharp/Analysis/FileContainsNoCodeAnalyzer.cs @@ -50,7 +50,7 @@ private static void AnalyzeCompilationUnit(SyntaxNodeAnalysisContext context) case SyntaxKind.ElifDirectiveTrivia: case SyntaxKind.EndIfDirectiveTrivia: { - return false; + return true; } case SyntaxKind.PragmaWarningDirectiveTrivia: { @@ -59,25 +59,19 @@ private static void AnalyzeCompilationUnit(SyntaxNodeAnalysisContext context) foreach (ExpressionSyntax errorCode in pragma.ErrorCodes) { if (errorCode is IdentifierNameSyntax identifierName - && string.Equals(identifierName.Identifier.ValueText, "RCS1093", StringComparison.OrdinalIgnoreCase)) + && string.Equals(identifierName.Identifier.ValueText, DiagnosticRules.FileContainsNoCode.Id, StringComparison.OrdinalIgnoreCase)) { - return false; + return true; } } - return true; - } - default: - { - return true; + break; } } + + return false; })) { - foreach (var trivia in token.LeadingTrivia) - { - } - SyntaxTree syntaxTree = compilationUnit.SyntaxTree; if (!GeneratedCodeUtility.IsGeneratedCodeFile(syntaxTree.FilePath)) From 5c97ccaf4c14713241f5b22c769432f60196c7d4 Mon Sep 17 00:00:00 2001 From: Josef Pihrt Date: Tue, 28 Nov 2023 21:09:05 +0100 Subject: [PATCH 4/5] update --- src/Analyzers/CSharp/Analysis/FileContainsNoCodeAnalyzer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Analyzers/CSharp/Analysis/FileContainsNoCodeAnalyzer.cs b/src/Analyzers/CSharp/Analysis/FileContainsNoCodeAnalyzer.cs index c8d4346f5d..e7362d43c3 100644 --- a/src/Analyzers/CSharp/Analysis/FileContainsNoCodeAnalyzer.cs +++ b/src/Analyzers/CSharp/Analysis/FileContainsNoCodeAnalyzer.cs @@ -1,12 +1,12 @@ // Copyright (c) .NET Foundation and Contributors. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; using System.Collections.Immutable; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Diagnostics; using Microsoft.CodeAnalysis.Text; -using System; namespace Roslynator.CSharp.Analysis; From 19c0af2ef687a77518974f1846103e8a1385c46f Mon Sep 17 00:00:00 2001 From: Josef Pihrt Date: Tue, 28 Nov 2023 21:18:29 +0100 Subject: [PATCH 5/5] update --- ChangeLog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog.md b/ChangeLog.md index acc4d249b7..9fc22206a9 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -26,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fix analyzer [RCS1032](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1032) ([PR](https://github.com/dotnet/roslynator/pull/1289)) - Fix analyzer [RCS1176](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1176) ([PR](https://github.com/dotnet/roslynator/pull/1291)) - Fix analyzer [RCS1197](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1197) ([PR](https://github.com/dotnet/roslynator/pull/1166)) +- Fix analyzer [RCS1093](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1093) ([PR](https://github.com/dotnet/roslynator/pull/1296)) ## [4.6.4] - 2023-11-24