crytic-compile icon indicating copy to clipboard operation
crytic-compile copied to clipboard

[Bug-Candidate]: Running Slither with `--compile-force-framework hardhat` flag doesn't works while contract compiles with Hardhat

Open ds-rgangavasi opened this issue 1 year ago • 5 comments

Describe the issue:

Repo: Steadefi

  • The repository includes two framework files: Hardhat and Foundry.

  • Goal: My goal is to always compile such repositories using Hardhat and provide the artifacts to Slither, making it mandatory for slither to use Hardhat artifacts exclusively.

  • Where I need Help?: When running slither with --compile-force-framework hardhat slither runs into error, but with default Foundry (no flag provided) works flawlessly. I need to run it using HH artifacts.

  • The project compiles with hardhat: npx hardhat compile --force. | forge build also works. image

  • Used tool: Slither

  • command try 1: slither . --ignore-compile --filter-paths \.t\.sol$,\.s\.sol$ --compile-force-framework hardhat | fails with error: ERROR:Slither:Unable to compile all targets.

  • command try 2: slither . --filter-paths \.t\.sol$,\.s\.sol$ --compile-force-framework hardhat | fails with error: ERROR:Slither:Unable to compile all targets.

  • command try 3: slither . --filter-paths \.t\.sol$,\.s\.sol$ | works with foundry as default. image

  • command try 4: slither . --filter-paths \.t\.sol$,\.s\.sol$ --compile-force-framework hardhat --exclude-dependencies | fails with error: ERROR:Slither:Unable to compile all targets. image

  • command try 5: slither . --filter-paths \.t\.sol$,\.s\.sol$ --hardhat-artifacts-directory ./artifacts --exclude-dependencies --ignore-compile | fails with error: ERROR:Slither:Unable to compile all targets.

Code example to reproduce the issue:

Repo: Steadefi

Version:

python --version node --version npm --version yarn --version npx hardhat --version forge --version slither --version

Python 3.11.7
v20.15.1
10.7.0
1.22.22
2.18.2
forge 0.2.0 (fe2acca 2024-07-22T00:20:15.468269927Z)
0.10.3

Relevant log output:

ERROR:Slither:Unable to compile all targets.

ds-rgangavasi avatar Aug 06 '24 14:08 ds-rgangavasi

Hi, thanks for the report! Can you confirm what happens if you run the following?

slither . --compile-force-framework hardhat

elopez avatar Aug 06 '24 15:08 elopez

Hi, thanks for the report! Can you confirm what happens if you run the following?

slither . --compile-force-framework hardhat

image

  • It starts compiling using hardhat
  • then while running tool, fails with error: ERROR:Slither:Unable to compile all targets.

ds-rgangavasi avatar Aug 06 '24 15:08 ds-rgangavasi

Does crytic-compile . print any different error?

elopez avatar Aug 06 '24 15:08 elopez

crytic-compile .

  • crytic-compile . --compile-force-framework hardhat gives following error: ERROR:CryticCompile:Unknown file: forge-std/console.sol image

crytic-compile --version 0.3.3

ds-rgangavasi avatar Aug 06 '24 16:08 ds-rgangavasi

I had a look locally, the paths generated on the Hardhat artifacts seem to be a bit odd, in particular the ones for forge-std/console.sol. You can work around the issue meanwhile by running the following from the repo root ln -s ../lib/forge-std/src node_modules/forge-std (or by using Foundry, which you noted works fine)

elopez avatar Aug 06 '24 18:08 elopez