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

Поддержка edt-ripper для подготовки файла с замечаниями для SonarQube в формате bsl-ls, поддержка SQ>=10.3 при использовании stebi #121

Merged

Conversation

ovcharenko-di
Copy link
Contributor

  1. BREAKING CHANGE: добавил в конфиг параметр с форматом отчета для stebi, чтобы можно было использовать SQ 10.3. Соответственно, пользователям библиотеки необходимо установить stebi версии 1.11.1 и выше на агенты oscript независимо от версии SQ. В README описано.
  2. Добавил в конфиг параметр "transformer" [stebi|edt-ripper], скорректировал описания других параметров, которые используются только для stebi.
  3. Реализовал трансформацию средствами edt-ripper. Для этого пришлось немного исправить логику определения имени проекта EDT (раньше это было константой "temp", теперь берется последний каталог из srcDir). Такая необходимость связана с особенностями cli в edt-ripper. Тут у некоторых пользователей библиотеки может возникнуть коллизия, если значение srcDir состоит из одного каталога (я не проверял).
  4. Немного зарефакторил имена стешей для stash/unstash.
  5. Добавил тесты на чтение новой версии конфига.
  6. Исправил globalConfiguration.json в соответствии с доработками.
  7. Обновил схему json-конфига.

closes #64 , но через edt-ripper, а не stebi

Copy link

coderabbitai bot commented Jul 27, 2024

Caution

Review failed

The pull request is closed.

## Пошаговая инструкция

Изменения в коде сосредоточены на улучшении обработки результатов в системе, добавлении поддержки различных форматов отчетов и улучшении гибкости интеграции с SonarQube. Основные обновления включают обновление зависимостей, уточнение процесса валидации и добавление новых возможностей для трансформации результатов.

## Изменения

| Файлы                                                                 | Изменения                                                                                       |
|-----------------------------------------------------------------------|------------------------------------------------------------------------------------------------|
| `README.md`                                                          | Обновлены требования к библиотеке `stebi`, уточнен процесс валидации и форматы отчетов.       |
| `src/ru/pulsar/jenkins/library/configuration/GenericIssueFormat.groovy` | Добавлен enum `GenericIssueFormat` для поддержки форматов отчетов.                             |
| `src/ru/pulsar/jenkins/library/configuration/ResultsTransformOptions.groovy` | Введены новые свойства `transformer` и `genericIssueFormat`, обновлены описания существующих. |
| `src/ru/pulsar/jenkins/library/configuration/JobConfiguration.groovy` | Добавлены значения по умолчанию для аннотаций `@JsonProperty`, улучшена сериализация.          |
| `src/ru/pulsar/jenkins/library/configuration/SonarQubeOptions.groovy` | Обновлена сериализация с добавлением аннотации `@JsonProperty` для поля `branchAnalysisConfiguration`. |
| `src/JobConfigurationSchemaGenerator.java`                          | Заменена логика генерации схемы на использование библиотеки `victools`, улучшена настройка.    |
| `src/ru/pulsar/jenkins/library/configuration/InitInfoBaseOptions.groovy` | Добавлена аннотация `@JsonProperty` с значением по умолчанию для свойства `initMethod`.        |
| `src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy`    | Изменены константы и добавлена логика для обработки различных типов трансформеров.              |
| `test/unit/groovy/ru/pulsar/jenkins/library/configuration/ConfigurationReaderTest.java` | Добавлены новые проверки для свойств `transformer` и `genericIssueFormat`.                   |

## Оценка по связанным задачам

| Цель                                                                  | Удовлетворено | Объяснение                             |
|-----------------------------------------------------------------------|---------------|---------------------------------------|
| Выгрузка проверок в формате .json для полноценной работы с ишузами (64) ||                                       |

> В лесу, где светит луна,  
> Изменения пришли сполна.  
> Мы с радостью трансформируем,  
> В SonarQube теперь весело живем! 🐇✨  
> Форматы новые, валидация —  
> Это праздник для создания!

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 337d1ee and 17b6066.

Files ignored due to path filters (3)
  • resources/globalConfiguration.json is excluded by !**/*.json
  • resources/schema.json is excluded by !**/*.json
  • test/unit/resources/jobConfiguration.json is excluded by !**/*.json
Files selected for processing (9)
  • README.md (3 hunks)
  • src/ru/pulsar/jenkins/library/configuration/GenericIssueFormat.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/configuration/ResultsTransformOptions.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/configuration/ResultsTransformerType.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy (2 hunks)
  • src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy (2 hunks)
  • src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy (3 hunks)
  • src/ru/pulsar/jenkins/library/steps/SonarScanner.groovy (3 hunks)
  • test/unit/groovy/ru/pulsar/jenkins/library/configuration/ConfigurationReaderTest.java (1 hunks)
Files skipped from review due to trivial changes (2)
  • src/ru/pulsar/jenkins/library/configuration/GenericIssueFormat.groovy
  • src/ru/pulsar/jenkins/library/configuration/ResultsTransformerType.groovy
Additional comments not posted (26)
src/ru/pulsar/jenkins/library/configuration/ResultsTransformOptions.groovy (4)

10-14: Добавление нового свойства transformer выглядит корректным.

Новое свойство transformer с типом ResultsTransformerType и значением по умолчанию STEBI добавлено корректно. Описание также ясно и полно.


16-16: Обновленное описание свойства removeSupport выглядит корректным.

Описание теперь четко указывает, что это свойство актуально только для stebi.


26-30: Добавление нового свойства genericIssueFormat выглядит корректным.

Новое свойство genericIssueFormat с типом GenericIssueFormat и значением по умолчанию GENERIC_ISSUE добавлено корректно. Описание также ясно и полно.


36-40: Обновление метода toString выглядит корректным.

Метод toString теперь включает новые свойства transformer и genericIssueFormat, что позволяет корректно отображать все данные объекта.

src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy (2)

38-38: Динамическое определение projectName выглядит корректным.

Логика определения projectName из последнего каталога в srcDir корректна и улучшает гибкость кода.


45-45: Обновление команды ringCommand выглядит корректным.

Команда ringCommand теперь корректно использует динамически определенное значение projectName, что улучшает гибкость кода.

src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy (3)

16-16: Удаление точки с запятой в объявлении переменной config выглядит корректным.

Это изменение стиля не влияет на функциональность.


41-42: Динамическое определение projectName выглядит корректным.

Логика определения projectName из последнего каталога в srcDir корректна и улучшает гибкость кода.


43-43: Обновление projectList выглядит корректным.

projectList теперь корректно использует динамически определенное значение projectName, что улучшает гибкость кода.

src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy (8)

4-6: Изменения одобрены.

Добавленные импорты ResultsTransformerType и SourceFormat необходимы для новой функциональности.


16-17: Изменения одобрены.

Переименование констант RESULT_STASH и RESULT_FILE на более общие названия улучшает читаемость кода.


19-20: Изменения одобрены.

Инициализация ResultsTransformerType в конструкторе необходима для поддержки новой логики трансформации.


30-33: Проверка флага валидации EDT.

Проверка флага edtValidate предотвращает ненужные преобразования, если валидация отключена.


39-42: Инициализация переменных для преобразования результатов.

Инициализация transformerType, edtValidateFile и srcDir необходима для дальнейшей логики преобразования.


44-59: Логика преобразования для stebi.

Добавление логики преобразования для stebi улучшает гибкость и настраиваемость процесса.


61-76: Логика преобразования для edt-ripper.

Добавление логики преобразования для edt-ripper обеспечивает поддержку различных форматов исходных данных.


78-82: Архивирование и сохранение результатов.

Архивирование и сохранение результатов необходимо для дальнейшей обработки.

src/ru/pulsar/jenkins/library/steps/SonarScanner.groovy (4)

6-6: Изменения одобрены.

Добавленные импорты ResultsTransformerType и SourceFormat необходимы для новой функциональности.


62-63: Распаковка результатов валидации EDT.

Распаковка результатов валидации EDT необходима для дальнейшего анализа.


64-70: Обработка формата исходных данных Designer.

Добавление логики для обработки формата исходных данных Designer улучшает гибкость анализа.


71-75: Добавление путей отчетов в команду SonarQube.

Добавление путей отчетов в команду SonarQube в зависимости от типа трансформера улучшает настраиваемость процесса.

test/unit/groovy/ru/pulsar/jenkins/library/configuration/ConfigurationReaderTest.java (1)

50-54: Изменения одобрены.

Добавленные проверки для ResultsTransformOptions улучшают покрытие тестов и читаемость кода.

README.md (4)

24-24: Изменение требований к агентам.

Теперь требуется, чтобы агенты имели установленную библиотеку stebi версии 1.11.1 и выше или edt-ripper. Убедитесь, что ссылка на edt-ripper корректна и версия stebi указана верно.


41-41: Обновление форматов отчетов валидации.

Теперь отчеты валидации могут быть в форматах "BSL" или "Generic Issue". Убедитесь, что новые форматы указаны четко и логика трансформации описана правильно.


151-151: Логика исключения результатов анализа.

При использовании stebi по умолчанию из результатов анализа исключаются замечания на модулях с запретом редактирования. Убедитесь, что параметры resultsTransform -> removeSupport и resultsTransform -> supportLevel указаны правильно.


159-159: Обновление параметров для передачи результатов валидации.

При использовании edt-ripper путь к файлу отчета необходимо передать утилите sonar-scanner как значение параметра sonar.bsl.languageserver.reportPaths. Убедитесь, что новые параметры указаны четко и правильно.

@nixel2007 nixel2007 self-assigned this Jul 27, 2024
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
Co-authored-by: Nikita Fedkin <nixel2007@gmail.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 17b6066 and 3e5209a.

Files selected for processing (1)
  • README.md (3 hunks)
Files skipped from review as they are similar to previous changes (1)
  • README.md

README.md Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 45d5e8a and 088b281.

Files selected for processing (1)
  • README.md (3 hunks)
Additional comments not posted (3)
README.md (3)

22-25: Обновление требований к агентам.

Добавление edt-ripper в качестве альтернативы stebi для шагов, работающих с EDT, улучшает гибкость настройки агентов.


42-42: Уточнение форматов отчета валидации.

Теперь отчеты могут быть преобразованы в форматы BSL LS или Generic Issue, что улучшает интеграцию с различными инструментами.


153-153: Уточнение поведения трансформации результатов.

При использовании stebi по умолчанию исключаются замечания на модулях с запретом редактирования, что важно для корректного анализа.

@nixel2007
Copy link
Member

nixel2007 commented Aug 24, 2024

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

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 088b281 and 0647dcb.

Files ignored due to path filters (2)
  • resources/globalConfiguration.json is excluded by !**/*.json
  • resources/schema.json is excluded by !**/*.json
Files selected for processing (1)
  • README.md (3 hunks)
Files skipped from review as they are similar to previous changes (1)
  • README.md

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 0647dcb and 6561fe1.

Files ignored due to path filters (2)
  • resources/globalConfiguration.json is excluded by !**/*.json
  • resources/schema.json is excluded by !**/*.json
Files selected for processing (1)
  • src/ru/pulsar/jenkins/library/configuration/ResultsTransformOptions.groovy (1 hunks)
Additional comments not posted (4)
src/ru/pulsar/jenkins/library/configuration/ResultsTransformOptions.groovy (4)

6-6: Импорт GenericIssueFormat добавлен корректно.

Импорт необходим для работы с новым свойством genericIssueFormat.


11-15: Документация и объявление свойства transformer корректны.

Документация чётко описывает поддерживаемые значения и значение по умолчанию. Объявление свойства соответствует требованиям.


27-31: Документация и объявление свойства genericIssueFormat корректны.

Документация чётко описывает назначение свойства и значение по умолчанию. Объявление свойства соответствует требованиям.


37-41: Обновление метода toString выполнено корректно.

Включение новых свойств в метод toString() обеспечивает полное представление класса в строковом формате.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Outside diff range, codebase verification and nitpick comments (2)
README.md (2)

239-240: Исправьте отступы в списке.

Необходимо исправить отступы в списке для соответствия стандартам Markdown.

-  * Если используется собственный файл `tools/yaxunit.json`, то значение параметра `reportPath` в нем должно быть равно `./build/out/yaxunit/junit.xml`
+* Если используется собственный файл `tools/yaxunit.json`, то значение параметра `reportPath` в нем должно быть равно `./build/out/yaxunit/junit.xml`
Tools
Markdownlint

239-239: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


243-244: Исправьте отступы в списке.

Необходимо исправить отступы в списке для соответствия стандартам Markdown.

-  * При использовании SonarQube версии <10.3 и `stebi` формат отчета должен быть `Generic_Issue` (параметр `resultsTransform` -> `genericIssueFormat`)
-  * Трансформацию результатов может выполнять `edt-ripper` (параметр `resultsTransform` -> `transformer`). В этом случае замечания будут загружены в SonarQube в формате BSL LS, что позволяет полноценно управлять ими в SonarQube.
+* При использовании SonarQube версии <10.3 и `stebi` формат отчета должен быть `Generic_Issue` (параметр `resultsTransform` -> `genericIssueFormat`)
+* Трансформацию результатов может выполнять `edt-ripper` (параметр `resultsTransform` -> `transformer`). В этом случае замечания будут загружены в SonarQube в формате BSL LS, что позволяет полноценно управлять ими в SonarQube.
Tools
Markdownlint

243-243: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


244-244: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 6561fe1 and 571b37b.

Files ignored due to path filters (2)
  • resources/schema.json is excluded by !**/*.json
  • test/unit/resources/jobConfiguration.json is excluded by !**/*.json
Files selected for processing (9)
  • README.md (5 hunks)
  • build.gradle.kts (1 hunks)
  • src/JobConfigurationSchemaGenerator.java (1 hunks)
  • src/ru/pulsar/jenkins/library/configuration/InitInfoBaseOptions.groovy (2 hunks)
  • src/ru/pulsar/jenkins/library/configuration/JobConfiguration.groovy (2 hunks)
  • src/ru/pulsar/jenkins/library/configuration/ResultsTransformOptions.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/configuration/SonarQubeOptions.groovy (4 hunks)
  • src/ru/pulsar/jenkins/library/configuration/sonarqube/GenericIssueFormat.groovy (1 hunks)
  • test/unit/groovy/ru/pulsar/jenkins/library/configuration/ConfigurationReaderTest.java (2 hunks)
Additional context used
Markdownlint
README.md

239-239: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


243-243: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


244-244: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)

Additional comments not posted (28)
src/ru/pulsar/jenkins/library/configuration/sonarqube/GenericIssueFormat.groovy (1)

5-22: Проверка нового файла GenericIssueFormat.groovy

Файл содержит перечисление GenericIssueFormat, которое используется для указания формата замечаний в SonarQube. В перечислении определены два значения: GENERIC_ISSUE и GENERIC_ISSUE_10_3, что соответствует требованиям поддержки разных версий SonarQube. Использование аннотаций JsonProperty корректно для сериализации значений перечисления.

Код чист и хорошо структурирован, метод getValue() корректно возвращает значение поля value.

src/ru/pulsar/jenkins/library/configuration/ResultsTransformOptions.groovy (3)

12-18: Добавление нового свойства transformer

Свойство transformer добавлено для указания метода преобразования замечаний. По умолчанию установлено значение STEBI, что соответствует текущим требованиям. Описание свойства через JsonPropertyDescription улучшает понимание его назначения и использования.


29-35: Добавление нового свойства genericIssueFormat

Свойство genericIssueFormat добавлено для указания формата отчета по замечаниям. По умолчанию установлено значение Generic_Issue_10_3, что обеспечивает совместимость с версией SonarQube 10.3 и выше. Описание свойства также помогает понять его применение в разных контекстах.


40-44: Обновление метода toString()

Метод toString() обновлен для отображения новых свойств transformer и genericIssueFormat. Это обеспечивает корректное представление состояния объекта при его выводе, что важно для отладки и логирования.

src/JobConfigurationSchemaGenerator.java (1)

20-37: Переработка логики генерации схемы

Изменения в JobConfigurationSchemaGenerator.java включают использование новой библиотеки victools для генерации схемы конфигурации. Это позволяет более гибко настраивать процесс генерации схемы, включая обработку перечислений и установку значений по умолчанию через аннотации. Использование BufferedWriter для записи схемы в файл является более предпочтительным и эффективным методом по сравнению с предыдущим подходом.

src/ru/pulsar/jenkins/library/configuration/SonarQubeOptions.groovy (3)

5-5: Утверждение добавления импорта @JsonProperty.

Добавление импорта @JsonProperty необходимо для использования аннотаций JSON в классе, что улучшает сериализацию и обработку данных.


14-14: Утверждение стилистического изменения в объявлении.

Удаление точки с запятой из объявления sonarQubeInstallation соответствует стилистике Groovy, где точки с запятой не обязательны.


34-34: Утверждение добавления аннотации @JsonProperty.

Добавление аннотации @JsonProperty(defaultValue = "auto") к полю branchAnalysisConfiguration улучшает обработку данных, предоставляя значение по умолчанию, что предотвращает ошибки при сериализации.

src/ru/pulsar/jenkins/library/configuration/InitInfoBaseOptions.groovy (1)

18-18: Утверждение добавления аннотации @JsonProperty к свойству initMethod.

Добавление аннотации @JsonProperty(defaultValue = "fromStorage") к свойству initMethod улучшает ясность и функциональность класса, определяя ожидаемое поведение по умолчанию для этого свойства, что может влиять на то, как экземпляры InitInfoBaseOptions инициализируются и используются в контексте обработки данных JSON.

build.gradle.kts (1)

47-48: Утверждение добавления зависимостей для генерации схемы JSON.

Добавление зависимостей jsonschema-generator и jsonschema-module-jackson улучшает возможности проекта, интегрируя функции генерации схемы JSON, которые могут способствовать лучшей валидации и документации структур данных JSON в приложении.

src/ru/pulsar/jenkins/library/configuration/JobConfiguration.groovy (13)

22-23: Установка значения по умолчанию для sourceFormat

Добавление аннотации @JsonProperty(defaultValue = "designer") устанавливает значение по умолчанию для sourceFormat. Это упрощает процесс конфигурации для пользователей, которые не задают это свойство явно. Убедитесь, что "designer" является наиболее распространенным случаем использования, иначе может потребоваться пересмотреть это значение по умолчанию.


27-27: Переименование stageFlags в stages

Изменение имени свойства на @JsonProperty("stages") делает его название более интуитивно понятным и соответствующим его функции. Рекомендуется добавить инструкции по миграции или обеспечить обратную совместимость для конфигураций, использующих старое имя свойства.


31-31: Переименование timeoutOptions в timeout

Изменение имени свойства на @JsonProperty("timeout") делает его название более кратким и, возможно, более соответствующим общепринятой терминологии. Убедитесь, что документация обновлена, чтобы отразить это изменение.


37-37: Явное указание имени свойства secrets

Установка аннотации @JsonProperty("secrets") гарантирует, что свойство будет сериализовано с этим именем, что может быть необходимо для обеспечения последовательности в структурах JSON, особенно при взаимодействии с внешними системами.


41-41: Переименование initInfoBaseOptions в initInfobase

Изменение имени свойства на @JsonProperty("initInfobase") упрощает его название и делает его более кратким. Это изменение, вероятно, направлено на упрощение конфигурации для пользователей. Убедитесь, что это новое имя не конфликтует с другими свойствами или внешними зависимостями.


45-45: Переименование bddOptions в bdd

Изменение имени свойства на @JsonProperty("bdd") упрощает его название, что потенциально делает его проще для запоминания и использования пользователями. Однако необходимо позаботиться о том, чтобы это изменение было четко доведено до пользователей, чтобы избежать путаницы.


49-49: Переименование sonarQubeOptions в sonarqube

Изменение имени свойства на @JsonProperty("sonarqube") выравнивает его название с общепринятыми соглашениями о наименовании, что, возможно, делает его более интуитивно понятным. Убедитесь, что все ссылки на это свойство в документации и коде обновлены.


53-53: Переименование syntaxCheckOptions в syntaxCheck

Изменение имени свойства на @JsonProperty("syntaxCheck") упрощает его название, что может облегчить его понимание и использование пользователями. Это изменение должно быть четко документировано, чтобы избежать возможной путаницы.


57-57: Переименование smokeTestOptions в smoke

Изменение имени свойства на @JsonProperty("smoke") упрощает его название, что потенциально делает его более интуитивно понятным для пользователей. Убедитесь, что все ссылки на это свойство в документации и коде обновлены.


61-61: Переименование yaxunitOptions в yaxunit

Изменение имени свойства на @JsonProperty("yaxunit") упрощает его название, что может облегчить его понимание и использование пользователями. Это изменение должно быть четко документировано, чтобы избежать возможной путаницы.


65-65: Переименование resultsTransformOptions в resultsTransform

Изменение имени свойства на @JsonProperty("resultsTransform") упрощает его название, что потенциально делает его более интуитивно понятным для пользователей. Убедитесь, что все ссылки на это свойство в документации и коде обновлены.


69-69: Переименование notificationsOptions в notifications

Изменение имени свойства на @JsonProperty("notifications") упрощает его название, что потенциально делает его более интуитивно понятным для пользователей. Убедитесь, что все ссылки на это свойство в документации и коде обновлены.


73-73: Явное указание имени свойства logosConfig

Установка аннотации @JsonProperty("logosConfig") гарантирует, что свойство будет сериализовано с этим именем, что может быть необходимо для обеспечения последовательности в структурах JSON, особенно при взаимодействии с внешними системами.

test/unit/groovy/ru/pulsar/jenkins/library/configuration/ConfigurationReaderTest.java (2)

7-7: Добавлен новый импорт.

Добавление импорта ru.pulsar.jenkins.library.configuration.sonarqube.GenericIssueFormat поддерживает новые утверждения в тестах, связанные с форматом задач.


51-55: Улучшение проверок в тесте.

Добавлены новые утверждения для проверки свойств transformer и genericIssueFormat в объекте ResultsTransformOptions. Это обеспечивает более полную проверку конфигурации, что важно для поддержки различных форматов отчетов и инструментов трансформации.

README.md (3)

22-25: Уточнение требований к агентам.

Уточнены требования к агентам для различных шагов, что помогает пользователям понять, какие метки агентов необходимы для выполнения определенных задач.


42-43: Добавление новой возможности.

Описана новая возможность валидации проекта средствами EDT и трансформации отчета в форматы BSL LS или Generic Issue. Это важное улучшение, так как позволяет пользователям выбирать формат отчета в зависимости от их потребностей.


179-181: Улучшение документации по загрузке расширений.

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

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 571b37b and 49fe3ea.

Files selected for processing (1)
  • src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy (3 hunks)
Additional comments not posted (3)
src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy (3)

5-8: Подтверждение изменений в импортах и объявлении класса.

Импорты и объявление класса соответствуют новым функциональным требованиям и стандартам Jenkins для сериализуемых классов.

Also applies to: 15-16


15-16: Подтверждение переименования констант.

Переименование констант RESULT_STASH и RESULT_FILE соответствует расширенному контексту использования и улучшает читаемость и поддержку кода.


Line range hint 18-85: Анализ логики метода run.

Метод run содержит сложную логику, зависящую от типа трансформера. Необходимо убедиться, что все ветви логики корректно обрабатывают конфигурации и соответствуют задачам PR. Особое внимание следует уделить обработке новых параметров и интеграции с edt-ripper.

Verification successful

Логика метода run соответствует задачам PR.

Метод run корректно использует параметры конфигурации для выполнения различных ветвей логики и интеграции с внешними инструментами, такими как stebi и edt-ripper. Все изменения соответствуют задачам PR и реализованы правильно.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверка использования новых параметров конфигурации в методе `run`.
ast-grep --lang groovy --pattern $'class ResultsTransformer {
  $$$
  def run() {
    $$$
  }
  $$$  
}'

Length of output: 218


Script:

#!/bin/bash
# Use ripgrep to search for keywords related to configuration parameters and logic in the `run` method.
rg 'config\.resultsTransformOptions|config\.sourceFormat|steps\.cmd' -A 5 --glob '**/ResultsTransformer.groovy'

Length of output: 3818

build.gradle.kts Outdated Show resolved Hide resolved
…tions.groovy

Co-authored-by: Nikita Fedkin <nixel2007@gmail.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 49fe3ea and 28e298b.

Files selected for processing (1)
  • src/ru/pulsar/jenkins/library/configuration/ResultsTransformOptions.groovy (1 hunks)
Files skipped from review as they are similar to previous changes (1)
  • src/ru/pulsar/jenkins/library/configuration/ResultsTransformOptions.groovy

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 28e298b and b063905.

Files selected for processing (3)
  • build.gradle.kts (1 hunks)
  • src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy (3 hunks)
  • src/ru/pulsar/jenkins/library/steps/SonarScanner.groovy (3 hunks)
Files skipped from review as they are similar to previous changes (2)
  • build.gradle.kts
  • src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy
Additional comments not posted (3)
src/ru/pulsar/jenkins/library/steps/SonarScanner.groovy (3)

6-6: Импорт нового типа для трансформации результатов.

Добавление импорта ResultsTransformerType необходимо для поддержки новых опций конфигурации, позволяющих выбирать метод трансформации результатов. Это изменение корректно и соответствует описанию в PR.


14-14: Коррекция синтаксиса переменной config.

Удаление точки с запятой в объявлении переменной config является корректным изменением, так как Groovy не требует точек с запятой в конце выражений. Это улучшает читаемость кода.


62-68: Улучшение логики обработки результатов сканирования.

Изменения в условной логике, позволяющие динамически определять, какой stash использовать и как формировать команду sonar в зависимости от типа трансформера (STEBI или другой), улучшают гибкость и настраиваемость процесса сканирования. Это соответствует целям PR по поддержке различных форматов и версий.

Предлагаю проверить интеграцию с новыми типами трансформеров, чтобы убедиться, что все конфигурации корректно обрабатываются.

Verification successful

Подтверждение корректности логики и интеграции новых типов трансформеров.

Логика в SonarScanner.groovy корректно использует ResultsTransformerType для динамической настройки команды sonar в зависимости от типа трансформера. Это подтверждает правильную интеграцию и соответствует целям PR по улучшению гибкости и настраиваемости процесса сканирования.

  • Убедитесь, что все конфигурации корректно обрабатываются с новыми типами трансформеров.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Проверка использования новых типов трансформеров в конфигурации.

# Тест: Поиск использования новых типов трансформеров. Ожидаем: Только вхождения с новыми типами.
rg --type groovy -A 5 $'ResultsTransformerType'

Length of output: 4711

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Outside diff range, codebase verification and nitpick comments (1)
test/integration/groovy/pipeline1cTest.groovy (1)

19-31: Проверка тестового метода

Метод pipeline1C should do something корректно тестирует конфигурацию Jenkins pipeline. Рассмотрите возможность добавления комментариев для улучшения понимания тестового сценария.

Добавьте комментарии к ключевым строкам теста для улучшения читаемости и понимания тестового сценария.

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between b063905 and 6ae35d0.

Files selected for processing (2)
  • build.gradle.kts (3 hunks)
  • test/integration/groovy/pipeline1cTest.groovy (1 hunks)
Files skipped from review as they are similar to previous changes (1)
  • build.gradle.kts
Additional comments not posted (3)
test/integration/groovy/pipeline1cTest.groovy (3)

1-7: Проверка импортов

Импорты корректны и соответствуют стандартам разработки плагинов для Jenkins.


9-33: Проверка структуры тестового класса

Класс pipeline1cTest корректно настроен для интеграционного тестирования с использованием JenkinsRule. Методы класса организованы логично и соответствуют задачам тестирования.


14-17: Проверка метода настройки тестового окружения

Метод configureGlobalGitLibraries корректно аннотирован @Before и настраивает тестовое окружение. Убедитесь, что RuleBootstrapper.setup(rule) корректно настроен в рамках проекта.

Verification successful

Подтверждение корректности настройки RuleBootstrapper

Класс RuleBootstrapper корректно определён и используется в нескольких тестовых файлах для настройки тестового окружения. Настройка RuleBootstrapper.setup(rule) интегрирована правильно и не требует дополнительных изменений.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Проверка настройки RuleBootstrapper.

# Тест: Поиск определения RuleBootstrapper. Ожидаем: Наличие определения в проекте.
rg --type groovy -A 5 $'RuleBootstrapper'

Length of output: 2279

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 6ae35d0 and 2680dd6.

Files selected for processing (1)
  • build.gradle.kts (5 hunks)
Additional comments not posted (5)
build.gradle.kts (5)

106-127: Обновление зависимостей плагинов Jenkins

Зависимости нескольких плагинов Jenkins были обновлены. Пожалуйста, убедитесь, что они совместимы с текущими версиями Jenkins и другими плагинами.


35-53: Обновление и добавление зависимостей

Версии нескольких зависимостей были обновлены, а также добавлены новые зависимости для генерации JSON схем. Пожалуйста, убедитесь, что они правильно интегрированы и совместимы с проектом.


8-9: Обновление версий плагинов

Версии плагинов com.github.ben-manes.versions и org.jenkins-ci.jpi были обновлены. Пожалуйста, убедитесь, что они совместимы с остальной частью проекта.

Verification successful

Обновление версий плагинов подтверждено

Обновления версий плагинов com.github.ben-manes.versions и org.jenkins-ci.jpi в файле build.gradle.kts не влияют на другие части проекта, так как они не используются в других местах. Совместимость с проектом подтверждена.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Проверка совместимости обновленных плагинов с проектом.

# Тест: Поиск использования плагинов в проекте. Ожидаемый результат: только обновленные версии.
rg --type kotlin -A 5 $'id("com.github.ben-manes.versions")|id("org.jenkins-ci.jpi")'

Length of output: 86


Script:

#!/bin/bash
# Описание: Поиск использования обновленных плагинов в проекте.

# Тест: Поиск использования плагинов в проекте во всех файлах. Ожидаемый результат: только обновленные версии.
rg 'id("com.github.ben-manes.versions")|id("org.jenkins-ci.jpi")'

Length of output: 67


31-32: Обновление совместимости Java

Совместимость исходного и целевого кода Java была обновлена до версии 11. Это позволяет использовать современные функции Java, но требует проверки совместимости с остальной частью кодовой базы.


90-91: Обновление настроек отчетов Jacoco

Настройки XML отчетов Jacoco были обновлены, чтобы они стали обязательными и указывали местоположение вывода. Это улучшает видимость покрытия кода, но требует проверки, чтобы убедиться, что это не нарушает существующие рабочие процессы CI/CD.

@nixel2007 nixel2007 merged commit 15c43d3 into firstBitMarksistskaya:develop Sep 11, 2024
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants