All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
SuspiciousMessageMode
detector now suggests using SendDefaultMode instead of 0 for mode: PR #199
SuspiciousMessageMode
detector: PR #193SendInLoop
detector: PR #168CellOverflow
detector: PR #177UnboundMap
detector: Issue #50UnusedExpressionResult
detector: PR #190- Warning suppressions: PR #203
--list-detectors
CLI option: PR #192- Import Graph: PR #180
- Leverage
ImportGraph
to resolve entry points: PR #194 - Accept directory as input: PR #195
- Timeout on executing detectors: Issue #47
- Improved and optimized the test suite: PR #184
- Introduced the branded type pattern to improve type safety: Issue #191
- Return a successful exit code when Misti analysis does not generate any warnings
- Make the filepath argument optional: Issue #170
- Return a non-zero exit code when warnings are raised or an execution error occurs
OptimalMathFunction
detector: Issue #146DuplicatedCondition
detector: Issue #147UnusedOptional
detector: Issue #86EnsurePrgSeed
detector: Issue #151FalseCondition
detector: Issue #93- Introduces Misti tools – additional modules that can be used alongside detectors to cover various user tasks beyond warning generation: PR #154
- Support warnings suppression: Issue #152
- CFG Dump: Mermaid output: Issue #141
- Misti execution result in the JSON format using
--output json
/-o json
: Issue #123 - ANSI escape sequences to colorize output and the
--no-colors
CLI option to disable it - Driver in a single-contract mode tries to copy all the .tact and .fc files to resolve imports
- Short CLI options. See: https://nowarp.io/tools/misti/docs/next/tutorial/cli
- CLI:
--min-severity/-m
option to filter warnings - More informative error messages when an incorrect Misti or Tact configuration file is set
- Include Git revision number to non-release version numbers
- Warnings now have more comprehensive descriptions and are sorted by severity
DumpIsUsed
: Report onlydump
calls with non-literal arguments- Misti API to execute the driver programmatically
ArgCopyMutation
: Report once per function: Issue #150ArgCopyMutation
: Don't report arguments returned from the function: Issue #149- Rename CLI options:
--suppress
->--disable-detectors
;--detectors
->--enable-detectors
ReadOnlyVariables
: Don't suggest creating constants from variables resulted from fields and method calls: Issue #148
NeverAccessedVariables
: False positive: reported a map variable used in theforeach
loop- Path to the compiled
main.js
in./bin/misti
StringReceiversOverlap
detector: PR #122AsmIsUsed
detector: Issue #119PreferredStdlibApi
detector: Issue #132InheritedStateMutation
detector: Issue #64ArgCopyMutation
detector: Issue #125- Allow running Misti without Souffle installation: Issue #45
- Add
index.ts
in order to simplify writing custom detectors: PR #140 --dump-ast
CLI option.--suppress
CLI option: Issue #135--souffle-binary
CLI option to specify path to the Souffle executable--souffle-verbose
CLI option to include comments to the generated Souffle files: PR #120- Benchmarks for executing detectors. Use e.g.
yarn benchmark ./test/good/sample-jetton.tact
. - Public API to handle Tact stdlib paths
- Detector templates and the
--new-detector
CLI option: PR #105 - A script to generate detectors documentation:
./scripts/generateDetectorDocs.ts
- The
--detectors
CLI option can be used to quickly run Misti with the specified detectors, e.g.,yarn misti --detectors ReadOnlyVariables,./examples/implicit-init/implicitInit.ts:ImplicitInit
TactASTUtil
: API functions to check mutability of the statement.- Asynchronous detectors and Souffle execution: PR #118
- Supported Tact 1.5: Issue #33
- Moved Souffle bindings to a its own repository https://github.com/nowarp/souffle.js: PR #120
- Refined the CLI interface.
- The
engines
property inpackage.json
and its strict checking to ensure minimal required Node.js version is 22 (follows-up changes in Tact).
- Adjust option names in Config and JSONSchema
- Paths to custom detectors: Fix support for absolute paths and allow developers to specify the
.ts
extension to ensure it works exactly as described in the documentation: https://nowarp.github.io/tools/misti/docs/next/hacking/custom-detector/ - Don't show nowarp.io documentation links for custom detectors: Issue #128
release-it
command to update package on npm
- Improve internal Misti driver API used in tests and
blueprint-misti
ConstantAddress
detector: PR #90BranchDuplicate
detector: Issue #87DumpIsUsed
detector: Issue #100FieldDoubleInit
detector: Issue #97PreferAugmentedAssign
detector: Issue #78- An API to execute Misti from a string list of arguments
--dump-config
CLI flag that dumps the Misti configuration file in use: PR #79- Naming convention to skip unused identifiers: PR #82
--all-detectors
CLI flag activates all the available built-in detectors, regardless of whether they are selected in the config
- IRBuilder: Mark nodes without successors as
Exit
kind: PR #80 - Supported Tact 1.4.4
- IRBuilder: Save trait definitions: PR #95
neverAccessedVariables
does not report write-only variables: Issue #101
- Set the actual documentation URL in warnings.
- The npm postinstall script tries to build a contract project after running
yarn add @nowarp/misti
.
- Initial release