Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft: Проверка когнитивной сложности #1261

Draft
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

RedMammoth
Copy link
Contributor

@RedMammoth RedMammoth commented Mar 11, 2023

Что сделано

  • Добавлена проверка когнитивной сложности методов

Чек-лист

Общее:

  • ветка PR обновлена из master и нет конфликтов
  • Тесты-кейсы, JUnit тесты правильного и неправильного состояния
  • Измененные Вами исходники отформатированы в соответствии с конвенцией
  • Авто-аудит (SonarQube и CheckStyle) пройден, покрытие кода хорошее, ошибок нет, плохой код устранен
  • Добавлена запись в ИСТОРИЮ ИЗМЕНЕНИЯ, включаемая в пользовательскую документацию плагина

Если применимо:

  • Пользовательская документация на доп.инструменты написана (на русском)
  • Описание проверок - на двух языках

Закрываемые задачи

Closes #1117

@RedMammoth RedMammoth marked this pull request as draft March 11, 2023 23:42
Copy link
Collaborator

@marmyshev marmyshev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хорошая работа! Но тесты очень нужны на все кейсы расчета - имхо, тут важно очень правильно считать - алгоритм расчета - тут критическое место.

@RedMammoth
Copy link
Contributor Author

RedMammoth commented Mar 13, 2023

Но тесты очень нужны на все кейсы расчета - имхо, тут важно очень правильно считать - алгоритм расчета - тут критическое место.

Тестами займусь на неделе, мерж пока в черновике

Создал интерфейс для процессора вычисления сложности
Создал процессор вычисления когнтивной сложности
Вынес вычисление из проверки в процессор
Сделал локализацию
Поправил текст сообщения
Поправил получение statements метода
Добавил перывание при отмене во все циклы
Добавил копирайт
Добавил описание проверки
@RedMammoth RedMammoth force-pushed the feauture/congnitive-complexity branch from 22a89b0 to 5cd5187 Compare March 14, 2023 21:02
Comment on lines +68 to +69
if (method != null)
{
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Проверка не имеет смысла, т.к. механизм валидация предоставляет объект.
Вместо этого можно было бы проверить параметр PARAM_COMPLEXTITY_THRESHOLD что он больше 0 - т.к. если 0 или меньше - то явно запускать процессор смысла нет.

Comment on lines +74 to +75
if (method != null)
{
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

аналогично предыдущей проверке. +параметр

@marmyshev
Copy link
Collaborator

@RedMammoth когда ждать эту классную проверку?) успеем в 0.5 релиз?

@RedMammoth
Copy link
Contributor Author

@RedMammoth когда ждать эту классную проверку?) успеем в 0.5 релиз?

@marmyshev А когда релиз?
Мне осталось написать тесты, и учесть в алгоритмах подсчета инструкции препроцессора. Если не ошибаюсь, то аналогичные проверки в bsl-ls не учитывают инструкции препроцессора (в доке не увидел, надо будет по факту проверить), а они и когнитивность повышают и количество сценариев исполнения кода в цикломатической проверке, так что думаю их нужно считать.

@marmyshev
Copy link
Collaborator

@RedMammoth поторопись! Релиз скоро уже - фактически до релиза 2023.1, т.к. 0.5 версия входит в ЕДТ 2023.1

@marmyshev
Copy link
Collaborator

@RedMammoth ping

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Добавить расчет когнитивной и цикломатической сложностей
2 participants