L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Données et recherche · SKILL.md

roslyn-query

roslyn-query

Query .NET/C# codebases using Roslyn AST analysis via dotnet run file. Use for tracing data flow, auditing API usage, finding pattern violations, or ad-hoc codebase queries.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: roslyn-query description: Query .NET/C# codebases using Roslyn AST analysis via dotnet run file. Use for tracing data flow, auditing API usage, finding pattern violations, or ad-hoc codebase queries. argument-hint: "[analysis description or query type]"

Roslyn Query

Query .NET/C# codebases using Roslyn AST analysis scripts executed via dotnet run file.cs.

Before generating scripts, load the handbook-dotnet:dotnet-run-file skill for execution conventions and directive syntax.

When to Use

  • Trace data flow from sources to sinks (taint analysis)
  • Audit all assignments to specific properties
  • Find all callers of a method
  • Find all implementations of an interface
  • Detect pattern violations (empty catches, missing sanitizers, etc.)
  • Architecture validation (layer violations)
  • Ad-hoc codebase structural queries

Analysis Tiers

Tier 1: Syntax-Only (fast, no compilation)

Uses CSharpSyntaxTree.ParseText() — parses files individually, no solution loading.

Best for:

  • Property assignment audits (x.Content = ...)
  • Empty catch block detection
  • Naming convention checks
  • Cyclomatic complexity
  • Magic number/string detection
  • Method size metrics
  • Pattern matching on code structure

Tier 2: Semantic (needs project/solution)

Uses MSBuildWorkspace — loads project, resolves types, enables cross-file analysis.

Best for:

  • Find all callers of a method (SymbolFinder.FindCallersAsync)
  • Find interface implementations (SymbolFinder.FindImplementationsAsync)
  • Find method overrides (SymbolFinder.FindOverridesAsync)
  • Type dependency graphs
  • Full data flow analysis (SemanticModel.AnalyzeDataFlow)

Instructions

Step 1: Determine analysis type

Based on the user's request, choose the appropriate template from references/templates.md. If no template fits, compose a custom script using the patterns documented there.

Step 2: Generate the script

Create a .cs file in a scripts/ directory (or temp location) using dotnet run file.cs format with #:package directives.

For syntax-only analysis:

#:package Microsoft.CodeAnalysis.CSharp@4.*

For semantic analysis, additionally:

#:package Microsoft.CodeAnalysis.CSharp.Workspaces@4.*
#:package Microsoft.CodeAnalysis.Workspaces.MSBuild@4.*
#:package Microsoft.Build.Locator@1.*
#:property DisableMSBuildAssemblyCopyCheck=true

Note: DisableMSBuildAssemblyCopyCheck=true suppresses the MSBL001 build error that requires ExcludeAssets="runtime" on MSBuild packages — an attribute #:package directives can't express. Safe for throwaway analysis scripts.

.slnx not supported: Roslyn 4.x MSBuildWorkspace only supports .sln, not .slnx. Use OpenProjectAsync with a .csproj instead — transitive project references are loaded automatically.

Step 3: Script conventions

  • Accept target directory/path via args[0], default to Directory.GetCurrentDirectory()
  • Use Path.GetRelativePath() for output paths
  • Print structured output: file:line, description, context
  • Use color: green for safe, yellow for warnings, red for violations
  • Exit code 0 = clean, 1 = findings

Step 4: Execute

dotnet run scripts/my-analysis.cs -- <target-path>

Step 5: Interpret results

Analyze the output. For taint analysis, categorize findings:

  • Safe — trusted source (code-generated, AI output, literal null)
  • Already sanitized — sanitizer call deeper in call chain (syntax-only false positive)
  • Needs investigation — external input, user-authored content
  • Violation — clear miss that should be fixed

Key Roslyn APIs Quick Reference

Load references/roslyn-api.md for detailed API reference with code examples.

Templates

Load references/templates.md for ready-to-use analysis script templates.

Skills enregistrées