* Disable coloring if output is not a terminal
Color escape codes are most likely not expected if piping the output
of slither into a file or other tool. Check if stdout is a tty before
enabling colored output.
* Test cases for SSA IR generation
Attempts to verify a few basic properties of the generated SSA IR.
Currently these tests fail because of IR that seems to be incorrect.
Co-authored-by: Emilio López <2642849+elopez@users.noreply.github.com>
* Update to gh super linter 4.9.2 + linters
This PR cleanup our CI to use a fix version of gh super linter, to avoid
breaking the CI on new super linter release. Additionally it update our linters, the new versions:
- pylint 2.13.4
- black 22.3.0
Similar to https://github.com/crytic/crytic-compile/pull/252
Additionally, update to use crytic-compile@master
* workflows: parser: use solc-select from pip
The hardcoded, manually-installed version is out of date. This updates
the workflow to install directly from pip now that it is available there.
* workflows: parser: Run tests also on Windows
* workflows: parser: bump solc-select to >=v1.0.0b1
This version introduces Windows support.
* workflows: parser: FIXME: install patched crytic-compile
* workflows: features: enable Windows runs
This enables runs on windows-2022 and updates solc-select to support
running on Windows.
* workflows: features: FIXME: install patched crytic-compile
* workflows: detectors: enable Windows runs
This enables runs on windows-2022 and updates solc-select to support
running on Windows.
* workflows: detectors, features, parser: disable fail-fast
Disable fail-fast so failures in one platform do not hide failures
in the other OS.
* tests: detectors: adjust GENERIC_PATH replacement for Windows
Backslashes are escaped in the string representation, so we need
to double them before replacing. Also change generic path to a constant
string to avoid it being converted to "\GENERIC_PATH" in Windows and
getting an invalid escape error from the JSON decoder later on.
* tests: use lf endings for test code
If autocrlf is enabled on Windows, it will rewrite solc code with
CRLF file endings and break tests that depend on byte offsets in
the code files.
* workflows: detectors: FIXME: install patched crytic-compile
* workflows: ci: enable Windows runs
This enables runs on windows-2022 and updates solc-select to support
running on Windows. Some tests with Linux requirements are excluded.
* workflows: ci: FIXME: install patched crytic-compile
* workflows: *: update actions/setup-python to v3
v1 does not install Python correctly on Windows. While at it, update
all instances to v3.
* workflows: ci: add msys2 tools to path
* workflows: ci: disable broken Windows workflows
* workflows: apply linter fixes
* workflows: ci: enable dapp test
* tests: dapp: fix test
* core: normalize paths on POSIX style
* workflows: ci: enable printers tests on Windows
This fixes an issue when running Slither on Windows. Some paths were
being stringified as Windows-style (backslash) while the rest of the
paths use POSIX-style (forward slash). This caused an issue when
trying to match paths, and Slither would complain the dependency
was not present.
After this change, the paths for import directives are always expressed
as POSIX-style paths when stringified.
See the following issue for a complete error message:
https://github.com/crytic/crytic-compile/issues/241
* Add support for enhanced analyses through code comments
- Parse /// ... on variable declaration
- Disable reentrancy for variables marked as 'sec:non-reentrant'
- Create a new detector looking for wrong access control
('@custom:security write-protection="some_func")