Internships
Register
Copyright © 2000—2025 JetBrains s.r.o.

Разработка сбора статистики для Qodana

Description

Введение:

Qodana – новый статический анализатор кода на базе продуктов IntelliJ. Анализ кода осуществляется с помощью инспекций. Для каждого файла из анализируемого проекта инспекция берет его AST-дерево и запускает на нем алгоритм, который проверяет какие-то правила языка (несоответствие типов, некорректное использование оператора и т.д.). Результат выполнения инспекции внутри IDE – подсветка кода цветом, в зависимости от серьезности проблемы. Результат выполнения инспекции внутри Qodana - запись о наличии проблемы(+ ее атрибуты) в выходном файле.

Проверка всего кода большим набором инспекций(для java их около 300) весьма трудоемкий процесс(проверка кода Idea Ultimate профилем по умолчанию занимает 7 часов). Для анализа затрат существует сервис статистики на который мы отправляем время их работы, однако этого недостаточно, чтобы делать качественные выводы об оптимизации работы Qodana.

Задачи:

Требуется доработать сбор статистики, а также построить отчет который поможет принимать решения об оптимизации/включения по умолчанию инспекций. Для этого нужно:

  • Увеличить количество отправляемых данных, разбив время работы инспекции на составные куски. Потребуется дорабатывать код платформы Intellij IDEA, возможно инструментировать байткод.

  • Научить наш сервис строить понятный отчет по конкретной сессии Qodana. Это работа с нашим сервисом статистики и AWS Athena.

Ожидаемый результат стажировки:

Успешный результат выглядит как возможность построить отчет о том, на что мы потратили машинное время в каждом конкретном запуске Qodana. Как следствие, вы будете весьма подробно представлять себе, как именно IDEA работает над анализом кода.

Бонусная задача:

Попробуем посчитать средний вес одной инспекции. Нужно будет:

  • Разработать соответствующую нормализацию и агрегирование данных.
  • Верифицировать построение отчетов - проведение экспериментов и анализ устойчивости результатов.

По всем вопросам можно писать на alexey.afanasiev@jetbrains.com

Requirements

Знание Java и/или Kotlin

Admission

Разработчики: Лето 2021

Mentor

Alexey Afanasiev, Ekaterina Shliakhovetskaja

Mentor's location

Remote

Product/Team

Qodana

Tags

Java
Kotlin