Config Schema#
The following is the schema for the wake.toml
TOML config file.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "Schema for Wake - development, testing, and static analysis framework for Solidity",
"properties": {
"subconfigs": {
"type": "array",
"description": "List of paths to additional config files to load",
"items": {
"type": "string",
"format": "path"
}
},
"api_keys": {
"type": "object",
"description": "API keys for various services",
"additionalProperties": {
"type": "string"
}
},
"compiler": {
"type": "object",
"properties": {
"solc": {
"description": "Default configuration for Solidity files not belonging to a subproject",
"type": "object",
"properties": {
"allow_paths": {
"type": "array",
"description": "Additional allowed paths for solc --allow-paths",
"items": {
"type": "string",
"format": "path"
}
},
"evm_version": {
"type": "string",
"description": "Version of the EVM to compile for",
"enum": ["homestead", "tangerineWhistle", "spuriousDragon", "byzantium", "constantinople", "petersburg", "istanbul", "berlin", "london", "paris", "shanghai", "cancun", "prague"]
},
"exclude_paths": {
"type": "array",
"description": "Files in these paths are excluded from compilation unless imported from non-excluded file",
"default": ["node_modules", "venv", ".venv", "lib", "script", "test"],
"items": {
"type": "string",
"format": "path"
}
},
"include_paths": {
"type": "array",
"description": "Paths to search for direct (non-relative) imports",
"default": ["node_modules"],
"items": {
"type": "string",
"format": "path"
}
},
"optimizer": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"runs": {
"type": "integer",
"default": 200,
"minimum": 1
},
"details": {
"type": "object",
"properties": {
"peephole": { "type": "boolean" },
"inliner": { "type": "boolean" },
"jumpdest_remover": { "type": "boolean" },
"order_literals": { "type": "boolean" },
"deduplicate": { "type": "boolean" },
"cse": { "type": "boolean" },
"constant_optimizer": { "type": "boolean" },
"simple_counter_for_loop_unchecked_increment": { "type": "boolean" },
"yul_details": {
"type": "object",
"properties": {
"stack_allocation": { "type": "boolean" },
"optimizer_steps": { "type": "string" }
}
}
}
}
}
},
"remappings": {
"type": "array",
"items": {
"type": "string"
}
},
"target_version": {
"type": "string",
"description": "Target Solidity version for all files",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"via_IR": {
"type": "boolean",
"description": "Use new IR-based compiler pipeline"
},
"metadata": {
"type": "object",
"properties": {
"append_CBOR": { "type": "boolean" },
"use_literal_content": { "type": "boolean" },
"bytecode_hash": {
"type": "string",
"enum": ["none", "ipfs", "bzzr1"]
}
}
}
}
}
}
},
"lsp": {
"type": "object",
"description": "Configuration for the Language Server Protocol features",
"properties": {
"compilation_delay": {
"type": "number",
"description": "Delay to wait after a file content change before recompiling",
"default": 0,
"minimum": 0
},
"code_lens": {
"type": "object",
"description": "Configuration for LSP code lens features",
"properties": {
"enable": {
"type": "boolean",
"default": true,
"description": "Show code lenses"
},
"sort_tag_priority": {
"type": "array",
"description": "Order of code lens with the same start and end position",
"default": ["lsp-references", "lsp-selectors", "lsp-inheritance-graph", "lsp-linearized-inheritance-graph"],
"items": {
"type": "string"
}
}
}
},
"detectors": {
"type": "object",
"properties": {
"enable": {
"type": "boolean",
"default": true,
"description": "Run detectors in LSP"
}
}
},
"inlay_hints": {
"type": "object",
"description": "Configuration for LSP inlay hints",
"properties": {
"enable": {
"type": "boolean",
"default": true,
"description": "Show inlay hints"
},
"sort_tag_priority": {
"type": "array",
"description": "Priority order for inlay hint types",
"default": [],
"items": {
"type": "string"
}
}
}
},
"find_references": {
"type": "object",
"properties": {
"include_declarations": {
"type": "boolean",
"default": false,
"description": "Include declarations in the results"
}
}
}
}
},
"testing": {
"type": "object",
"description": "Configuration for testing",
"properties": {
"cmd": {
"type": "string",
"enum": ["anvil", "ganache", "hardhat"],
"default": "anvil",
"description": "Which development chain to use for testing"
},
"anvil": {
"type": "object",
"properties": {
"cmd_args": {
"type": "string",
"default": "--prune-history 100 --transaction-block-keeper 10 --steps-tracing --silent",
"description": "Arguments for the Anvil command"
}
}
},
"ganache": {
"type": "object",
"properties": {
"cmd_args": {
"type": "string",
"default": "-k istanbul -q",
"description": "Arguments for the Ganache command"
}
}
},
"hardhat": {
"type": "object",
"properties": {
"cmd_args": {
"type": "string",
"default": "",
"description": "Arguments for the Hardhat command"
}
}
}
}
},
"deployment": {
"type": "object",
"description": "Configuration for deployment",
"properties": {
"confirm_transactions": {
"type": "boolean",
"default": true,
"description": "Require confirmation for each transaction"
},
"silent": {
"type": "boolean",
"default": false,
"description": "Do not require confirmation for each transaction and do not print transaction status"
}
}
},
"detectors": {
"type": "object",
"description": "Configuration for detectors",
"properties": {
"exclude": {
"type": "array",
"description": "Names of detectors that should not be loaded",
"items": {
"type": "string"
},
"default": []
},
"only": {
"type": "array",
"description": "Names of detectors that should only be loaded",
"items": {
"type": "string"
}
},
"ignore_paths": {
"type": "array",
"description": "Detections in these paths must be ignored under all circumstances. Useful for ignoring detections in Solidity test files",
"items": {
"type": "string",
"format": "path"
},
"default": ["venv", ".venv", "test"]
},
"exclude_paths": {
"type": "array",
"description": "Detections in these paths are ignored unless linked to a (sub)detection in a non-excluded path. Useful for ignoring detections in dependencies",
"items": {
"type": "string",
"format": "path"
},
"default": ["node_modules", "lib", "script"]
}
}
},
"printers": {
"type": "object",
"description": "Configuration for printers",
"properties": {
"exclude": {
"type": "array",
"description": "Names of printers that should not be loaded",
"items": {
"type": "string"
},
"default": []
},
"only": {
"type": "array",
"description": "Names of printers that should only be loaded",
"items": {
"type": "string"
}
}
}
},
"detector": {
"type": "object",
"description": "Namespace for detector-specific config options. Each property should be named after the detector name and hold an object with string keys matching the Click option names",
"additionalProperties": {
"type": "object"
}
},
"printer": {
"type": "object",
"description": "Namespace for printer-specific config options. Each property should be named after the printer name and hold an object with string keys matching the Click option names",
"additionalProperties": {
"type": "object"
}
},
"general": {
"type": "object",
"properties": {
"call_trace_options": {
"type": "array",
"items": {
"type": "string",
"enum": ["contract_name", "address", "function_name", "named_arguments", "arguments", "status", "call_type", "value", "gas", "sender", "return_value", "error", "events"]
},
"default": ["contract_name", "function_name", "named_arguments", "status", "call_type", "value", "return_value", "error", "events"],
"description": "Information to show in call traces"
},
"json_rpc_timeout": {
"type": "number",
"default": 15,
"minimum": 0,
"description": "Timeout applied to JSON-RPC requests"
},
"link_format": {
"type": "string",
"default": "vscode://file/{path}:{line}:{col}",
"description": "Format of links used in detectors and printers"
}
}
},
"generator": {
"type": "object",
"description": "Unstable, may change in the future",
"properties": {
"control_flow_graph": {
"type": "object",
"properties": {
"direction": {
"type": "string",
"enum": ["TB", "BT", "LR", "RL"],
"description": "Graph direction: TB (top-bottom), BT (bottom-top), LR (left-right), RL (right-left)",
"default": "TB"
},
"vscode_urls": {
"type": "boolean",
"description": "Generate VSCode-compatible URLs in graph output",
"default": true
}
}
},
"imports_graph": {
"type": "object",
"properties": {
"direction": {
"type": "string",
"enum": ["TB", "BT", "LR", "RL"],
"description": "Graph direction: TB (top-bottom), BT (bottom-top), LR (left-right), RL (right-left)",
"default": "TB"
},
"imports_direction": {
"type": "string",
"enum": ["imported-to-importing", "importing-to-imported"],
"description": "Direction of import arrows in the graph",
"default": "imported-to-importing"
},
"vscode_urls": {
"type": "boolean",
"description": "Generate VSCode-compatible URLs in graph output",
"default": true
}
}
},
"inheritance_graph": {
"type": "object",
"properties": {
"direction": {
"type": "string",
"enum": ["TB", "BT", "LR", "RL"],
"default": "BT",
"description": "Graph direction: TB (top-bottom), BT (bottom-top), LR (left-right), RL (right-left)"
},
"vscode_urls": {
"type": "boolean",
"default": true,
"description": "Generate VSCode-compatible URLs in graph output"
}
}
},
"inheritance_graph_full": {
"type": "object",
"properties": {
"direction": {
"type": "string",
"enum": ["TB", "BT", "LR", "RL"],
"default": "BT",
"description": "Graph direction: TB (top-bottom), BT (bottom-top), LR (left-right), RL (right-left)"
},
"vscode_urls": {
"type": "boolean",
"default": true,
"description": "Generate VSCode-compatible URLs in graph output"
}
}
},
"linearized_inheritance_graph": {
"type": "object",
"properties": {
"direction": {
"type": "string",
"enum": ["TB", "BT", "LR", "RL"],
"default": "LR",
"description": "Graph direction: TB (top-bottom), BT (bottom-top), LR (left-right), RL (right-left)"
},
"vscode_urls": {
"type": "boolean",
"default": true,
"description": "Generate VSCode-compatible URLs in graph output"
}
}
}
}
},
"subproject": {
"type": "object",
"description": "Configuration for subdirectories requiring different compiler settings than the default",
"additionalProperties": {
"type": "object",
"properties": {
"paths": {
"type": "array",
"items": {
"type": "string",
"format": "path"
},
"default": [],
"description": "Paths to subproject files and directories"
},
"target_version": {
"type": "string",
"description": "Target Solidity version for this subproject",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"evm_version": {
"type": "string",
"description": "Version of the EVM to compile for",
"enum": ["homestead", "tangerineWhistle", "spuriousDragon", "byzantium", "constantinople", "petersburg", "istanbul", "berlin", "london", "paris", "shanghai", "cancun", "prague"]
},
"optimizer": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"runs": {
"type": "integer",
"default": 200,
"minimum": 1
},
"details": {
"type": "object",
"properties": {
"peephole": { "type": "boolean" },
"inliner": { "type": "boolean" },
"jumpdest_remover": { "type": "boolean" },
"order_literals": { "type": "boolean" },
"deduplicate": { "type": "boolean" },
"cse": { "type": "boolean" },
"constant_optimizer": { "type": "boolean" },
"simple_counter_for_loop_unchecked_increment": { "type": "boolean" },
"yul_details": {
"type": "object",
"properties": {
"stack_allocation": { "type": "boolean" },
"optimizer_steps": { "type": "string" }
}
}
}
}
}
},
"via_IR": {
"type": "boolean",
"description": "Use new IR-based compiler pipeline"
},
"metadata": {
"type": "object",
"properties": {
"append_CBOR": { "type": "boolean" },
"use_literal_content": { "type": "boolean" },
"bytecode_hash": {
"type": "string",
"enum": ["none", "ipfs", "bzzr1"]
}
}
}
}
}
}
}
}