-
Notifications
You must be signed in to change notification settings - Fork 34
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
55 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
<div align="center"> | ||
<h1> | ||
Unretardify | ||
<br> | ||
|
||
![SN_Ver_0.12.2](https://img.shields.io/badge/Starknet-0.12.2-0C0C4C.svg?labelColor=282d33&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNTgiIGhlaWdodD0iMTU5IiBmaWxsPSJub25lIiB4bWxuczp2PSJodHRwczovL3ZlY3RhLmlvL25hbm8iPjxnIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggZD0iTTAgNzkuOTk2YzAgNDMuNjMxIDM1LjM2OSA3OC45OTkgNzguOTk5IDc4Ljk5OVMxNTggMTIzLjYyNyAxNTggNzkuOTk2IDEyMi42MjkuOTk4IDc4Ljk5OS45OTggMCAzNi4zNjYgMCA3OS45OTZ6IiBmaWxsPSIjMGMwYzRmIi8+PHBhdGggZD0iTTQ0LjE1NCA2MS4zODVsMS45NS02LjAyNWMuMzk2LTEuMjI1IDEuMzYzLTIuMTc5IDIuNTkzLTIuNTU1bDYuMDU0LTEuODYyYS45LjkgMCAwIDAgLjAxNC0xLjcwOGwtNi4wMjctMS45NWMtMS4yMjMtLjM5Ni0yLjE3Ny0xLjM2NC0yLjU1NS0yLjU5M2wtMS44Ni02LjA1NGEuOS45IDAgMCAwLTEuNzA4LS4wMTFsLTEuOTUgNi4wMjVjLS4zOTYgMS4yMjMtMS4zNjQgMi4xNzctMi41OTMgMi41NTVsLTYuMDU0IDEuODZjLS44MzguMjU4LS44NDcgMS40MzgtLjAxNCAxLjcwOGw2LjAyNyAxLjk1YTMuOTUgMy45NSAwIDAgMSAyLjU1NSAyLjU5NmwxLjg2IDYuMDUyYS45LjkgMCAwIDAgMS43MDguMDE0eiIgZmlsbD0iI2ZhZmFmYSIvPjxwYXRoIGQ9Ik0xMzkuODQ4IDU3Ljg3OWMtMi40OTYtMi43OTEtNi4zOTEtNC4zNjItMTAuMTc4LTUuMDA3LTMuODE3LS42MTktNy44Mi0uNTYxLTExLjU4OC4xMDgtNy42MjUgMS4yOS0xNC41NTIgNC40NDctMjAuNTk0IDguMzQyLTMuMTM4IDEuOTExLTUuODEzIDQuMTIzLTguNTg1IDYuMzc2LTEuMzM2IDEuMTM5LTIuNTUzIDIuMzUyLTMuODIyIDMuNTQ4bC0zLjQ2NSAzLjQ0OGMtMy43NjUgMy45MzYtNy40NzcgNy41MjEtMTEuMDY3IDEwLjQ5Mi0zLjYwNSAyLjk1OC02Ljk3NiA1LjIwNC0xMC4yOTggNi43NzItMy4zMiAxLjU3Ny02Ljg3MiAyLjUwNC0xMS41MDIgMi42NTMtNC41ODkuMTYyLTEwLjAxOS0uNjY2LTE1LjgyNy0yLjAzNC01LjgzOS0xLjM2MS0xMS45NzEtMy4zMDEtMTguODIyLTQuOTcxIDIuMzkxIDYuNjMzIDUuOTkxIDEyLjQ5NCAxMC42MTMgMTcuODUyIDQuNjc3IDUuMjY1IDEwLjUxNiAxMC4wNjQgMTguMDE4IDEzLjIyIDcuMzkzIDMuMjI2IDE2LjY4NCA0LjM4MyAyNS4zNzIgMi42MzYgOC43MS0xLjY3NiAxNi4zNTQtNS43MDcgMjIuNTMzLTEwLjM2OCA2LjE5NC00LjcwOSAxMS4yMDYtMTAuMDc0IDE1LjQzMS0xNS42NSAxLjE2Ni0xLjU0MSAxLjc4My0yLjQwMyAyLjYyNy0zLjYwN2wyLjMzMy0zLjQ1NWMxLjYyMS0yLjEzNyAzLjA5Ny00LjU3MSA0LjcwMS02LjY4OSAzLjE0Ni00LjQzNSA2LjI0OC04Ljg2NSA5Ljg1Mi0xMi45NDcgMS44MTQtMi4wNyAzLjcyNy00LjA1IDUuOTg1LTUuOTUzIDEuMTI2LS45MjkgMi4zNDMtMS44MzggMy42OTEtMi42NTdhMTcuNSAxNy41IDAgMCAxIDQuNTkyLTIuMTA5eiIgZmlsbD0idXJsKCNBKSIvPjxwYXRoIGQ9Ik0xMzkuODQ4IDU3Ljg3OGMtMi42ODEtNi43NjYtNy42NjYtMTIuNDYxLTE0LjM1Ny0xNi42NjQtNi42NS00LjE1Ny0xNS44ODYtNi4yNzgtMjUuMDM5LTQuNDY5LTQuNTIxLjg3NC04LjkwMiAyLjU1OC0xMi43NDYgNC44LTMuODI3IDIuMjMzLTcuMjU2IDQuOTIxLTEwLjIyNSA3LjgwNS0xLjQ4MiAxLjQ0Ny0yLjgyNyAyLjk1Ni00LjE2NCA0LjQ3NGwtMy40NjQgNC40MTYtNS4zNSA3LjEwOWMtNi44MiA5LjE0Ni0xNC4xNjUgMTkuODY1LTI2LjIxOCAyMy4wNDItMTEuODMyIDMuMTE4LTE2Ljk2NC4zNTctMjQuMTg2LS43ODQgMS4zMiAzLjQwOSAyLjk1NiA2LjcyIDUuMTc0IDkuNjMyIDIuMTc2IDIuOTcyIDQuNzQ2IDUuNzYzIDcuOTQyIDguMTU1IDEuNjE1IDEuMTQ5IDMuMzIgMi4yODMgNS4yMTMgMy4yNDUgMS44ODUuOTI5IDMuOTE4IDEuNzQ3IDYuMDg4IDIuMzYzIDQuMzE2IDEuMTgzIDkuMTc1IDEuNTk3IDEzLjg4Ljk2MSA0LjcwNy0uNjI4IDkuMjA2LTIuMTIgMTMuMTM5LTQuMTAxIDMuOTYyLTEuOTYyIDcuNDEzLTQuMzUyIDEwLjQ5NC02Ljg3NCA2LjEyNi01LjA4NyAxMC44OS0xMC43MDggMTQuOTE1LTE2LjM4OSAyLjAyNC0yLjg0MSAzLjg2Mi01LjczNSA1LjU2MS04LjYzbDItMy40NDcgMS44NTgtMi45NjVjMi41MzUtMy43OTMgNS4wMTQtNi44MzQgOC4wMjUtOS4xMTcgMi45NjktMi4zNDIgNy4xMDQtNC4wNzIgMTIuNjI5LTQuNDc0IDUuNTAyLS40MDcgMTEuODU0LjM0NSAxOC44MyAxLjkxM3oiIGZpbGw9IiNmYWZhZmEiLz48cGF0aCBkPSJNMTEwLjA4MSAxMTQuMDk1YzAgNC45NjkgNC4wMzEgOSA5IDlhOSA5IDAgMSAwIDAtMThjLTQuOTY5IDAtOSA0LjAzLTkgOXoiIGZpbGw9InVybCgjQikiLz48L2c+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJBIiB4MT0iMTM5LjE3NiIgeTE9IjU1LjUwNSIgeDI9IjI4LjUiIHkyPSIxMTciIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjZWM3OTZiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZTE3NWIxIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9IkIiIHgxPSIxMjguMDciIHkxPSIxMDcuNzgxIiB4Mj0iMTEwLjA2OSIgeTI9IjEwOS42ODUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjZWM3OTZiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZTE3NWIxIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PC9zdmc+) | ||
[![Check Workflow Status](https://github.com/keep-starknet-strange/snos/actions/workflows/check.yml/badge.svg)](https://github.com/keep-starknet-strange/snos/actions/workflows/check.yml) | ||
|
||
[![Exploration_Team](https://img.shields.io/badge/Exploration_Team-29296E.svg?&style=for-the-badge&logo=data:image/svg%2bxml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJhIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxODEgMTgxIj48ZGVmcz48c3R5bGU+LmJ7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48cGF0aCBjbGFzcz0iYiIgZD0iTTE3Ni43Niw4OC4xOGwtMzYtMzcuNDNjLTEuMzMtMS40OC0zLjQxLTIuMDQtNS4zMS0xLjQybC0xMC42MiwyLjk4LTEyLjk1LDMuNjNoLjc4YzUuMTQtNC41Nyw5LjktOS41NSwxNC4yNS0xNC44OSwxLjY4LTEuNjgsMS44MS0yLjcyLDAtNC4yN0w5Mi40NSwuNzZxLTEuOTQtMS4wNC00LjAxLC4xM2MtMTIuMDQsMTIuNDMtMjMuODMsMjQuNzQtMzYsMzcuNjktMS4yLDEuNDUtMS41LDMuNDQtLjc4LDUuMThsNC4yNywxNi41OGMwLDIuNzIsMS40Miw1LjU3LDIuMDcsOC4yOS00LjczLTUuNjEtOS43NC0xMC45Ny0xNS4wMi0xNi4wNi0xLjY4LTEuODEtMi41OS0xLjgxLTQuNCwwTDQuMzksODguMDVjLTEuNjgsMi4zMy0xLjgxLDIuMzMsMCw0LjUzbDM1Ljg3LDM3LjNjMS4zNiwxLjUzLDMuNSwyLjEsNS40NCwxLjQybDExLjQtMy4xMSwxMi45NS0zLjYzdi45MWMtNS4yOSw0LjE3LTEwLjIyLDguNzYtMTQuNzYsMTMuNzNxLTMuNjMsMi45OC0uNzgsNS4zMWwzMy40MSwzNC44NGMyLjIsMi4yLDIuOTgsMi4yLDUuMTgsMGwzNS40OC0zNy4xN2MxLjU5LTEuMzgsMi4xNi0zLjYsMS40Mi01LjU3LTEuNjgtNi4wOS0zLjI0LTEyLjMtNC43OS0xOC4zOS0uNzQtMi4yNy0xLjIyLTQuNjItMS40Mi02Ljk5LDQuMyw1LjkzLDkuMDcsMTEuNTIsMTQuMjUsMTYuNzEsMS42OCwxLjY4LDIuNzIsMS42OCw0LjQsMGwzNC4zMi0zNS43NHExLjU1LTEuODEsMC00LjAxWm0tNzIuMjYsMTUuMTVjLTMuMTEtLjc4LTYuMDktMS41NS05LjE5LTIuNTktMS43OC0uMzQtMy42MSwuMy00Ljc5LDEuNjhsLTEyLjk1LDEzLjg2Yy0uNzYsLjg1LTEuNDUsMS43Ni0yLjA3LDIuNzJoLS42NWMxLjMtNS4zMSwyLjcyLTEwLjYyLDQuMDEtMTUuOGwxLjY4LTYuNzNjLjg0LTIuMTgsLjE1LTQuNjUtMS42OC02LjA5bC0xMi45NS0xNC4xMmMtLjY0LS40NS0xLjE0LTEuMDgtMS40Mi0xLjgxbDE5LjA0LDUuMTgsMi41OSwuNzhjMi4wNCwuNzYsNC4zMywuMTQsNS43LTEuNTVsMTIuOTUtMTQuMzhzLjc4LTEuMDQsMS42OC0xLjE3Yy0xLjgxLDYuNi0yLjk4LDE0LjEyLTUuNDQsMjAuNDYtMS4wOCwyLjk2LS4wOCw2LjI4LDIuNDYsOC4xNiw0LjI3LDQuMTQsOC4yOSw4LjU1LDEyLjk1LDEyLjk1LDAsMCwxLjMsLjkxLDEuNDIsMi4wN2wtMTMuMzQtMy42M1oiLz48L3N2Zz4=)](https://github.com/keep-starknet-strange) | ||
|
||
</h1> | ||
</div> | ||
|
||
A collection of lints to catch common mistakes and improve your [Cairo](https://github.com/starkware-libs/cairo) code. | ||
|
||
## Usage | ||
|
||
Unretardify can either be used as a library or as a standalone binary. It can either just detect or fix the detected | ||
problems. | ||
|
||
## Contributing | ||
|
||
To run the tests you'll need to provide the path to the cairo corelib (at some point this should be automated but we're | ||
not there yet). | ||
|
||
```sh | ||
CORELIB_PATH="/path/to/corelibe" cargo test | ||
``` | ||
|
||
Each lint should have its own tests and should be extensive. To create a new test for a lint you need to create a file | ||
in the [test_files folder](./crates/unretardify-core/tests/test_files/) and should be named as your lint. The file | ||
should have this format: | ||
|
||
```txt | ||
//! > Test name | ||
//! > cairo_code | ||
fn main() { | ||
let a: Option<felt252> = Option::Some(1); | ||
} | ||
``` | ||
|
||
Then in the [test file](crates/unretardify-core/tests/tests.rs) declare your lint like so: | ||
|
||
```rs | ||
test_file!(if_let, "simple if let", "simple if let with scope"); | ||
``` | ||
|
||
The first argument is the lint name (also the file name) and the other ones are the test names. After that you can run | ||
|
||
``` | ||
FIX_TESTS=1 cargo test -p unretardify-core <name_of_lint> | ||
``` | ||
|
||
This will generate the expected values in your test file. Make sure it is correct. |