In Roslyn, a control flow graph has the list of BasicBlocks which constitute the program. Is it possible to get code statements from each block to reconstruct the entire code?
Roslyn: Reconstruct code from BasicBlocks in a CFG
145 Views Asked by Sherwin At
1
There are 1 best solutions below
Related Questions in ROSLYN
- How do I add an XML Doc Comment to a ClassDeclarationSyntax in Roslyn?
- IApplicationBuilder exists in both Microsoft.AspNet.Http.Abstractions and Microsoft.AspNet.Http
- Process encountered symbols while also having access to a SemanticModel in Roslyn
- Roslyn ImportAdderService doesn't visit trivia
- Strong name errors running Roslyn from source on Azure
- Search and replace C# expression
- Is it possible to add C# classes immediately before compilation in Visual Studio
- ReportDiagnostic on Partial Classes
- Compile C# Roslyn
- Accessing VS complete solution in roslyn
- Delegate caching behavior changes in Roslyn
- How can I get the symbols of members defined in a .g.cs file using Roslyn?
- Roslyn: SyntaxWalker through 2 different documents
- Roslyn - dynamic (runtime) flow
- How to set assembly version, culture and public key token while compiling with Roslyn?
Related Questions in ROSLYN-CODE-ANALYSIS
- Roslyn Rewrite Method Calls to use await Modifier
- Visual Studio 2015 Package Extension,referenced dll not copied
- Could not load type 'System.Reflection.Metadata.ISignatureTypeProvider from assembly System.Reflection.Metadata
- How to get underlying type for IEnumerable<T> with Roslyn?
- Finding location of all references across solution
- How to add XML Comments to a MethodDeclarationSyntax node using Roslyn?
- Constructing NameOf expression via SyntaxFactory (Roslyn)
- Finding all not inheriting C# classes with Roslyn and changing to inheriting from base object (java-like)
- Masstransit Analyzers
- Not getting a namespace/reference in CSharpCompilation .net Core
- Roslyn: detect when a local variable has been declared with `using`
- Speed up Roslyn solution analyser
- How to hide Visual Studio squiggly lines from analyzers suppressed by a DiagnosticSuppressor
- Roslyn workspace API not loading properly for a third-party solution
- Is there a technical reason why code analysis can't figure out that this variable has been set?
Related Questions in CONTROL-FLOW-GRAPH
- Control Flow Graphs - find all linearly independent paths
- Understand control flow graph in lcov branch coverage output
- Can I translate an AST to SSA, or do I need to translate to a CFG then to SSA?
- Tool to compare control flow of disassembly and C
- control edge rendering of a network in vis.js
- Extracting Basic Blocks/CFG from LLVM/clang on the Backend
- Control flow graph dominance
- Flattening a control flow graph to structured code
- Decompilation creating basic blocks
- Decompilation independent pattern structuring of cfg
- Drawing cfg using antlr4, graphiz and python and parser is empty
- Static analysis of unused assignments
- identifying a loop in LLVM CFG
- How to determine if a BasicBlock is controled by a `if`
- Why are the variables "i" and "j" considered dead in the control flow graph?
Related Questions in MICROSOFT.CODEANALYSIS
- Visual Studio 2015 Package Extension,referenced dll not copied
- Is there a technical reason why code analysis can't figure out that this variable has been set?
- Getting constant value inside a cshtml file by Roslyn library
- Runtime compiling DbContext with EF core, missing reference for Migrator()
- Why does few analyzer rules have their effective severity set to suppressed in .NET4.6
- Visual Studio 2019 and ReSharper: deactivate Studio code analysis
- Canot resolve argument parameters in Roslyn Source Generation
- Microsoft.CodeAnalysis build failing despite project locally running correctly
- Getting XML Documentation with Microsoft.CodeAnalysis/Roslyn
- How to get SyntaxNode content if it is a method and implemented outside current SyntaxTree?
- System.IntPtr and nint in C# Microsoft.CodeAnalysis
- How to compile in memory and get assembly using Microsoft.CodeAnalysis
- Roslyn: Reconstruct code from BasicBlocks in a CFG
- Merge SonarAnalyzer.CSharp and the Microsoft.CodeAnalysis rulesets
- Use StyleCop.Analyzers, Microsoft.CodeAnalysis.* or both?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
This is not possible using Roslyn's in-built methods in my knowledge. I achieved a similar result by constructing a dictionary of blocks and sets of line numbers corresponding to those blocks using string matching. Additional filtering done to the same in order to improve accuracy in case of blocks that include locks etc. The result is not 100 percent accurate, but it comes pretty close in most cases.