my goal is to analyze contracts with slither without solc-select
my next goal is to find alternative to slither to make it all nodejs only but for now i will change solc-select first but if u know some good alternative too slither but as good please recommend it, analyzing code with detectors and show theses statistics like slither that's all i need for now
Number of optimization issues: 0
Number of informational issues: 11
Number of low issues: 2
Number of medium issues: 0
Number of high issues: 0
i am using web3 to get source code of a contract then write it into .sol file
and used npm install -g solc@{version of the contract} to download the right version of the compiler for the contract managed to compile it and get the byte code also works in cmd if i type solcjs --version
now i want to use slither on that file written earlier and solc@{version of contract} installed globally
i used child process for that like this
async function analyze() {
exec.exec(
`slither contract.sol --print human-summary`,
async (error, stdout, stderr) => {
if (error) {
console.log(error);
return;
}
if (stderr) {
console.log(stderr);
} else {
console.log(stdout);
}
}
);
}
however when i run this i get erorr
Error: Command failed: slither contract.sol --print human-summary
Traceback (most recent call last):
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\platform\solc.py", line 380, in get_version
with subprocess.Popen(
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2800.0_x64__qbz5n2kfra8p0\lib\subprocess.py", line 971, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2800.0_x64__qbz5n2kfra8p0\lib\subprocess.py", line 1440, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\slither\__main__.py", line 834, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\slither\__main__.py", line 87, in process_all
compilations = compile_all(target, **vars(args))
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\crytic_compile.py", line 620, in compile_all
compilations.append(CryticCompile(target, **kwargs))
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\crytic_compile.py", line 110, in __init__
self._compile(**kwargs)
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\crytic_compile.py", line 530, in _compile
self._platform.compile(self, **kwargs)
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\platform\solc.py", line 154, in compile
targets_json = _get_targets_json(compilation_unit, self._target, **kwargs)
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\platform\solc.py", line 283, in _get_targets_json
return _run_solc(
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\platform\solc.py", line 489, in _run_solc
compiler="solc", version=get_version(solc, env), optimized=is_optimized(solc_arguments)
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\platform\solc.py", line 400, in get_version
raise InvalidCompilation(error)
crytic_compile.platform.exceptions.InvalidCompilation: [WinError 2] The system cannot find the file specified
Error in contract.sol
Traceback (most recent call last):
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\platform\solc.py", line 380, in get_version
with subprocess.Popen(
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2800.0_x64__qbz5n2kfra8p0\lib\subprocess.py", line 971, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2800.0_x64__qbz5n2kfra8p0\lib\subprocess.py", line 1440, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\slither\__main__.py", line 834, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\slither\__main__.py", line 87, in process_all
compilations = compile_all(target, **vars(args))
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\crytic_compile.py", line 620, in compile_all
compilations.append(CryticCompile(target, **kwargs))
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\crytic_compile.py", line 110, in __init__
self._compile(**kwargs)
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\crytic_compile.py", line 530, in _compile
self._platform.compile(self, **kwargs)
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\platform\solc.py", line 154, in compile
targets_json = _get_targets_json(compilation_unit, self._target, **kwargs)
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\platform\solc.py", line 283, in _get_targets_json
return _run_solc(
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\platform\solc.py", line 489, in _run_solc
compiler="solc", version=get_version(solc, env), optimized=is_optimized(solc_arguments)
File "C:\Users\Ahmed\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\crytic_compile\platform\solc.py", line 400, in get_version
raise InvalidCompilation(error)
crytic_compile.platform.exceptions.InvalidCompilation: [WinError 2] The system cannot find the file specified
at ChildProcess.exithandler (node:child_process:400:12)
at ChildProcess.emit (node:events:513:28)
at maybeClose (node:internal/child_process:1093:16)
at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5) {
code: 4294967295,
killed: false,
signal: null,
cmd: 'slither contract.sol --print human-summary'
}
the error says the file is not found after specifying the path to the file i tried running the command from cmd and got same error
it works well with solc-select but doesn't work with solcjs
my assumptions
- slither only works with solc-select since it's recommended on their github
Top comments (0)