A coverage-guided fuzzer for Python and Python extensions based on libFuzzer
91
{
"context": "This criteria evaluates how well the engineer uses atheris package capabilities to instrument and fuzz-test a URL parser function. The focus is on proper use of function-level instrumentation, fuzzing setup, and structured input generation.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Function instrumentation",
"description": "Uses the instrument_func() decorator or equivalent to instrument the parse_url function for coverage tracking",
"max_score": 30
},
{
"name": "Fuzzer initialization",
"description": "Correctly calls Setup() with sys.argv and the test callback function before starting fuzzing",
"max_score": 20
},
{
"name": "FuzzedDataProvider usage",
"description": "Uses FuzzedDataProvider to convert raw fuzzing bytes into structured string inputs (e.g., ConsumeUnicode, ConsumeUnicodeNoSurrogates, or ConsumeString)",
"max_score": 25
},
{
"name": "Fuzzer execution",
"description": "Calls Fuzz() to start the fuzzing loop, or uses -atheris_runs argument to control execution",
"max_score": 15
},
{
"name": "Test callback",
"description": "Implements test_one_input(data) function that accepts bytes and properly handles exceptions from the target function",
"max_score": 10
}
]
}Install with Tessl CLI
npx tessl i tessl/pypi-atherisevals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10