Adds a C# IL Extractor Prototype #299
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds C# IL extractor prototype (minimally scoped for now to detect methods/control flow) an some simple example queries to demonstrate it can detect method calls from compiled database.
---- Copilot Summary ---
Extractor Implementation:
Semmle.Extraction.CSharp.IL, includingILExtractor.csfor reading assemblies and writing facts,TrapWriter.csfor TRAP file output, andProgram.csas the CLI entry point. The extractor captures assemblies, types, methods, IL instructions, control flow, calls, and exception handlers. [1] [2] [3]Schema and Configuration:
semmlecode.csharp.il.dbscheme, specifying tables for assemblies, types, methods, IL instructions, control flow, call targets, operands, and exception handlers.codeql-extractor.ymlfor extractor metadata,qlpack.ymlfor QL library, anddowngrades/qlpack.ymlfor downgrade support. [1] [2] [3]Documentation and Project Structure:
README.mddescribing the extractor’s features, usage, schema, use cases, design philosophy, limitations, and directory layout.Build and Environment:
.gitignorefor C# build artifacts and test results, and a.csprojfile for the extractor project targeting .NET 8.0 and referencing Mono.Cecil. [1] [2]