Scanmycode-Ce – это решение для сканирования кода/SAST/статического анализа/Linting, использующее множество инструментов/сканеров с одним отчетом.
Вы также можете добавить к нему любой инструмент.
В настоящее время он поддерживает множество языков и технических стеков.
Похож на SonarQube, но все же отличается от него.
Чтобы установить его, установите docker и docker-compose, а затем:
Самый быстрый (использовать собранные образы DockerHub).
Если не уверены, используйте этот вариант.
Перейдите в браузере на:
http://localhost:5000
Зарегистрируйтесь на месте (и войдите в систему при необходимости)
Скрипт содержит 36 шагов по установке.
Под капотом
Progpilot, PMD, Bandit, Brakeman, Gosec, confused, semgrep, trufflehog3, jshint, log4shell через пользовательское правило semgrep и другие(ие). Некоторые были изменены.
В Community Edition нет поддержки GitHub и других плагинов.
Но в остальном все то же самое.
Чем Scanmycode отличается от SonarQube?
Оба используют статический анализ для поиска ошибок и дефектов, но есть несколько отличий.
- Scanmycode может быть расширен любым инструментом, производящим вывод JSON (любой бинарный файл, на любой технологии/языке/продукте). Это самое большое отличие.
- Scanmycode является Open Source, SonarQube также предлагает версию с открытым исходным кодом, но ей не хватает возможностей (например, 12 из поддерживаемых языков не доступны в open-source предложении, а более мощные функции потока данных доступны только в платных версиях).
- Scanmycode поддерживает сканирование только измененных файлов (дифференциальный анализ), SonarQube – нет.
- Scanmycode также использует semgrep в качестве одного из инструментов (без правил сообщества semgrep, только пользовательские правила Scanmycode)
Ниже приведены преимущества semgrep (также преимущества Scanmycode перед SonarQube):
“Расширение Semgrep с помощью пользовательских правил очень просто, поскольку правила Semgrep выглядят как исходный код, который вы пишете. Написание пользовательских правил в SonarQube ограничено несколькими языками и требует знакомства с Java и абстрактными синтаксическими деревьями (AST)”.
“Semgrep фокусируется на скорости и простоте использования, делая возможным анализ со скоростью до 20K-100K loc/sec на правило. Авторы SonarQube сообщают о примерно 0,4K loc/sec для наборов правил в продакшене.”
Источник: сайт semgrep
Scanmycode основан на QuantifedCode.
QuantifiedCode – это платформа для анализа и автоматизации кода.
Она помогает вам отслеживать проблемы и метрики в ваших программных проектах и может быть легко расширена для поддержки новых типов анализа.
Приложение состоит из нескольких частей:
- Фронтенд, реализованный в виде приложения React.js
- Бэкенд, реализованный в виде приложения на Flask, которое предоставляет REST API, потребляемый фронтендом
- Фоновый рабочий, реализованный с помощью Celery, который выполняет анализ кода
В настоящее время поддерживает: PHP, Java, Scala, Python, Ruby, Javascript, GO, сканирование секретов, путаницу зависимостей, троянские источники, проверки с открытым исходным кодом и проприетарные проверки (всего около 1000 проверок).
Преимущества:
- Много инструментов, один отчет (унификация)
- Совместная работа над результатами. Возможность отметить ложноположительные результаты
- Можно Включить/выключить каждую отдельную проверку в Checkers
- Сейчас 1000 проверок (линтеры, статический анализ кода/сканирование кода)
- может быть добавлен любой инструмент, выводящий JSON
- быстрый (проверяет только новый код при повторной проверке)
- Поддержка Git (HTTPS/TLS и SSH). Для частных репозиториев только SSH.
все REST API вызываемые (CI/CD интегрируемые) - Швейцарский армейский нож/SIEM для сканирования кода
- 100% прозрачность кода и полный контроль