InvalidCompilation errors are verbose and sometimes obscure the underlying issue
- Dominant language
- Python
- Stars
- 6.4k
- Forks
- 1.1k
- PR merge metrics
- No merged PRs in 30d
Description
I think we need to rethink this because it causes stuff like parser errors, wrong solc version, or any error in crytic-compile to be shown twice. It's very verbose and obfuscates the issue (e.g. it looks like it's a slither or crytic-compile error when in fact it may have to do with a missing comma in Solidity)
https://github.com/crytic/slither/blob/3d4f934d3228f072b7df2c5e7252c64df4601bc8/slither/__main__.py#L873-L877
For example
```
Traceback (most recent call last):
File "/Users/alpharush/env/lib/python3.9/site-packages/slither/__main__.py", line 814, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
File "/Users/alpharush/env/lib/python3.9/site-packages/slither/__main__.py", line 91, in process_all
compilations = compile_all(target, **vars(args))
File "/Users/alpharush/env/lib/python3.9/site-packages/crytic_compile/crytic_compile.py", line 646, in compile_all
compilations.append(CryticCompile(target, **kwargs))
File "/Users/alpharush/env/lib/python3.9/site-packages/crytic_compile/crytic_compile.py", line 131, in __init__
self._compile(**kwargs)
File "/Users/alpharush/env/lib/python3.9/site-packages/crytic_compile/crytic_compile.py", line 553, in _compile
self._platform.compile(self, **kwargs)
File "/Users/alpharush/env/lib/python3.9/site-packages/crytic_compile/platform/solc.py", line 149, in compile
targets_json = _get_targets_json(compilation_unit, self._target, **kwargs)
File "/Users/alpharush/env/lib/python3.9/site-packages/crytic_compile/platform/solc.py", line 278, in _get_targets_json
return _run_solc(
File "/Users/alpharush/env/lib/python3.9/site-packages/crytic_compile/platform/solc.py", line 495, in _run_solc
compiler="solc", version=get_version(solc, env), optimized=is_optimized(solc_arguments)
File "/Users/alpharush/env/lib/python3.9/site-packages/crytic_compile/platform/solc.py", line 393, in get_version
raise InvalidCompilation(
crytic_compile.platform.exceptions.InvalidCompilation:
Solidity version not found:
STDOUT:
STDERR:
Traceback (most recent call last):
File "/Users/alpharush/env/bin/solc", line 8, in
sys.exit(solc())
File "/Users/alpharush/env/lib/python3.9/site-packages/solc_select/__main__.py", line 80, in solc
res = current_version()
File "/Users/alpharush/env/lib/python3.9/site-packages/solc_select/solc_select.py", line 62, in current_version
raise argparse.ArgumentTypeError(
argparse.ArgumentTypeError: No solc version set. Run `solc-select use VERSION` or set SOLC_VERSION environment variable.
ERROR:root:Error in test3.sol
ERROR:root:Traceback (most recent call last):
File "/Users/alpharush/env/lib/python3.9/site-packages/slither/__main__.py", line 814, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
File "/Users/alpharush/env/lib/python3.9/site-packages/slither/__main__.py", line 91, in process_all
compilations = compile_all(target, **vars(args))
File "/Users/alpharush/env/lib/python3.9/site-packages/crytic_compile/crytic_compile.py", line 646, in compile_all
compilations.append(CryticCompile(target, **kwargs))
File "/Users/alpharush/env/lib/python3.9/site-packages/crytic_compile/crytic_compile.py", line 131, in __init__
self._compile(**kwargs)
File "/Users/alpharush/env/lib/python3.9/site-packages/crytic_compile/crytic_compile.py", line 553, in _compile
self._platform.compile(self, **kwargs)
File "/Users/alpharush/env/lib/python3.9/site-packages/crytic_compile/platform/solc.py", line 149, in compile
targets_json = _get_targets_json(compilation_unit, self._target, **kwargs)
File "/Users/alpharush/env/lib/python3.9/site-packages/crytic_compile/platform/solc.py", line 278, in _get_targets_json
return _run_solc(
File "/Users/alpharush/env/lib/python3.9/site-packages/crytic_compile/platform/solc.py", line 495, in _run_solc
compiler="solc", version=get_version(solc, env), optimized=is_optimized(solc_arguments)
File "/Users/alpharush/env/lib/python3.9/site-packages/crytic_compile/platform/solc.py", line 393, in get_version
raise InvalidCompilation(
crytic_compile.platform.exceptions.InvalidCompilation:
Solidity version not found:
STDOUT:
STDERR:
Traceback (most recent call last):
File "/Users/alpharush/env/bin/solc", line 8, in
sys.exit(solc())
File "/Users/alpharush/env/lib/python3.9/site-packages/solc_select/__main__.py", line 80, in solc
res = current_version()
File "/Users/alpharush/env/lib/python3.9/site-packages/solc_select/solc_select.py", line 62, in current_version
raise argparse.ArgumentTypeError(
argparse.ArgumentTypeError: No solc version set. Run `solc-select use VERSION` or set SOLC_VERSION environment variable.
```
Contributor guide
Assessment
This issue has not been assessed yet.