Skip to content

refactor: replace custom ILogger with Serilog + Microsoft.Extensions.Logging#85

Draft
mcpolo99 wants to merge 7 commits into
developfrom
64-replace-custom-ilogger-with-serilog-+-microsoftextensionslogging
Draft

refactor: replace custom ILogger with Serilog + Microsoft.Extensions.Logging#85
mcpolo99 wants to merge 7 commits into
developfrom
64-replace-custom-ilogger-with-serilog-+-microsoftextensionslogging

Conversation

@mcpolo99

Copy link
Copy Markdown
Owner

Summary

Replaces the hand-rolled Confuser.Core.ILogger interface (13 methods, 5 custom implementations) with the industry-standard Microsoft.Extensions.Logging abstraction backed by Serilog as the logging provider.

Fixes #64

Changes

  • Extract IProgressReporter — separates progress/finish from logging into its own interface
  • Add M.E.L to Confuser.CoreMicrosoft.Extensions.Logging.Abstractions (netstandard2.0 compatible)
  • Wire up Serilog in CLI — replaces ConsoleLogger, adds --verbose / --quiet flags
  • Wire up Serilog in GUI — custom FlowDocumentSink replaces 80+ lines of manual logger boilerplate
  • Full migration — all ~80 call sites converted to M.E.L extension methods (LogDebug, LogInformation, LogWarning, LogError)
  • Delete old infrastructureConfuser.Core.ILogger, NullLogger, MelLoggerAdapter, PackerLogger, ConsoleLogger
  • Rewrite MSBuild/XUnit loggers — now implement Microsoft.Extensions.Logging.ILogger directly
  • Add local-ci.sh — full local CI script mirroring GitHub Actions pipeline
  • Fix MSBuildLogger.Finish bug — was setting HasError = false on failure (inverted logic)

New CLI flags

--quiet / -q        → Warning level (Warn + Error only)
(default)           → Information level
-v / --verbose      → Debug level
-vv                 → Verbose/Trace level

Net result

  • -547 lines of custom logging code deleted
  • 5 custom logger implementations → 2 thin M.E.L adapters (MSBuild + xUnit)
  • All features from the issue are now "free": log level filtering, timestamps, file output (add a sink), structured logging

Test plan

  • dotnet build Confuser2.sln -c Release — all C# projects compile
  • dotnet test — 29/29 tests pass (CLI=2, CrossFramework=24, GUI=3)
  • ./scripts/local-ci.sh test — full pipeline green
  • Manual smoke test: run CLI with -v and -q flags
  • Manual smoke test: run GUI and verify log panel shows colored output
  • Verify MSBuild task works in a consuming project

Related

RandomCrocodile added 6 commits June 11, 2026 20:34
Separate progress reporting (Progress, EndProgress, Finish) from logging
into a new IProgressReporter interface. This is the first step toward
replacing the custom ILogger with Microsoft.Extensions.Logging + Serilog.

- Add IProgressReporter interface and NullProgressReporter
- Remove Progress, EndProgress, Finish from ILogger and all implementations
- Remove dead BeginModule/EndModule from NullLogger
- Add ProgressReporter property to ConfuserParameters and ConfuserContext
- Replace PackerLogger (full ILogger decorator) with PackerProgressReporter
- Update all WithProgress call sites to use context.ProgressReporter
- Fix MSBuildLogger.Finish bug (was setting HasError=false on failure)
- Seal NullLogger class
Add Microsoft.Extensions.Logging.Abstractions to Confuser.Core
(netstandard2.0 compatible) and a MelLoggerAdapter that bridges
M.E.L ILogger to the internal Confuser.Core.ILogger interface.

This allows callers to pass a standard M.E.L logger (backed by
Serilog or any other provider) into ConfuserEngine without
changing any internal code yet.
Wire up Serilog as the logging provider in the CLI via
Microsoft.Extensions.Logging and MelLoggerAdapter.

- Add Serilog, Serilog.Extensions.Logging, Serilog.Sinks.Console
- Delete custom ConsoleLogger — Serilog handles all console output
- Add --verbose (-v, -vv, -vvv) and --quiet (-q) CLI flags
- Default: Information level; -q: Warning; -v: Debug; -vv+: Verbose
Wire up Serilog in the WPF GUI via a custom FlowDocumentSink that
renders color-coded log output to the protection log panel.

- Add Serilog and Serilog.Extensions.Logging to ConfuserEx
- Create FlowDocumentSink — custom Serilog sink for WPF Paragraph
- Remove ILogger from ProtectTabVM — now uses MelLoggerAdapter
- ProtectTabVM keeps only IProgressReporter (progress bar + finish)
- Delete ~40 lines of manual ILogger boilerplate
Full local CI script that replicates lint.yml, ci.yml, and test.yml:
- lint: whitespace, style, and analyzer checks via dotnet format
- build: dotnet build for SDK projects + MSBuild.exe for C++/CLI
- test: discovers all *.Test.csproj, runs with coverage, summary
- package: creates CLI, GUI, and combined zip archives

Usage: ./scripts/local-ci.sh [lint|build|test|package|all]
…ging.ILogger (#64)

Complete migration from the custom 13-method ILogger interface to the
standard M.E.L ILogger abstraction across all projects.

- Change ConfuserContext.Logger and ConfuserParameters.Logger to M.E.L ILogger
- Convert all ~80 call sites: Debug→LogDebug, Info→LogInformation,
  Warn→LogWarning, Error→LogError, *Exception→swap parameter order
- Rewrite MSBuildLogger as MSBuildMelLogger implementing M.E.L ILogger
- Rewrite XUnitLogger implementing M.E.L ILogger + IProgressReporter
- Remove MelLoggerAdapter (no longer needed — M.E.L is the native type)
- Delete Confuser.Core.ILogger, NullLogger (replaced by M.E.L NullLogger)
- Add test-results/ and coverage/ to .gitignore
@github-actions

github-actions Bot commented Jun 11, 2026

Copy link
Copy Markdown

Lint Results

All checks passed

Check Result
Whitespace (indentation, line endings)
Style (IDE rules, naming, var usage)
Analyzers (CA*, RCS* rules)

@github-actions

Copy link
Copy Markdown

Test Results

All 29 tests passed

Project Total
✅ Confuser.CLI.Test 2 0 2
✅ Confuser.GUI.Test 3 0 3
✅ CrossFramework.Test 24 0 24
Cross-Framework Details
Test TFM Type Result
CrossFramework.Test.ConsoleFrameworkTest.Console_Net10_RenameProtection 10 Console
CrossFramework.Test.ConsoleFrameworkTest.Console_Net20_RenameProtection 20 Console
CrossFramework.Test.ConsoleFrameworkTest.Console_Net35_RenameProtection 35 Console
CrossFramework.Test.ConsoleFrameworkTest.Console_Net40_RenameProtection 40 Console
CrossFramework.Test.ConsoleFrameworkTest.Console_Net48_RenameProtection 48 Console
CrossFramework.Test.ConsoleFrameworkTest.Console_Net6_RenameProtection 6 Console
CrossFramework.Test.ConsoleFrameworkTest.Console_Net8_RenameProtection 8 Console
CrossFramework.Test.LibraryFrameworkTest.Library_Net10_RenameProtection 10 Library
CrossFramework.Test.LibraryFrameworkTest.Library_Net48_RenameProtection 48 Library
CrossFramework.Test.LibraryFrameworkTest.Library_Net6_RenameProtection 6 Library
CrossFramework.Test.LibraryFrameworkTest.Library_Net8_RenameProtection 8 Library
CrossFramework.Test.LibraryFrameworkTest.Library_NetStd20_RenameProtection Std20 Library
CrossFramework.Test.WinFormsFrameworkTest.WinForms_Net10_RenameProtection 10 WinForms
CrossFramework.Test.WinFormsFrameworkTest.WinForms_Net35_RenameProtection 35 WinForms
CrossFramework.Test.WinFormsFrameworkTest.WinForms_Net40_RenameProtection 40 WinForms
CrossFramework.Test.WinFormsFrameworkTest.WinForms_Net48_RenameProtection 48 WinForms
CrossFramework.Test.WinFormsFrameworkTest.WinForms_Net6_RenameProtection 6 WinForms
CrossFramework.Test.WinFormsFrameworkTest.WinForms_Net8_RenameProtection 8 WinForms
CrossFramework.Test.WpfFrameworkTest.WPF_Net10_RenameProtection 10 WPF
CrossFramework.Test.WpfFrameworkTest.WPF_Net35_RenameProtection 35 WPF
CrossFramework.Test.WpfFrameworkTest.WPF_Net40_RenameProtection 40 WPF
CrossFramework.Test.WpfFrameworkTest.WPF_Net48_RenameProtection 48 WPF
CrossFramework.Test.WpfFrameworkTest.WPF_Net6_RenameProtection 6 WPF
CrossFramework.Test.WpfFrameworkTest.WPF_Net8_RenameProtection 8 WPF

Summary

Summary
Generated on: 6/11/2026 - 9:57:22 PM
Coverage date: 6/11/2026 - 9:55:02 PM - 6/11/2026 - 9:57:04 PM
Parser: MultiReport (6x Cobertura)
Assemblies: 6
Classes: 326
Files: 243
Line coverage: 25.3% (4182 of 16519)
Covered lines: 4182
Uncovered lines: 12337
Coverable lines: 16519
Total lines: 32183
Branch coverage: 21% (1580 of 7491)
Covered branches: 1580
Total branches: 7491
Method coverage: Feature is only available for sponsors

Coverage

Confuser.CLI - 60.6%
Name Line Branch
Confuser.CLI 60.6% 30%
Confuser.CLI.Program 60.6% 30%
Confuser.Core - 25.9%
Name Line Branch
Confuser.Core 25.9% 22%
Confuser.Core.AfterProtectionAttribute 100%
Confuser.Core.Annotations 72.4% 54.6%
Confuser.Core.API.APIStore 25% 0%
Confuser.Core.BeforeProtectionAttribute 100%
Confuser.Core.CircularDependencyException 0%
Confuser.Core.ConfuserAssemblyResolver 65.2% 69.4%
Confuser.Core.ConfuserContext 46.4% 16.6%
Confuser.Core.ConfuserEngine 63.9% 53.8%
Confuser.Core.ConfuserException 0%
Confuser.Core.ConfuserParameters 100% 75%
Confuser.Core.CoreComponent 75%
Confuser.Core.DependencyResolver 97.8% 94.4%
Confuser.Core.DnlibUtils 30% 27.2%
Confuser.Core.DotNetCorePathResolver 60.4% 50%
Confuser.Core.Helpers.ControlFlowBlock 0%
Confuser.Core.Helpers.ControlFlowGraph 0% 0%
Confuser.Core.Helpers.InjectHelper 0% 0%
Confuser.Core.Helpers.KeySequence 0% 0%
Confuser.Core.Helpers.MutationHelper 0% 0%
Confuser.Core.Marker 18.6% 11.6%
Confuser.Core.MarkerResult 100%
Confuser.Core.ModuleSorter 58.9% 55.5%
Confuser.Core.NativeEraser 0% 0%
Confuser.Core.NullProgressReporter 0%
Confuser.Core.ObfAttrMarker 49.8% 41.7%
Confuser.Core.ObfAttrParser 30.5% 29.7%
Confuser.Core.Packer 0% 0%
Confuser.Core.PackerDiscovery 0%
Confuser.Core.PackerMarker 0% 0%
Confuser.Core.PackerProgressReporter 0% 0%
Confuser.Core.PluginDiscovery 59% 94.4%
Confuser.Core.Project.ConfuserProject 53.4% 39.5%
Confuser.Core.Project.InvalidPatternException 0%
Confuser.Core.Project.PatternParser 43.3% 26.9%
Confuser.Core.Project.Patterns.AndOperator 0% 0%
Confuser.Core.Project.Patterns.DeclTypeFunction 0% 0%
Confuser.Core.Project.Patterns.FullNameFunction 0%
Confuser.Core.Project.Patterns.HasAttrFunction 0%
Confuser.Core.Project.Patterns.InheritsFunction 0% 0%
Confuser.Core.Project.Patterns.IsPublicFunction 0% 0%
Confuser.Core.Project.Patterns.IsTypeFunction 0% 0%
Confuser.Core.Project.Patterns.LiteralExpression 50% 0%
Confuser.Core.Project.Patterns.MatchFunction 0%
Confuser.Core.Project.Patterns.MatchNameFunction 0%
Confuser.Core.Project.Patterns.MatchTypeNameFunction 0% 0%
Confuser.Core.Project.Patterns.MemberTypeFunction 0% 0%
Confuser.Core.Project.Patterns.ModuleFunction 0% 0%
Confuser.Core.Project.Patterns.NameFunction 0%
Confuser.Core.Project.Patterns.NamespaceFunction 0% 0%
Confuser.Core.Project.Patterns.NotOperator 0%
Confuser.Core.Project.Patterns.OrOperator 0% 0%
Confuser.Core.Project.Patterns.PatternFunction 0% 0%
Confuser.Core.Project.Patterns.PatternOperator 0% 0%
Confuser.Core.Project.PatternToken 17.3% 0%
Confuser.Core.Project.PatternTokenizer 55.5% 51.2%
Confuser.Core.Project.ProjectModule 47.1% 26%
Confuser.Core.Project.ProjectValidationException 0%
Confuser.Core.Project.Rule 39.5% 25%
Confuser.Core.Project.SettingItem`1 33.3% 16.6%
Confuser.Core.ProtectionParameters 64.2% 43.7%
Confuser.Core.ProtectionPhase 100%
Confuser.Core.ProtectionPipeline 92.8% 87.5%
Confuser.Core.ProtectionSettings 62.5% 50%
Confuser.Core.ServiceRegistry 63.6% 33.3%
Confuser.Core.Services.CompressionService 3.6% 0%
Confuser.Core.Services.MarkerService 68.4% 50%
Confuser.Core.Services.MethodTrace 0% 0%
Confuser.Core.Services.RandomGenerator 62.8% 53.1%
Confuser.Core.Services.RandomService 91.6% 66.6%
Confuser.Core.Services.RuntimeService 83.3% 80%
Confuser.Core.Services.TraceService 50% 0%
Confuser.Core.UnreachableException 0%
Confuser.Core.Utils 80.5% 64%
Confuser.Core.WatermarkingProtection 92.3% 75%
SevenZip.Buffer.InBuffer 0% 0%
SevenZip.Buffer.OutBuffer 0% 0%
SevenZip.Compression.LZ.BinTree 0% 0%
SevenZip.Compression.LZ.InWindow 0% 0%
SevenZip.Compression.LZ.OutWindow 0% 0%
SevenZip.Compression.LZMA.Base 0% 0%
SevenZip.Compression.LZMA.Decoder 0% 0%
SevenZip.Compression.LZMA.Encoder 0% 0%
SevenZip.Compression.RangeCoder.BitDecoder 0% 0%
SevenZip.Compression.RangeCoder.BitEncoder 0% 0%
SevenZip.Compression.RangeCoder.BitTreeDecoder 0% 0%
SevenZip.Compression.RangeCoder.BitTreeEncoder 0% 0%
SevenZip.Compression.RangeCoder.Decoder 0% 0%
SevenZip.Compression.RangeCoder.Encoder 0% 0%
SevenZip.CRC 0% 0%
SevenZip.DataErrorException 0%
SevenZip.InvalidParamException 0%
Confuser.DynCipher - 0.2%
Name Line Branch
Confuser.DynCipher 0.2% 0%
Confuser.DynCipher.AST.ArrayIndexExpression 0%
Confuser.DynCipher.AST.AssignmentStatement 0%
Confuser.DynCipher.AST.BinOpExpression 0% 0%
Confuser.DynCipher.AST.Expression 0%
Confuser.DynCipher.AST.LiteralExpression 0%
Confuser.DynCipher.AST.LoopStatement 0%
Confuser.DynCipher.AST.Statement 0%
Confuser.DynCipher.AST.StatementBlock 0% 0%
Confuser.DynCipher.AST.UnaryOpExpression 0% 0%
Confuser.DynCipher.AST.Variable 0%
Confuser.DynCipher.AST.VariableExpression 0%
Confuser.DynCipher.CodeGenUtils 0% 0%
Confuser.DynCipher.DynCipherComponent 42.8%
Confuser.DynCipher.DynCipherService 0%
Confuser.DynCipher.Elements.AddKey 0%
Confuser.DynCipher.Elements.BinOp 0% 0%
Confuser.DynCipher.Elements.CryptoElement 0%
Confuser.DynCipher.Elements.Matrix 0% 0%
Confuser.DynCipher.Elements.NumOp 0% 0%
Confuser.DynCipher.Elements.RotateBit 0% 0%
Confuser.DynCipher.Elements.Swap 0% 0%
Confuser.DynCipher.Generation.CILCodeGen 0% 0%
Confuser.DynCipher.Generation.CipherGenContext 0% 0%
Confuser.DynCipher.Generation.CipherGenerator 0% 0%
Confuser.DynCipher.Generation.DMCodeGen 0% 0%
Confuser.DynCipher.Generation.ExpressionGenerator 0% 0%
Confuser.DynCipher.Generation.x86CodeGen 0% 0%
Confuser.DynCipher.Generation.x86ImmediateOperand 0%
Confuser.DynCipher.Generation.x86Instruction 0% 0%
Confuser.DynCipher.Generation.x86RegisterOperand 0%
Confuser.DynCipher.MathsUtils 0% 0%
Confuser.DynCipher.Transforms.ConvertVariables 0% 0%
Confuser.DynCipher.Transforms.ExpansionTransform 0% 0%
Confuser.DynCipher.Transforms.MulToShiftTransform 0% 0%
Confuser.DynCipher.Transforms.NormalizeBinOpTransform 0% 0%
Confuser.DynCipher.Transforms.ShuffleTransform 0% 0%
Confuser.Protections - 4.9%
Name Line Branch
Confuser.Protections 4.9% 1.9%
Confuser.Protections.AntiDebugProtection 22% 3.8%
Confuser.Protections.AntiDumpProtection 59% 25%
Confuser.Protections.AntiILDasmProtection 58.8% 50%
Confuser.Protections.AntiTamper.AntiMode 0% 0%
Confuser.Protections.AntiTamper.AntiTamperExtensions 0% 0%
Confuser.Protections.AntiTamper.DynamicDeriver 0% 0%
Confuser.Protections.AntiTamper.JITBodyIndex 0% 0%
Confuser.Protections.AntiTamper.JITMethodBody 0% 0%
Confuser.Protections.AntiTamper.JITMethodBodyWriter 0% 0%
Confuser.Protections.AntiTamper.JITMode 0% 0%
Confuser.Protections.AntiTamper.NormalDeriver 0% 0%
Confuser.Protections.AntiTamper.NormalMode 0% 0%
Confuser.Protections.AntiTamperProtection 48.8% 25%
Confuser.Protections.Compress.CompressorContext 0% 0%
Confuser.Protections.Compress.DynamicDeriver 0% 0%
Confuser.Protections.Compress.ExtractPhase 12.8% 5.5%
Confuser.Protections.Compress.NormalDeriver 0% 0%
Confuser.Protections.Compress.StubProtection 0% 0%
Confuser.Protections.Compressor 1.7% 0%
Confuser.Protections.ConstantProtection 61.5%
Confuser.Protections.Constants.DynamicMode 0% 0%
Confuser.Protections.Constants.EncodePhase 2.7% 1.1%
Confuser.Protections.Constants.InjectPhase 4.3% 1.7%
Confuser.Protections.Constants.NormalMode 0% 0%
Confuser.Protections.Constants.ReferenceReplacer 0% 0%
Confuser.Protections.Constants.x86Mode 0% 0%
Confuser.Protections.ControlFlow.BlockBase 0%
Confuser.Protections.ControlFlow.BlockParser 0% 0%
Confuser.Protections.ControlFlow.CFContext 0% 0%
Confuser.Protections.ControlFlow.ControlFlowPhase 23% 20.5%
Confuser.Protections.ControlFlow.ExpressionPredicate 0% 0%
Confuser.Protections.ControlFlow.InstrBlock 0% 0%
Confuser.Protections.ControlFlow.JumpMangler 0% 0%
Confuser.Protections.ControlFlow.ManglerBase 0% 0%
Confuser.Protections.ControlFlow.NormalPredicate 0% 0%
Confuser.Protections.ControlFlow.ScopeBlock 0% 0%
Confuser.Protections.ControlFlow.SwitchMangler 0% 0%
Confuser.Protections.ControlFlow.x86Predicate 0% 0%
Confuser.Protections.ControlFlowProtection 54.5%
Confuser.Protections.HardeningPhase 25% 3.5%
Confuser.Protections.HardeningProtection 57.1%
Confuser.Protections.InvalidMetadataProtection 21.7% 10%
Confuser.Protections.ReferenceProxy.ExpressionEncoding 0% 0%
Confuser.Protections.ReferenceProxy.MildMode 0% 0%
Confuser.Protections.ReferenceProxy.NormalEncoding 0% 0%
Confuser.Protections.ReferenceProxy.ReferenceProxyPhase 24.1% 6.7%
Confuser.Protections.ReferenceProxy.RPMode 0% 0%
Confuser.Protections.ReferenceProxy.StrongMode 0% 0%
Confuser.Protections.ReferenceProxy.x86Encoding 0% 0%
Confuser.Protections.ReferenceProxyProtection 37.5%
Confuser.Protections.ResourceProtection 62.5%
Confuser.Protections.Resources.DynamicMode 0% 0%
Confuser.Protections.Resources.InjectPhase 5.4% 3.3%
Confuser.Protections.Resources.MDPhase 0% 0%
Confuser.Protections.Resources.NormalMode 0% 0%
Confuser.Protections.TypeScrambler.AnalyzePhase 61.5% 30%
Confuser.Protections.TypeScrambler.ScramblePhase 36.8% 16.6%
Confuser.Protections.TypeScrambler.Scrambler.Analyzers.ContextAnalyzer`1 0%
Confuser.Protections.TypeScrambler.Scrambler.Analyzers.ContextAnalyzerFacto
ry
0% 0%
Confuser.Protections.TypeScrambler.Scrambler.Analyzers.MemberRefAnalyzer 0% 0%
Confuser.Protections.TypeScrambler.Scrambler.Analyzers.MethodDefAnalyzer 0% 0%
Confuser.Protections.TypeScrambler.Scrambler.Analyzers.MethodSpecAnalyzer 0% 0%
Confuser.Protections.TypeScrambler.Scrambler.Analyzers.TypeRefAnalyzer 0%
Confuser.Protections.TypeScrambler.Scrambler.Rewriter.Instructions.FieldDef
InstructionRewriter
0% 0%
Confuser.Protections.TypeScrambler.Scrambler.Rewriter.Instructions.Instruct
ionRewriter`1
0%
Confuser.Protections.TypeScrambler.Scrambler.Rewriter.Instructions.Instruct
ionRewriterFactory
0% 0%
Confuser.Protections.TypeScrambler.Scrambler.Rewriter.Instructions.MemberRe
fInstructionRewriter
0% 0%
Confuser.Protections.TypeScrambler.Scrambler.Rewriter.Instructions.MethodDe
fInstructionRewriter
0% 0%
Confuser.Protections.TypeScrambler.Scrambler.Rewriter.Instructions.MethodSp
ecInstructionRewriter
0% 0%
Confuser.Protections.TypeScrambler.Scrambler.Rewriter.Instructions.TypeDefI
nstructionRewriter
0% 0%
Confuser.Protections.TypeScrambler.Scrambler.Rewriter.Instructions.TypeRefI
nstructionRewriter
0% 0%
Confuser.Protections.TypeScrambler.Scrambler.ScannedItem 0% 0%
Confuser.Protections.TypeScrambler.Scrambler.ScannedMethod 0% 0%
Confuser.Protections.TypeScrambler.Scrambler.ScannedType 0% 0%
Confuser.Protections.TypeScrambler.Scrambler.SignatureUtils 0% 0%
Confuser.Protections.TypeScrambler.Scrambler.TypeRewriter 0% 0%
Confuser.Protections.TypeScrambler.TypeScrambleProtection 75% 50%
Confuser.Protections.TypeScrambler.TypeService 13.3% 0%
Confuser.Protections.Utils 0% 0%
Confuser.Renamer - 42%
Name Line Branch
Confuser.Renamer 42% 37.7%
Confuser.Renamer.AnalyzePhase 66.2% 61.5%
Confuser.Renamer.Analyzers.CaliburnAnalyzer 0% 0%
Confuser.Renamer.Analyzers.CallSiteAnalyzer 22.2% 25.8%
Confuser.Renamer.Analyzers.InterReferenceAnalyzer 87.5% 90%
Confuser.Renamer.Analyzers.JsonAnalyzer 0% 0%
Confuser.Renamer.Analyzers.LdtokenEnumAnalyzer 12.6% 18.5%
Confuser.Renamer.Analyzers.ManifestResourceAnalyzer 35.7% 65.7%
Confuser.Renamer.Analyzers.ReflectionAnalyzer 19.6% 21.2%
Confuser.Renamer.Analyzers.ResourceAnalyzer 27.2% 30%
Confuser.Renamer.Analyzers.TypeBlobAnalyzer 59.5% 53.4%
Confuser.Renamer.Analyzers.VisualBasicRuntimeAnalyzer 0% 0%
Confuser.Renamer.Analyzers.VsCompositionAnalyzer 0% 0%
Confuser.Renamer.Analyzers.VTableAnalyzer 59.1% 55%
Confuser.Renamer.Analyzers.WinFormsAnalyzer 28% 31.7%
Confuser.Renamer.Analyzers.WPFAnalyzer 58.3% 53%
Confuser.Renamer.BAML.AssemblyInfoRecord 100%
Confuser.Renamer.BAML.AttributeInfoRecord 100%
Confuser.Renamer.BAML.BAMLAnalyzer 41.7% 42.7%
Confuser.Renamer.BAML.BamlBinaryReader 100%
Confuser.Renamer.BAML.BamlBinaryWriter 100%
Confuser.Renamer.BAML.BamlDocument 100%
Confuser.Renamer.BAML.BamlElement 77% 71.2%
Confuser.Renamer.BAML.BAMLPropertyReference 0% 0%
Confuser.Renamer.BAML.BamlReader 37.2% 28.7%
Confuser.Renamer.BAML.BamlRecord 100%
Confuser.Renamer.BAML.BAMLStringReference 100% 75%
Confuser.Renamer.BAML.BamlWriter 95.4% 66.6%
Confuser.Renamer.BAML.ConnectionIdRecord 100%
Confuser.Renamer.BAML.ConstructorParametersEndRecord 0%
Confuser.Renamer.BAML.ConstructorParametersStartRecord 0%
Confuser.Renamer.BAML.ConstructorParameterTypeRecord 0%
Confuser.Renamer.BAML.ContentPropertyRecord 100%
Confuser.Renamer.BAML.DefAttributeKeyStringRecord 0% 0%
Confuser.Renamer.BAML.DefAttributeKeyTypeRecord 0% 0%
Confuser.Renamer.BAML.DefAttributeRecord 0%
Confuser.Renamer.BAML.DeferableContentStartRecord 0%
Confuser.Renamer.BAML.DocumentEndRecord 100%
Confuser.Renamer.BAML.DocumentStartRecord 100%
Confuser.Renamer.BAML.ElementEndRecord 100%
Confuser.Renamer.BAML.ElementStartRecord 100%
Confuser.Renamer.BAML.IndexerParamInfo 0%
Confuser.Renamer.BAML.KeyElementEndRecord 0%
Confuser.Renamer.BAML.KeyElementStartRecord 0%
Confuser.Renamer.BAML.KnownThingsv3 0% 0%
Confuser.Renamer.BAML.KnownThingsv4 99.9% 100%
Confuser.Renamer.BAML.LineNumberAndPositionRecord 0%
Confuser.Renamer.BAML.LinePositionRecord 0%
Confuser.Renamer.BAML.LiteralContentRecord 0%
Confuser.Renamer.BAML.NamedElementStartRecord 0% 0%
Confuser.Renamer.BAML.OptimizedStaticResourceRecord 0%
Confuser.Renamer.BAML.PIMappingRecord 0%
Confuser.Renamer.BAML.PresentationOptionsAttributeRecord 0%
Confuser.Renamer.BAML.PropertyArrayEndRecord 0%
Confuser.Renamer.BAML.PropertyArrayStartRecord 0%
Confuser.Renamer.BAML.PropertyComplexEndRecord 0%
Confuser.Renamer.BAML.PropertyComplexStartRecord 0%
Confuser.Renamer.BAML.PropertyCustomRecord 0%
Confuser.Renamer.BAML.PropertyDictionaryEndRecord 0%
Confuser.Renamer.BAML.PropertyDictionaryStartRecord 0%
Confuser.Renamer.BAML.PropertyListEndRecord 0%
Confuser.Renamer.BAML.PropertyListStartRecord 0%
Confuser.Renamer.BAML.PropertyPathIndexUpdater 0% 0%
Confuser.Renamer.BAML.PropertyPathParser 0.7% 0%
Confuser.Renamer.BAML.PropertyPathPartUpdater 0% 0%
Confuser.Renamer.BAML.PropertyPathUpdater 0% 0%
Confuser.Renamer.BAML.PropertyRecord 88.8%
Confuser.Renamer.BAML.PropertyStringReferenceRecord 0%
Confuser.Renamer.BAML.PropertyTypeReferenceRecord 0%
Confuser.Renamer.BAML.PropertyWithConverterRecord 100%
Confuser.Renamer.BAML.PropertyWithExtensionRecord 0%
Confuser.Renamer.BAML.PropertyWithStaticResourceIdRecord 0%
Confuser.Renamer.BAML.RoutedEventRecord 0%
Confuser.Renamer.BAML.SizedBamlRecord 66.6% 12.5%
Confuser.Renamer.BAML.SourceValueInfo 0%
Confuser.Renamer.BAML.StaticResourceEndRecord 0%
Confuser.Renamer.BAML.StaticResourceIdRecord 0%
Confuser.Renamer.BAML.StaticResourceStartRecord 0%
Confuser.Renamer.BAML.StringInfoRecord 0%
Confuser.Renamer.BAML.TextRecord 0%
Confuser.Renamer.BAML.TextWithConverterRecord 0%
Confuser.Renamer.BAML.TextWithIdRecord 0%
Confuser.Renamer.BAML.TypeInfoRecord 100%
Confuser.Renamer.BAML.TypeSerializerInfoRecord 0%
Confuser.Renamer.BAML.XmlnsPropertyRecord 100% 100%
Confuser.Renamer.DisplayNormalizedName 100%
Confuser.Renamer.GenericArgumentResolver 37.8% 40%
Confuser.Renamer.GenericArguments 50% 46.4%
Confuser.Renamer.MessageDeobfuscator 0% 0%
Confuser.Renamer.NameProtection 60.7% 16.6%
Confuser.Renamer.NameService 60.5% 41%
Confuser.Renamer.PostRenamePhase 100% 100%
Confuser.Renamer.Properties.Resources 0% 0%
Confuser.Renamer.RecursionCounter 75% 50%
Confuser.Renamer.References.BAMLAttributeReference 0% 0%
Confuser.Renamer.References.BAMLConverterMemberReference 0% 0%
Confuser.Renamer.References.BAMLConverterTypeReference 0% 0%
Confuser.Renamer.References.BAMLEnumReference 0% 0%
Confuser.Renamer.References.BAMLPathTypeReference 0% 0%
Confuser.Renamer.References.BAMLTypeReference 52.9% 100%
Confuser.Renamer.References.CAMemberReference 0% 0%
Confuser.Renamer.References.MemberOldestSiblingReference 0% 0%
Confuser.Renamer.References.MemberOverrideReference 0% 0%
Confuser.Renamer.References.MemberRefReference 23.5% 0%
Confuser.Renamer.References.MemberSiblingReference 0% 0%
Confuser.Renamer.References.OverrideDirectiveReference 53.8% 50%
Confuser.Renamer.References.RequiredPrefixReference`1 0% 0%
Confuser.Renamer.References.ResourceReference 0% 0%
Confuser.Renamer.References.StringMemberNameReference 0% 0%
Confuser.Renamer.References.StringTypeReference 0% 0%
Confuser.Renamer.References.TypeRefReference 21% 0%
Confuser.Renamer.ReferenceUtilities 0% 0%
Confuser.Renamer.RenamePhase 53.5% 51%
Confuser.Renamer.ReversibleRenamer 0% 0%
Confuser.Renamer.RickRoller 0% 0%
Confuser.Renamer.VTable 90.9% 84.2%
Confuser.Renamer.VTableSignature 80.7% 66.6%
Confuser.Renamer.VTableSlot 87.5%
Confuser.Renamer.VTableStorage 78% 62.5%
Confuser.UnitTest - 0%
Name Line Branch
Confuser.UnitTest 0% ****
AutoGeneratedProgram 0%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant