我在当地系统上有个硬汉计划。为了运行Mythril安全分析,我使用以下命令:
神话分析合同/MyFile.sol-执行-超时900接收以下错误:
"@openzeppelin/contracts/token/ERC721/ERC721.sol“:ParserError: ParserError未找到:文件未找到。搜索了以下地点:"“。
如何在命令中包括openzeppelin和其他文件导入位置?
Mythril版本v0.22.43
发布于 2022-05-18 02:31:48
正如前面提到的这里,神话并不知道@openzeppelin是什么,您必须将其映射到导入的契约的显式路径。您需要指定node_modules的路径,在其中显示@openzeppelin契约,以帮助神话将@openzeppelin字符串替换为原始路径并找到它们。
要做到这一点,您可以创建具有以下内容的具有映射的.json文件(例如,在项目根中):
{
"remappings": [ "@openzeppelin/=/share/node_modules/@openzeppelin/" ]
}*在我的例子中,绝对路径从/share/...开始,因为我使用了坞卷。
将此文件路径作为选项--solc-json /path/to/remappings/file.json添加到analyze命令中。
使用docker的最终命令如下:
docker run -it -v $(pwd):/share mythril/myth analyze /share/Contract.sol --solc-json /share/remappings.json(我从项目目录运行了docker容器,但在您的情况下也应该工作)
没有docker的最终命令几乎是相同的:
myth analyze /path/to/Contract.sol --solc-json /path/to/remappings.json发布于 2022-06-08 19:49:36
如果您使用的是:"@rari-capital/solmate/src/utils/SafeCastLib.sol“的映射,如何创建路径?
我似乎无法理解你用来创建重新映射的框架?
@最佳领航员
https://ethereum.stackexchange.com/questions/126853
复制相似问题