обновление копирайта и зависимостей#62
Conversation
|
Caution Review failedThe pull request is closed. WalkthroughОбновлён Gradle до 9.3.1, заменён плагин лицензий на Изменения
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Стихотворение
🚥 Pre-merge checks | ✅ 1 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
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" -}
There was a problem hiding this comment.
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; }
src/test/java/com/github/_1c_syntax/bsl/parser/testing/demo/DemoLexer.java
Outdated
Show resolved
Hide resolved
src/test/java/com/github/_1c_syntax/bsl/parser/testing/demo/DemoLexer.java
Outdated
Show resolved
Hide resolved
|


No description provided.