Amarna adalah analyzer dan linter statis untuk bahasa pemrograman Kairo.
Menganalisis proyek Kairo di direktori saat ini dan mengekspor hasil sarif ke file:
amarna . -o out.sarif Analisis file tunggal file.cairo
amarna file.cairo -o out.sarif Menganalisis file.cairo tunggal.cairo dan cetak ringkasan hasil:
amarna file.cairo -s| # | Aturan | Apa yang ditemukannya | Dampak | Presisi |
|---|---|---|---|---|
| 1 | Operasi Aritmatika | Semua penggunaan operasi aritmatika +, -, *, dan / / | Info | Tinggi |
| 2 | Argumen yang tidak digunakan | Argumen fungsi yang tidak digunakan dalam fungsi di mana mereka muncul | Peringatan | Tinggi |
| 3 | Impor yang tidak digunakan | Impor yang tidak digunakan | Info | Tinggi |
| 4 | Dekorator yang salah tipe | Dekorator Kode yang Dikecek | Info | Tinggi |
| 5 | Fungsi yang tidak digunakan | Fungsi yang tidak pernah dipanggil | Info | Sedang |
| 6 | Kode kesalahan | Panggilan fungsi yang memiliki nilai pengembalian yang harus diperiksa | Info | Tinggi |
| 7 | Penggunaan menegaskan yang tidak konsisten | Menegaskan bahwa menggunakan konstanta yang sama dengan cara yang berbeda, misalnya, assert_le(amount, BOUND) dan assert_le(amount, BOUND - 1) | Peringatan | Tinggi |
| 8 | Toko Mati | Variabel yang diberi nilai tetapi tidak digunakan sebelum pernyataan pengembalian | Info | Sedang |
| 9 | Luapan yang tidak dicentang | Panggilan fungsi yang mengabaikan bendera overflow yang dikembalikan, misalnya, uint256_add | Peringatan | Tinggi |
| 10 | Nilai Pengembalian Alamat Penelepon | Fungsi Panggilan ke fungsi get_caller_address . | Info | Tinggi |
| 11 | Tabrakan variabel penyimpanan | Multiple @storage_var dengan nama yang sama. (Teram) | Peringatan | Tinggi |
| 12 | Impor fungsi implisit | Fungsi dengan dekorator @external, @view, @l1_handler yang secara implisit diimpor. (Teram) | Info | Tinggi |
| 13 | Fungsi tampilan yang tidak diperkuat | Modifikasi Negara dalam Fungsi @view | Info | Tinggi |
| 14 | Variabel yang tidak diinisialisasi | Variabel lokal yang tidak pernah diinisialisasi. | Info | Tinggi |
Analisis proyek Kairo di direktori saat ini dan hasil ekspor ke file:
amarna . -o out.sarif Menganalisis satu file deleverage.cairo dan mengekspor hasil ke file:
amarna deleverage.cairo -o deleverage.sarif Menganalisis satu code.cairo file.cairo dan cetak ringkasan hasil:
amarna code.cairo -s Parse file kairo dan output ast yang dipulihkan di png :
amarna file.cairo -pngMenganalisis file Kairo dengan aturan yang tidak digunakan:
amarna file.cairo --rules=unused-importsAnalisis file Kairo menggunakan semua aturan kecuali aturan aritmatika-add:
amarna file.cairo --except-rules=arithmetic-addMenu Bantuan Lengkap adalah:
usage: amarna [-h] [-p] [-o OUTPUT] [-s] [-png] [-rules RULES] [-exclude-rules EXCLUDE_RULES] [-show-rules] [-disable-inline] -f
Amarna is a static-analyzer for the Cairo programming language.
positional arguments:
-f the name of the .cairo file or directory with .cairo files to analyze
optional arguments:
-h, --help show this help message and exit
-p, --print print output
-o OUTPUT, --output OUTPUT
file to write the output results in sarif format
-s, -summary, --summary
output summary
-png, --png save a png with the AST of a file
-rules RULES, --rules RULES
Only run this set of rules. Enter rule names comma-separated, e.g., dead-store,unused-arguments
-exclude-rules EXCLUDE_RULES, --exclude-rules EXCLUDE_RULES
Exclude these rules from the analysis. Enter rule names comma-separated, e.g., dead-store,unused-arguments
-show-rules, --show-rules
Show all supported rules and descriptions.
-disable-inline, --disable-inline
Disable rules with inline comments. The comments should be the first line and of the form: # amarna: disable=rulename1,rulename2
Format file sarif adalah format standar untuk alat analisis statis dan dapat dilihat dalam vScode dengan ekstensi resmi.
pip install amarnaAturan analisis statis dapat berupa:
Contohnya adalah:
Dapatkan nama aturan yang saat ini diimplementasikan dengan:
amarna --show-rulesJalankan Amarna dengan seperangkat aturan yang ditentukan menggunakan
amarna --rules=rule1,rule2 . Perintah berikut hanya akan menjalankan aturan unused-imports dan mencetak hasil ringkasan
amarna --rules=unused-imports . -sJalankan Amarna dengan semua aturan kecuali serangkaian aturan yang ditentukan menggunakan
amarna --exclude-rules=arithmetic-add,arithmetic-sub . -sAnda dapat mengubah baris pertama file Kairo untuk menonaktifkan aturan tertentu yang ditetapkan pada file itu. Misalnya, menambahkan baris
// amarna: disable=arithmetic-div,arithmetic-sub,arithmetic-mul,arithmetic-add sebagai baris pertama file.cairo dan menjalankan Amarna dengan
amarna directory/ --disable-inline -s tidak akan melaporkan aturan aritmatika apa pun ke file file.cairo .