Neo Compiler Fuzzer Implementation and Unit Tests #1314
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.
Overview
This PR implements a production-ready Neo Compiler Fuzzer for testing the Neo N3 smart contract compiler. The fuzzer dynamically generates valid smart contracts with various combinations of C# syntax features and Neo-specific functionality, compiles them using the Neo.Compiler.CSharp CompilationEngine, and optionally tests their execution.
Key Features
Implementation Details
Core Components:
DynamicContractFuzzer
: Main class for orchestrating the fuzzing processFragmentGenerator
: Generates code fragments for various featuresLogger
: Provides logging functionalityCommand-Line Interface:
Shell Script:
run-compiler-fuzzer.sh
script for easy executionUnit Tests:
tests/Neo.Compiler.Fuzzer.Tests
Documentation
Added comprehensive documentation in the
docs/fuzzer/compiler
directory:README.md
: Overview and getting started guidefeatures.md
: Detailed list of supported featuresarchitecture.md
: System architecture and component interactionsconfiguration.md
: Configuration options and customizationreports.md
: Report formats and interpretationtroubleshooting.md
: Common issues and solutionsTesting
The implementation has been tested with various configurations:
Current success rate is approximately 70% with 3 features per contract, which is expected given the random nature of the feature combinations.
Future Work
Potential future enhancements:
Checklist