* 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")
* Improve slither-flat
- Better support of multiple compilation unit
- Better support if there are multiple contracts with the same name
- Better support of top level object (partially fix#955). The support
for the local import strategy is missing
"show_ignore_findings" calls itself instead of returning a similar named variable.
This causes an infinite recursion, resulting in an RecursionError when creating a Slither Object via the Python API
These test files are a large part of the repository, and do not need to be
linted. The large number of files makes the enumeration slow when performed
by the Super Linter, which results in CI jobs taking considerably long.
This PR ignores said files in hopes to speed up the CI workflows.
It also switches the Super Linter image to the slim version, which should
be slightly faster to download.
Fixes: #1084