-
Notifications
You must be signed in to change notification settings - Fork 15
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
native seporator #77
native seporator #77
Conversation
WalkthroughИзменения в этом запросе на вытягивание касаются обновления версии пакета в файле Changes
Poem
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? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Analysis Details0 IssuesCoverage and DuplicationsProject ID: winow |
There was a problem hiding this 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
🧹 Outside diff range and nitpick comments (3)
src/Классы/Парсеры.os (3)
46-61
: Оптимизируйте объединение правой части данныхВместо ручного добавления элементов в
МассивПраво
и последующего объединения, можно напрямую использовать функциюСоединитьДвоичныеДанные
на подмассиве. Это упростит код и повысит его эффективность.Примените следующий дифф для упрощения кода:
Если Массив.Количество() > 1 Тогда - МассивПраво = Новый Массив(); - Для Счетчик = 1 По Массив.Количество() - 1 Цикл - МассивПраво.Добавить(ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(Массив[Счетчик])); - КонецЦикла; - Право = СоединитьДвоичныеДанные(МассивПраво); + Право = СоединитьДвоичныеДанные(Массив.ПолучитьДиапазон(1)); КонецЕсли;
52-63
: Проверьте отступы и структуру кодаОбратите внимание на возможное несоответствие отступов между условными операторами
Если
иКонецЕсли
, что может привести к логическим ошибкам. Убедитесь, что все блоки кода правильно выровнены и вложены.
Line range hint
41-79
: Добавьте обработку возможных исключенийВ текущей реализации отсутствует обработка исключений при работе с буферами и разделением данных. Рекомендуется добавить управление исключениями для повышения надежности функций.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (2)
packagedef
(1 hunks)src/Классы/Парсеры.os
(2 hunks)
✅ Files skipped from review due to trivial changes (1)
- packagedef
БуферДвоичныхДанных = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(ДвоичныеДанные); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Проверьте входные параметры на заполненность
Функции ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных
могут возникать ошибки, если ДвоичныеДанные
или Разделитель
не заполнены. Рекомендуется добавить проверки на заполненность входных параметров перед их использованием.
Примените следующий дифф для добавления проверок:
+ Если НЕ ЗначениеЗаполнено(ДвоичныеДанные) Тогда
+ Возврат Новый Структура("Лево, Право", Неопределено, Неопределено);
+ КонецЕсли;
+
+ Если НЕ ЗначениеЗаполнено(Разделитель) Тогда
+ Возврат Новый Структура("Лево, Право", ДвоичныеДанные, Неопределено);
+ КонецЕсли;
БуферДвоичныхДанных = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(ДвоичныеДанные);
Committable suggestion skipped: line range outside the PR's diff.
БуферДвоичныхДанных = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(ДвоичныеДанные); | ||
|
||
Массив = БуферДвоичныхДанных.Разделить(ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(Разделитель)); | ||
|
||
Результат = Новый Массив(); | ||
|
||
Счетчик = 0; | ||
Прочитано = 0; | ||
|
||
Пока Счетчик <= РазмерТела Цикл | ||
|
||
Остаток = РазмерТела - Счетчик; | ||
|
||
Если РазмерРазделителя > Остаток Тогда | ||
Результат.Добавить(ПолучитьИзПотокаДД(Поток, Прочитано, РазмерТела - Прочитано)); | ||
Прервать; | ||
КонецЕсли; | ||
|
||
ИскомыйРазделитель = ПолучитьИзПотокаДД(Поток, Счетчик, РазмерРазделителя); | ||
|
||
Если ИскомыйРазделитель = Разделитель | ||
И не Счетчик = Прочитано Тогда | ||
Результат.Добавить(ПолучитьИзПотокаДД(Поток, Прочитано, Счетчик - Прочитано)); | ||
Счетчик = Счетчик + РазмерРазделителя; | ||
Прочитано = Счетчик; | ||
Продолжить; | ||
|
||
ИначеЕсли | ||
ИскомыйРазделитель = Разделитель | ||
И Счетчик = Прочитано Тогда | ||
Прочитано = Прочитано + РазмерРазделителя; | ||
КонецЕсли; | ||
|
||
Счетчик = Счетчик + 1; | ||
|
||
Для Каждого Элемент Из Массив Цикл | ||
Результат.Добавить(ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(Элемент)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Учтите параметр 'ВКлючатьПустые' при формировании результата
В функции РазделитьДвоичныеДанныеРазделителемВМассив
параметр ВКлючатьПустые
не используется. Рекомендуется добавить логику для его обработки, чтобы соответствовать ожидаемому поведению функции.
Примените следующий дифф для исправления:
Для Каждого Элемент Из Массив Цикл
+ Если ВКлючатьПустые ИЛИ Элемент.Размер() > 0 Тогда
Результат.Добавить(ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(Элемент));
+ КонецЕсли;
КонецЦикла;
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
БуферДвоичныхДанных = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(ДвоичныеДанные); | |
Массив = БуферДвоичныхДанных.Разделить(ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(Разделитель)); | |
Результат = Новый Массив(); | |
Счетчик = 0; | |
Прочитано = 0; | |
Пока Счетчик <= РазмерТела Цикл | |
Остаток = РазмерТела - Счетчик; | |
Если РазмерРазделителя > Остаток Тогда | |
Результат.Добавить(ПолучитьИзПотокаДД(Поток, Прочитано, РазмерТела - Прочитано)); | |
Прервать; | |
КонецЕсли; | |
ИскомыйРазделитель = ПолучитьИзПотокаДД(Поток, Счетчик, РазмерРазделителя); | |
Если ИскомыйРазделитель = Разделитель | |
И не Счетчик = Прочитано Тогда | |
Результат.Добавить(ПолучитьИзПотокаДД(Поток, Прочитано, Счетчик - Прочитано)); | |
Счетчик = Счетчик + РазмерРазделителя; | |
Прочитано = Счетчик; | |
Продолжить; | |
ИначеЕсли | |
ИскомыйРазделитель = Разделитель | |
И Счетчик = Прочитано Тогда | |
Прочитано = Прочитано + РазмерРазделителя; | |
КонецЕсли; | |
Счетчик = Счетчик + 1; | |
Для Каждого Элемент Из Массив Цикл | |
Результат.Добавить(ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(Элемент)); | |
БуферДвоичныхДанных = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(ДвоичныеДанные); | |
Массив = БуферДвоичныхДанных.Разделить(ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(Разделитель)); | |
Результат = Новый Массив(); | |
Для Каждого Элемент Из Массив Цикл | |
Если ВКлючатьПустые ИЛИ Элемент.Размер() > 0 Тогда | |
Результат.Добавить(ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(Элемент)); | |
КонецЕсли; |
No description provided.