paul1956/CSharpToVB
55.8
Adequate · 21 September 2026
26.5k
lines of production code
VB.NET
primary language
4
measurements over time
What this system is
This system is a C\# to Visual Basic.NET code converter that translates source code while preserving structure, comments, and formatting. It features a modernized .NET 6.0 architecture with a refactored conversion engine and a custom UI supporting dark/light themes. The codebase also includes utility libraries for object pooling, progress reporting, and CSV-based source generation.
How it got here
2019 — Modernization and consolidation
22 changes.
The project underwent a significant modernization, migrating to .NET 6.0 and Visual Studio 2022 while removing legacy components like the VB-to-C\# converter and obsolete utility libraries. This period focused on streamlining the codebase by deleting unused code, refactoring extension modules, and updating the test infrastructure to align with current .NET standards.
2020–2021 — UI theming and conversion architecture
11 changes.
This period focused on implementing dark and light mode support across the application's user interface and code conversion engine. Significant architectural changes included refactoring the C\# to VB.NET converter into specialized visitor classes and extracting utility classes for state management. Additionally, new source generators and test harnesses were introduced to support CSV-based data loading and improved test coverage.
Features
Add CSV source generator and text field parser
The csvGenerator directory now contains a new source generator (CsvGenerator) that reads CSV files and generates C\# or VB.NET source code for loading data. The generator supports configuring load timing (Startup or OnDemand) and object caching via build metadata. It also includes a TextFieldParser class for parsing delimited text files, along with supporting exception classes (MalformedLineException, InternalErrorException) and resource strings for error messages.
csvGenerator · high confidence
Add dark mode support for the application UI
Users can now switch to a dark theme, which applies a dark color palette to menus, toolstrips, status strips, and other controls. This is implemented via new \DarkColorTable\, \DarkMode\, and \ThemeSupport\ classes that configure the visual style of the main form and about box.
CSharpToVB/Forms · high confidence
Add test harness for source generator with additional file support
A new console application (TestConsoleApp) was added to serve as a test harness for the CsvGenerator source generator. The application constructs a Visual Basic compilation, registers the generator, and passes two additional files (DarkModeColorDictionary.csv and LightModeColorDictionary.csv) to the generator driver, allowing users to verify generator output and diagnostics.
TestConsoleApp · high confidence
Enhanced high-DPI support and application configuration updates
The application now supports high-DPI displays through a new \Application.Designer.HighDpi.vb\ file that configures \HighDpiMode\ for .NET 5. The \Application.myapp\ and \Application.Designer.vb\ have been updated to enable single-instance mode and display a splash screen. Additionally, the \Resources.Designer.vb\ and \Resources.resx\ files have been expanded to include numerous new icon resources (e.g., \AboutBox\, \CopyDark\, \ExitDark\), and the \app.manifest\ has been updated to enable Windows 10 compatibility and remove legacy DPI awareness settings.
CSharpToVB/My Project · high confidence
Introduce dark and light mode colorization themes
The application now supports distinct colorization themes for dark and light modes. This is implemented by adding two new CSV files (DarkModeColorDictionary.csv and LightModeColorDictionary.csv) that define foreground and background colors for various code classifications, alongside new VB.NET modules (ColorDescriptor, ColorSelector, ColorizeSupport, etc.) that manage loading, merging, and applying these themes to the converted code output.
CSharpToVB/ClassificationSupport · high confidence
Introduces new support classes for code conversion
The CodeConverter/SupportClasses directory now contains several new classes that manage conversion state and results. These include CodeWithOptions to track source and target language versions, ConversionResult to hold the converted code and status, ConvertRequest to carry conversion parameters, DefaultVbOptions for VB.NET settings, StatementHandling for processing statements, SymbolTableEntry for symbol tracking, and CommonConversions for shared conversion logic.
CodeConverter/SupportClasses · high confidence
New custom UI controls for the editor and toolbar
The CSharpToVB/Controls directory now includes several new custom controls: a ComboBoxEx with customizable border styles and colors, a LineNumbersForRichTextBox for displaying line numbers in a rich text box, a PanelEx with configurable border styles, a ToolStripCheckBox that exposes the CheckedChanged event, a ToolStripTextProgressBar that displays percentage text on the progress bar, and a WindowsMessageIDs module defining constants for window messages. These controls provide enhanced visual customization and functionality for the application's user interface.
CSharpToVB/Controls · high confidence
Removals
Removal of VB to C\# conversion support
The CodeConverter component has been stripped of its VB to C\# conversion capabilities. Files including \CodeConverter.vb\, \CodeWithOptions.vb\, \ConversionResult.vb\, \ConvertRequest.vb\, \GlobalSuppressions.vb\, \SharedReferences.vb\, \SymbolTableEntry.vb\, \TypeInfoExtension.vb\, and the entire \VBToCSharp\ directory (including \MethodBodyVisitor.vb\, \NodesVisitor.vb\, and \VisualBasicConverter.vb\) have been deleted. This change removes the ability to convert Visual Basic .NET code to C\#, leaving only the C\# to VB conversion path.
CodeConverter · high confidence
Removal of internal specialized collection and task utilities
The internal \Roslyn.Utilities.SpecializedCollections\ class and its associated empty/readonly/singleton collection implementations have been removed from the codebase. This includes the deletion of files such as \SpecializedCollections.Empty.\\, \SpecializedCollections.ReadOnly.\\, and \SpecializedTasks.cs\. These changes eliminate the internal utilities for creating empty or singleton collections and pre-completed tasks, likely because the project has migrated to use equivalent functionality from the .NET Standard library or other internal replacements.
HashLibrary/Collections · high confidence
Removal of pooled object implementations
The \ArrayBuilder\, \PooledDictionary\, \PooledHashSet\, and \PooledStringBuilder\ classes in the \Microsoft.CodeAnalysis.PooledObjects1\ namespace have been removed from the codebase. These types, which provided pooled implementations for common data structures, are no longer available for use.
HashLibrary/PooledObjects · high confidence
Removed obsolete C\# to VB conversion visitor classes
The \ArgumentListVisitor\, \AttributesVisitor\, \CSharpConverter\, \DeclarationVisitor\, and \ExpressionVisitor\ files have been deleted from the \CodeConverter/CSharpToVB\ directory. These files contained the legacy implementation for converting C\# syntax nodes to Visual Basic. Their removal indicates a refactoring of the codebase, likely to consolidate or replace these specific conversion logic with a different architecture.
CodeConverter/CSharpToVB · high confidence
Removed obsolete ManageProgressBar components
The obsolete ManageProgressBar component, including the IReportProgress interface and the ReportProgress class, has been removed from the codebase. This cleanup eliminates legacy progress bar management logic that is no longer required.
ManageProgressBar · high confidence
Removed obsolete utility modules from the codebase
Deleted several utility modules including ArgumentSupport, AttributeAndModifierSupport, CSharpSyntaxFactory, Contract, DirectiveSupport, ExceptionUtilities, ProcessEscapeSequences, RestructureSeparatedLists, StatementMarkerSupport, SyntaxExtensions, TriviaListSupport, and VBUtil. This cleanup removes unused or redundant code, streamlining the CodeConverter/Utils directory and reducing maintenance overhead.
CodeConverter/Utils · high confidence
Architecture
Refactored C\# to VB conversion visitors into dedicated classes
The CSharpToVBConverter's syntax tree traversal logic has been reorganized into specific visitor classes—ArgumentListVisitor, AttributesVisitor, DeclarationVisitor, DesignationVisitor, and ExpressionVisitor. This refactoring groups the conversion logic for specific C\# syntax nodes (such as arguments, attributes, declarations, and expressions) into separate files, improving code maintainability and separation of concerns within the converter.
CodeConverter/CSharpToVBConverter · high confidence
Refactored C\# to VB.NET conversion utilities
The codebase in CodeConverter/Utilities has been reorganized into new, dedicated modules for handling specific conversion tasks. This includes dedicated support for attributes and modifiers, literal conversion, statement markers, trivia lists, and type conversion. The refactoring consolidates logic for parsing C\# source code, managing metadata references, and converting C\# syntax elements (such as keywords, comments, and directives) into their VB.NET equivalents, improving code maintainability and separation of concerns within the converter.
CodeConverter/Utilities · high confidence
Behavioural changes
Add .editorconfig, license, and solution structure updates
The repository now includes an .editorconfig file to enforce consistent code style, indentation, and naming conventions across C\# and VB.NET files. A License.txt file has been added to clarify the MIT license terms. The solution file (CSharpToVB.sln) has been updated to target Visual Studio 2022 (version 17.3) and reorganized to include new projects such as ProgressReportLibrary, csvGenerator, TestConsoleApp, and ObjectPoolLibrary, while removing older projects like HashLibrary and ManageProgressBar.
(repo-wide) · high confidence
Extracted ProgressReport structure into a separate library
The ProgressReport structure, which tracks current and maximum values, has been moved from the existing library into a new, separate project (ProgressReportLibrary/ProgressReport.vb). This change isolates the ProgressReport type, which implements equality comparisons and operators, into its own assembly.
ProgressReportLibrary · high confidence
Improved handling of C\# syntax trees and trivia in the VB code converter
The converter now includes new extension modules for block, expression, foreach, index, language syntax node, named type symbol, statement, and symbol processing. These changes refine how the tool processes C\# syntax trees, manages trivia (comments, whitespace, and directives), and handles specific C\# constructs like local functions, event handlers, and attribute lists. Users will see more accurate translation of code structure, better preservation of comments and formatting, and improved handling of complex C\# features such as conditional compilation directives and attribute placement.
CodeConverter/Extensions · high confidence
Refactor and clean up CSharpToVB extension modules
The CSharpToVB/Extensions directory has been reorganized and cleaned up. New extension modules were added for file path handling (FilePathExtensions), menu/Recent Files (MenuExtensions), and RichTextBox search (RichTextBoxExtensions). The Contract module was removed entirely, and the SpecializedCollection and StringExtensions modules were simplified by removing unused helper functions (such as TitleCaseState, IsEmptyNullOrWhitespace, Left, and Right) and updating license headers.
CSharpToVB/Extensions · high confidence
Refactored ObjectPool implementation and project structure
The ObjectPool implementation has been refactored to remove leak-detection and tracing code, simplifying the pool's behavior and reducing overhead. The project has been renamed from 'HashLibrary' to 'ObjectPoolLibrary', and the source file has been moved and renamed from 'HashLibrary/PooledObjects/ObjectPool\`1.cs' to 'ObjectPoolLibrary/ObjectPool.cs'.
ObjectPoolLibrary · medium confidence
Refactored utility modules for project and solution file conversion
The CSharpToVB/Utilities area has been reorganized into dedicated modules for handling specific conversion tasks. New or refactored files include BrowserUtilities for managing update checks and browser launching, Compile for handling VB code compilation, ConvertProjectFileUtilities for processing .csproj/.vbproj files (including gRPC support), ConvertSolutionFileUtilities for .sln parsing and GUID mapping, LoadBufferSupport for loading source files into the editor, ProcessDirectoriesUtilities for recursive directory processing, and ProcessFileUtilities for individual file conversion and colorization. These changes streamline the codebase, improve maintainability, and add support for modern .NET project formats.
CSharpToVB/Utilities · high confidence
Removal of legacy compatibility and reflection utilities
The HashLibrary has removed several internal utility classes that provided compatibility shims and reflection helpers for older .NET environments. Specifically, CoreClrShim, which handled CoreCLR-specific API differences, and ReflectionUtilities, which provided reflection-based type and method resolution, have been deleted. Additionally, the CodeRefactoringHash class containing FNV-1a hash computation logic and the RuntimeMetadataReferenceResolver, which resolved trusted platform assemblies, have also been removed. These changes indicate a simplification of the codebase by eliminating support for legacy or specific runtime environments.
HashLibrary · high confidence
Removal of obsolete LINQ extension methods
The \EnumerableExtensions\ and \ImmutableArrayExtensions\ files have been removed from the codebase. This eliminates legacy extension methods for \IEnumerable\ and \ImmutableArray\, such as \Do\, \ToReadOnlyCollection\, \AsImmutable\, and \SelectAsArray\. Users relying on these specific utility methods will need to update their code to use standard LINQ or alternative implementations.
HashLibrary/Extensions · high confidence
Removed obsolete symbol equivalence comparison classes
The \SymbolEquivalence\ utility folder has been refactored by removing several legacy comparison classes, including \SymbolEquivalenceComparer.AssemblyComparers\, \SymbolEquivalenceComparer.EquivalenceVisitor\, \SymbolEquivalenceComparer.GetHashCodeVisitor\, \SymbolEquivalenceComparer.ParameterSymbolEqualityComparer\, and \SymbolEquivalenceComparer.SignatureTypeSymbolEquivalenceComparer\. This cleanup removes unused or redundant code from the code conversion engine's symbol equivalence logic.
CodeConverter/Utils/SymbolEquivalence · high confidence
Removes obsolete UI components and adds application lifecycle handling
The application's main form and its designer files have been removed, along with the custom AdvancedRTB control, ColorSelector, ComGuids, Compile, and Errors modules. A new ApplicationEvents.vb file has been added to handle application lifecycle events such as startup, shutdown, and unhandled exceptions, including high-DPI mode configuration for .NET 5.0 and later.
CSharpToVB · high confidence
Test coverage
Added test helper base classes for C\# to VB conversion and formatting; Added test helper for parsing marked source files; Expanded test coverage for C\# to VB conversion; Refactor test helper namespace and update xUnit assertions; Removed auto-generated My Project files from tests; Removed obsolete test infrastructure and configuration files; Updated C\# to VB conversion tests for expressions, members, namespaces, and type casts.
Dependencies
Upgrade to .NET 6.0 and modernize project files
The project files have been migrated from the legacy .NET Framework 4.7.2 and .NET Core 3.1/5.0 targets to .NET 6.0 (net6.0-windows). This update includes upgrading Roslyn packages to version 4.2.0 and analyzers to 3.3.3, while also removing obsolete project structures and references to deleted libraries like HashLibrary and ManageProgressBar.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 57 → 56 (-1.2)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 68 → 67 (-0.9)
- Architecture 96 → 96 (+0.0)
- Maturity 41 → 42 (+0.6)
- Readiness 65 → 65 (+0.0)
- Security 85 → 69 (-16.8)
Resolved (18)
- Bounded contexts not declared
- Build status unknown
- Change coupling: ThemeSupport.vb ↔ Form1.vb (CSharpToVB/ColorModeSupport/ThemeSupport.vb)
- Coverage not measured
- Duplicated block (10 lines × 2) (CSharpToVB/Controls/LineNumbersForRichTextBox.vb)
- Duplicated block (8 lines × 2) (CSharpToVB/Utilities/ConvertSolutionFileUtilities.vb)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No exposed public API
- Test reliability not measured — no test run produced results
- XML-doc coverage: CSharpToVB (CSharpToVB/CSharpToVB.vbproj)
- XML-doc coverage: CodeConverter (CodeConverter/CodeConverter.vbproj)
- XML-doc coverage: ProgressReportLibrary (ProgressReportLibrary/ProgressReportLibrary.vbproj)
- XML-doc coverage: TestConsoleApp (TestConsoleApp/TestConsoleApp.vbproj)
- XML-doc coverage: csvGenerator (csvGenerator/csvGenerator.vbproj)
- dormant codebase — no living knowledge left to concentrate
- misleading comment (ObjectPoolLibrary/ObjectPool.cs)
- misleading comment (ObjectPoolLibrary/ObjectPool.cs)
New (66)
- Change coupling: Form1.vb ↔ ConvertProjectFileUtilities.vb (CSharpToVB/Forms/Form1.vb)
- Documentation: no usage examples (README.MD)
- Duplicated block (10 lines × 2) (CSharpToVB/Controls/LineNumbersForRichTextBox.vb)
- Duplicated block (10 lines × 2) (CodeConverter/Utilities/SyntaxNavigator.vb)
- Duplicated block (11 lines × 2) (CodeConverter/CSharpToVBConverter/CSharpToVBVisitors/MethodBodyVisitor.vb)
- Duplicated block (5 lines × 2) (CodeConverter/CSharpToVBConverter/CSharpToVBVisitors/MethodBodyVisitor.vb)
- Duplicated block (5 lines × 2) (CodeConverter/Utilities/ConvertLiteralSupport.vb)
- Duplicated block (8 lines × 2) (CSharpToVB/Utilities/ConvertSolutionFileUtilities.vb)
- Duplicated block (8 lines × 2) (CodeConverter/CSharpToVBConverter/CSharpToVBVisitors/DeclarationVisitor.vb)
- Duplicated block (8 lines × 2) (CodeConverter/CSharpToVBConverter/CSharpToVBVisitors/MethodBodyVisitor.vb)
- Duplicated block (8 lines × 2) (CodeConverter/Extensions/BlockExtensions.vb)
- Duplicated block (9 lines × 2) (CodeConverter/Utilities/ConvertLiteralSupport.vb)
- End-of-life runtime: .NET net6.0
- End-of-life runtime: .NET netcoreapp3.1
- High: security finding (details withheld)
- High: security finding (details withheld)
- Hotspot: CSharpToVB/Forms/Form1.vb (CSharpToVB/Forms/Form1.vb)
- Hotspot: CodeConverter/CSharpToVBConverter/CSharpToVBVisitors/NamesVisitor.vb (CodeConverter/CSharpToVBConverter/CSharpToVBVisitors/NamesVisitor.vb)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- …and 46 more
Architecture
- Unchanged — 1 containers · 0 contexts · 0 edges
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
paul1956/CSharpToVB was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 5f3b2f0430c4ec9d350ac83900ee98aad66265ed — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.