Amarna является статическим анализатором и Линтером для языка программирования Каира.
Проанализируйте Каирский проект в текущем каталоге и экспортируйте результаты SARIF в файл:
amarna . -o out.sarif Проанализируйте один file.cairo файла. Кайро и экспортируйте результаты SARIF в файл:
amarna file.cairo -o out.sarif Проанализируйте один file.cairo файла. Кайро и распечатайте сводку результатов:
amarna file.cairo -s| # | Правило | Что он находит | Влияние | Точность |
|---|---|---|---|---|
| 1 | Арифметические операции | Все использование арифметических операций +, -, *и / / | Информация | Высокий |
| 2 | Неиспользованные аргументы | Функциональные аргументы, которые не используются в функциях, в которых они появляются | Предупреждение | Высокий |
| 3 | Неиспользованный импорт | Неиспользованный импорт | Информация | Высокий |
| 4 | Mistyped Decorators | Декораторы кода Mistyped | Информация | Высокий |
| 5 | Неиспользованные функции | Функции, которые никогда не называются | Информация | Середина |
| 6 | Коды ошибок | Вызовы функций имеют возвращаемые значения, которые необходимо проверить | Информация | Высокий |
| 7 | Непоследовательное использование утверждения | Утверждает, что использует одну и ту же постоянную по -разному, например, assert_le(amount, BOUND) и assert_le(amount, BOUND - 1) | Предупреждение | Высокий |
| 8 | Мертвые магазины | Переменные, которые назначают значения, но не используются перед оператором возврата | Информация | Середина |
| 9 | Неконтролируемые переполнения | Функциональные вызовы, которые игнорируют возвращенные флаги переполнения, например, uint256_add | Предупреждение | Высокий |
| 10 | Адрес абонента возвращается | Функциональные вызовы в функции get_caller_address . | Информация | Высокий |
| 11 | Столкновение переменной хранилища | Несколько @storage_var с одним и тем же именем. (устарело) | Предупреждение | Высокий |
| 12 | Импорт неявных функций | Функция с декоратором @external, @view, @l1_handler который неявно импортируется. (устарело) | Информация | Высокий |
| 13 | Неосведомленная функция представления | Модификация состояния в функции @view | Информация | Высокий |
| 14 | Ненициализированная переменная | Локальные переменные, которые никогда не инициализируются. | Информация | Высокий |
Проанализируйте Каирский проект в текущем каталоге и результатах экспорта в файл:
amarna . -o out.sarif Проанализируйте один файл deleverage.cairo и результаты экспорта в файл:
amarna deleverage.cairo -o deleverage.sarif Проанализируйте единый файл code.cairo и распечатайте краткое изложение результатов:
amarna code.cairo -s Проанализируйте каирский файл и вытащите восстановленный AST в png :
amarna file.cairo -pngПроанализируйте файл Каира с правилом unare_import:
amarna file.cairo --rules=unused-importsПроанализируйте файл Каира, используя все правила, кроме правила арифметического добавления:
amarna file.cairo --except-rules=arithmetic-addПолная помощь в меню:
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
Формат файла SARIF является стандартным форматом для инструментов статического анализа и может быть просмотрен в VSCODE с официальным расширением.
pip install amarnaПравила статического анализа могут быть:
Примеры этого:
Получите имена в настоящее время реализованных правил:
amarna --show-rulesЗапустить Amarna с определенным набором правил, используя
amarna --rules=rule1,rule2 . Следующая команда будет только запускать правило unused-imports и распечатать резюме результат
amarna --rules=unused-imports . -sЗапустите Amarna со всеми правилами, кроме определенного набора правил, используя
amarna --exclude-rules=arithmetic-add,arithmetic-sub . -sВы можете изменить первую строку файла Каира, чтобы отключить конкретное правило, установленное в этом файле. Например, добавление линии
// amarna: disable=arithmetic-div,arithmetic-sub,arithmetic-mul,arithmetic-add в качестве первой строки file.cairo и запуска Amarna с
amarna directory/ --disable-inline -s Не сообщит о каком -либо арифметическом правиле в файл file.cairo .