Skip to content

обновление копирайта и зависимостей#62

Merged
theshadowco merged 3 commits intodevelopfrom
feature/bumpDeps
Feb 12, 2026
Merged

обновление копирайта и зависимостей#62
theshadowco merged 3 commits intodevelopfrom
feature/bumpDeps

Conversation

@theshadowco
Copy link
Member

No description provided.

@coderabbitai
Copy link

coderabbitai bot commented Feb 12, 2026

Caution

Review failed

The pull request is closed.

Walkthrough

Обновлён Gradle до 9.3.1, заменён плагин лицензий на cloud.rio.license, обновлены плагины и зависимости, удалён CLASSPATH из wrapper-скриптов, заменён доступ к EOF в ParserAsserts, расширен публичный API тестовых Demo-классов; обновлены годы в заголовках файлов.

Изменения

Cohort / File(s) Summary
Gradle build / плагины
build.gradle.kts
Заменён плагин лицензирования на id("cloud.rio.license") v0.18.0; обновлены io.freefair.* до 9.2.0; удалён me.champeau.jmh; обновлены зависимости: io.github.1c-syntax:antlr40.3.0-rc.2, org.mockito:mockito-core5.21.0; добавлен testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.11.4"); переработан блок конфигурации лицензии (новые поля, mapping и include).
Gradle wrapper и скрипты
gradle/wrapper/gradle-wrapper.properties, gradlew, gradlew.bat
Wrapper обновлён на Gradle gradle-9.3.1-bin.zip, добавлен zipStorePath; удалена инициализация и использование переменной CLASSPATH в shell и bat-скриптах (java запускается без явного -classpath).
Parser EOF check
src/main/java/com/github/_1c_syntax/bsl/parser/testing/ParserAsserts.java
Замена прямого доступа к полю _hitEOF на вызов публичного метода isHitEOF() при проверке достижения EOF в ассертах парсера.
Тестовые Demo классы — публичный API
src/test/java/.../demo/DemoLexer.java, .../DemoParser.java, .../DemoEmptyLexer.java, .../DemoEmptyParser.java
Добавлены публичные поля ruleNames/tokenNames и VOCABULARY, методы getVocabulary(), getRuleNames()/getTokenNames(), getChannelNames(), getModeNames(); добавлены импорты Vocabulary, VocabularyImpl и аннотация @NullMarked; getGrammarFileName() теперь возвращает строку вместо null.
Мелкие обновления заголовков
src/main/java/.../LexerAsserts.java, .../ResourceUtils.java, .../TestLexer.java, .../TestParser.java, src/test/java/.../ResourceUtilsTest.java, .../TestLexerTest.java, .../TestParserTest.java, src/test/java/.../demo/DemoToken.java
Обновлены годы в заголовках файлов (2025 → 2026 или 2023-2025 → 2023-2026). Нет функциональных изменений.
Малые правки
src/main/java/com/github/_1c_syntax/bsl/parser/testing/LexerAsserts.java, src/test/java/com/github/_1c_syntax/bsl/parser/testing/TestLexer.java, src/test/java/.../TestParser.java
Только обновления копирайт-года; без изменения логики.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Стихотворение

🐰 Плагины сменил я, «девять» в путь зовёт,
CLASSPATH исчез — теперь шаг стал прямей.
isHitEOF шепнёт, что файл достигнут вовек,
VOCABULARY в тестах сияет как день.
Год двадцать двадцать шесть — пусть прыжок будет лёгок. ✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2
❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 4.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive Описание pull request отсутствует. Это делает оценку невозможной, так как нет текста для анализа релевантности. Добавьте описание pull request, которое объясняет причины и контекст обновления зависимостей и копирайта.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed Заголовок точно отражает основные изменения: обновление копирайта (года в заголовках файлов с 2023-2025 на 2023-2026 и 2025 на 2026) и обновление зависимостей (Gradle, плагины, библиотеки).

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/bumpDeps

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

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: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (5)
src/test/java/com/github/_1c_syntax/bsl/parser/testing/demo/DemoEmptyLexer.java (1)

27-42: ⚠️ Potential issue | 🔴 Critical

Ошибка компиляции: не реализован абстрактный метод getModeNames().

Пайплайн падает с ошибкой: DemoEmptyLexer is not abstract and does not override abstract method getModeNames() in Lexer. Вероятно, обновлённая версия ANTLR добавила новый абстрактный метод в класс Lexer. Необходимо добавить реализацию.

🐛 Предлагаемое исправление
   `@Override`
   public String getGrammarFileName() {
     return null;
   }
+
+  `@Override`
+  public String[] getModeNames() {
+    return new String[0];
+  }
 }
src/test/java/com/github/_1c_syntax/bsl/parser/testing/demo/DemoParser.java (1)

35-56: ⚠️ Potential issue | 🟠 Major

Добавьте необходимый метод getVocabulary() для компиляции класса Parser.

Класс DemoParser наследует Parser, который через цепочку наследования требует реализации абстрактного метода getVocabulary() из класса Recognizer. Без этого метода класс не будет компилироваться.

🛠️ Предлагаемое исправление
+  `@Override`
+  public org.antlr.v4.runtime.Vocabulary getVocabulary() {
+    return org.antlr.v4.runtime.VocabularyImpl.EMPTY_VOCABULARY;
+  }
src/test/java/com/github/_1c_syntax/bsl/parser/testing/demo/DemoLexer.java (2)

27-36: ⚠️ Potential issue | 🔴 Critical

Добавьте override getModeNames() — сборка падает.

Класс не реализует абстрактный метод getModeNames() из Lexer, что ломает компиляцию.

🐛 Вариант исправления
 public class DemoLexer extends Lexer {

   public DemoLexer(CharStream input) {
     super(input);
   }

+  `@Override`
+  public String[] getModeNames() {
+    return new String[0];
+  }
+
   `@Override`
   public String[] getRuleNames() {
     return new String[0];
   }

38-41: ⚠️ Potential issue | 🔴 Critical

Замените getTokenNames() на getVocabulary() — метод устарел в ANTLR 4.

В современных версиях ANTLR 4 метод getTokenNames() является устаревшим (deprecated). Следует переопределить getVocabulary() с объектом Vocabulary, как в автогенерируемых лексерах. Если метод не требуется, удалите его полностью.

Вариант исправления
- `@Override`
- public String[] getTokenNames() {
-   return new String[]{"token1", "token2"};
- }
+
+ `@Override`
+ public Vocabulary getVocabulary() {
+   return new VocabularyImpl(new String[]{"token1", "token2"}, null);
+ }

(или используйте VocabularyImpl.fromTokenNames() для совместимости)

src/test/java/com/github/_1c_syntax/bsl/parser/testing/demo/DemoEmptyParser.java (1)

28-47: ⚠️ Potential issue | 🔴 Critical

Необходимо переопределить метод getVocabulary() для совместимости с текущей версией ANTLR.

В ANTLR 4 метод getTokenNames() объявлен как устаревший (deprecated) и заменён на getVocabulary(). Хотя метод технически сохраняется для обратной совместимости, современные версии ANTLR требуют переопределения getVocabulary() в подклассах Parser. Это может привести к ошибкам компиляции или предупреждениям, если соответствующие параметры сборки включены.

Требуемые изменения:

  • Удалить переопределение getTokenNames()
  • Добавить переопределение getVocabulary(), возвращающее VocabularyImpl.EMPTY_VOCABULARY
  • Добавить импорты: org.antlr.v4.runtime.Vocabulary и org.antlr.v4.runtime.VocabularyImpl
Предлагаемое исправление
+import org.antlr.v4.runtime.Vocabulary;
+import org.antlr.v4.runtime.VocabularyImpl;
+
 public class DemoEmptyParser extends Parser {

   public DemoEmptyParser(TokenStream input) {
     super(input);
   }

-  `@Override`
-  public String[] getTokenNames() {
-    return new String[0];
-  }
-
   `@Override`
   public String[] getRuleNames() {
     return new String[0];
   }

   `@Override`
   public String getGrammarFileName() {
     return null;
   }
+
+  `@Override`
+  public Vocabulary getVocabulary() {
+    return VocabularyImpl.EMPTY_VOCABULARY;
+  }
 }
🤖 Fix all issues with AI agents
In `@build.gradle.kts`:
- Line 51: Зависимость implementation("io.github.1c-syntax", "antlr4",
"0.3.0-rc.2") указывает на предварительный релиз; замените версию на стабильную
"0.2.0" (или удалите/отложите обновление до официального 0.3.0), обновив строку
зависимости в build.gradle.kts и пересобрав/обновив зависимости (refresh Gradle)
чтобы избежать попадания RC в публикуемую библиотеку.

In `@gradle/wrapper/gradle-wrapper.properties`:
- Line 3: Вы изменили distributionUrl на Gradle 9.3.1 — перед мёрджем убедитесь,
что все плагины и зависимости совместимы с Gradle 9: прогоните и исправьте все
предупреждения от Gradle 8, обновите целевую JVM до 17+, проверьте и при
необходимости обновите/замените Kotlin (до 2.2 совместимого плагина) и Groovy
(до 4.x) плагины, удалите/замените использования jcenter(), исправьте
код/скрипты, зависящие от Conventions API и удалённых CLI-флагов (-b, -c) и
протестируйте сборку и CI на Gradle 9.3.1 (используя distributionUrl в
gradle-wrapper.properties) чтобы убедиться, что все шаги сборки и плагины
работают корректно.
🧹 Nitpick comments (2)
build.gradle.kts (2)

14-14: Закомментированный плагин maven-central.validate-poms.

Рекомендуется либо удалить закомментированную строку, либо добавить комментарий с объяснением, почему валидация POM отключена. Закомментированный код без пояснения ухудшает читаемость.


60-74: Дублирование блока tasks.withType<JavaCompile>.

Блоки на строках 60–63 и 72–74 оба настраивают JavaCompile. Первый задаёт encoding и -Xlint:unchecked, второй — только encoding повторно. Стоит объединить их в один блок.

♻️ Предлагаемое исправление
 tasks.withType<JavaCompile> {
     options.encoding = "UTF-8"
     options.compilerArgs.add("-Xlint:unchecked")
 }
 
...

-tasks.withType<JavaCompile> {
-    options.encoding = "UTF-8"
-}

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: 3

🤖 Fix all issues with AI agents
In `@build.gradle.kts`:
- Line 59: The dependency declaration
testRuntimeOnly("org.junit.platform:junit-platform-launcher:6.0.2") uses an
incompatible JUnit Platform version; replace the 6.0.2 version with the matching
1.11.4 (to align with JUnit Jupiter 5.11.4 used in the project) so the platform
and Jupiter versions are consistent and tests will run/build correctly.

In `@src/test/java/com/github/_1c_syntax/bsl/parser/testing/demo/DemoLexer.java`:
- Line 34: В объявлении массива tokenNames в классе DemoLexer (переменная public
static final String[] tokenNames) есть лишняя точка с запятой в конце строки
(";;"); исправьте это, убрав один из символов ';' так, чтобы строка завершалась
ровно одним ';' для корректной компиляции.
- Line 24: В файле DemoLexer.java удалите неиспользуемый импорт
org.antlr.v4.parse.BlockSetTransformer: откройте класс DemoLexer и удалите
строку с импортом BlockSetTransformer, затем пересоберите/прогоним статический
анализ (или запустите mvn/gradle build) чтобы убедиться, что больше нет
неиспользуемых импортов; оставьте только реально используемые импорты в классе
DemoLexer.
🧹 Nitpick comments (4)
build.gradle.kts (1)

14-14: Закомментированный плагин.

Если maven-central.validate-poms больше не нужен, лучше удалить строку целиком, а не оставлять закомментированной — это снижает шум и не теряет информацию (история в Git).

src/test/java/com/github/_1c_syntax/bsl/parser/testing/demo/DemoLexer.java (1)

47-49: Отсутствует аннотация @Override у getTokenNames().

getTokenNames() переопределяет одноимённый метод из Recognizer. Для единообразия с остальными методами класса (getChannelNames, getModeNames, getRuleNames, getVocabulary, getGrammarFileName) стоит добавить @Override.

Предлагаемое исправление
+  `@Override`
   public String[] getTokenNames() {
     return tokenNames;
   }
src/test/java/com/github/_1c_syntax/bsl/parser/testing/demo/DemoEmptyParser.java (1)

33-43: Незначительная несогласованность: getRuleNames() не использует поле ruleNames.

На строке 33 объявлено поле ruleNames, но getRuleNames() (строка 42) возвращает new String[0] вместо ссылки на это поле. В DemoParser аналогичный метод возвращает именно поле ruleNames. Для единообразия можно использовать поле:

Предлагаемое исправление
   `@Override`
   public String[] getRuleNames() {
-    return new String[0];
+    return ruleNames;
   }
src/test/java/com/github/_1c_syntax/bsl/parser/testing/demo/DemoEmptyLexer.java (1)

33-53: Та же несогласованность: getRuleNames() не использует поле ruleNames.

Аналогично DemoEmptyParser, на строке 33 объявлено поле ruleNames, но getRuleNames() (строка 51-52) возвращает new String[0] вместо ссылки на это поле.

Предлагаемое исправление
   `@Override`
   public String[] getRuleNames() {
-    return new String[0];
+    return ruleNames;
   }

@theshadowco theshadowco merged commit 2669742 into develop Feb 12, 2026
13 of 14 checks passed
@theshadowco theshadowco deleted the feature/bumpDeps branch February 12, 2026 17:57
@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
0.0% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

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.

1 participant