Какие инструменты статического анализа кода вы знаете и используете в CI/CD?

«Какие инструменты статического анализа кода вы знаете и используете в CI/CD?» — вопрос из категории CI/CD, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В DevOps-практике статический анализ кода (SAST) — обязательный этап пайплайна для обеспечения качества и безопасности. Я настраиваю его как часть CI, чтобы проблемы обнаруживались до мержа кода.

Основные инструменты, которые интегрирую в CI/CD:

  • SonarQube / SonarCloud — основной инструмент для комплексного анализа. Настраиваю Quality Gates, которые блокируют мерж, если не пройдены проверки на покрытие тестами, дублирование кода, уязвимости безопасности (OWASP Top 10) и запахи кода (code smells). Поддерживает более 20 языков.
  • Semgrep — использую для поиска шаблонов уязвимостей и соблюдения внутренних стандартов кодирования. Легко интегрируется в любой CI.
  • Trivy или Grype — сканеры уязвимостей в зависимостях (SBOM). Запускаю их на этапе сборки Docker-образов.
  • Checkov или Terrascan — для статического анализа инфраструктурного кода (Terraform, CloudFormation, Kubernetes). Проверяют на безопасные конфигурации и compliance.
  • Hadolint — линтер для Dockerfile, проверяет на best practices.

Пример конфигурации этапа в GitLab CI:

stages:
  - test
  - security

sonarqube-check:
  stage: test
  image: sonarsource/sonar-scanner-cli
  script:
    - sonar-scanner -Dsonar.projectKey=my_project -Dsonar.sources=.

sast:
  stage: security
  script:
    - semgrep --config=p/security-audit .
    - trivy fs --severity HIGH,CRITICAL .
  allow_failure: false # Блокируем пайплайн при критических уязвимостях

infra-scan:
  stage: security
  script:
    - checkov -d terraform/

Практика: Все эти проверки выполняются автоматически при каждом пулл-реквесте. Результаты комментируются в MR, а критичные проблемы блокируют pipeline. Это позволяет "сдвинуть безопасность влево" и экономить время на ревью.