Архив: Разработка открытого ПО – простое консольное приложение для обработки исходников (четкие требования)

Бюджет 17$ / 1000
руб
в месяц
Создан: 4 года назад
Закрыт
Описание
Разработка открытого ПО – простое консольное приложение для обработки исходников (четкие требования)

Необходимо разработать обработчик исходников – программу, которая запускается из командной строки и обрабатывает текстовые файлы – исходники на языке Typescript, выполняя на них ряд описанных ниже функций.
Чтобы в ЛС, письмах или где-то еще сослаться на это ТЗ – рабочее название модуля – "CodeBuddy".

Программе на вход передается папка с файлами и маской (пример: d:/my_project/src/**/*.ts),
а также передается json файл с настройками вида:
{
cpl: "none" | "replace" | "error"; // Заменять ли CPL (--cpl=replace)
uuid: "none" | "replace" | "error";  // Заменять ли UUID (--uuid=error)
shared_blocks: {
enabled: boolean; // Обрабатывать ли checked_blocks (--checked_blocks=true)
}

checked_blocks: {
enabled: boolean; // Обрабатывать ли checked_blocks (--checked_blocks=true)
}
boolean;
shared_block_comment: string;
}

Нужно поддержать задание аналогичных опций через ключи командной строки. 
Примеры: 
--cpl=true
--uuid=true
--shared_blocks=true
--shared_blocks.start="// @SHARED_BLOCK"
и т.д

Функции программы:
- B001 cpl (сокрашение от code-place) – замена уникальных кодов местоположения в программе.
- cpl код это код вида CODExxxxxxxx, где "x" – цифра от 0 до 9.
- Он может быть в строке или комментарии – не важно. Если встретилась такая комбинация – считаем ее кодом.
- Нужно обойти все файлы исходников и найти все cpl
- Среди них – отобрать не уникальные и cpl=CODE00000000, – такие cpl нужно заменить на новые, уникальные CPL
- Для дублированный cpl (не равных CODE00000000) нужно постараться сохранить тот cpl, который был изначально и заменить те cpl которые новые.
B001.01 Как это достигается:
- После замены всех cpl – сохраняем все cpl в json файл и/или базу (см. доп требования ниже)
- Для каждого cpl сохраняем:
- Значение cpl
- Позицию cpl в файле
- Путь к файлу
- Имя файла
- Три строки – текущую, одну до, одну – после, исключая из них все cpl и uuid
- Когда находится несколько одинаковых cpl, пытаемся выбрать из них один, который сохраняется (остальные будут заменены новыми значениями).
Сохраняется первый для которого выполнено одно из условий:
- Совпадает путь к файлу и позиция cpl в файле
- Совпадает имя файла и позиция cpl в файле
- Совпадает имя файла и три строки
- Совпадает три строки
- Любой
- Должны поодерживаться поддерживаться дополнительные режимы
- clear – все cpl сбрасываются на CODE00000000
- reset – cpl перенумеровываются начиная с 1. CPL в одном файле в этом случае должны идти последовательно. В различных файлах – быть различны, но последовательность файлов значения не имеет.

> Зачем cpl нужны: 
их удобно использовать в кодах ошибки и в логах. Если ошибка вылезает, по этому коду легко и быстро найти место в исходниках.
Да, можно найти и по stack-trace, НО stack-trace – нельзя (да и не стоит даже если было бы можно) изменять, его проблематично сохранить в базу, он – большой, 
снимать его – долго (ощутимо снижает производительность)
А cpl – можно передавать из функции в функцию и вернуть именно тот cpl который важен для данной конкретной ошибки, можно сохранить в базу. А еще можно вернуть несколько cpl на одну ошибку.

- B002 uuid (universal unique identifier) – код вида hhhhhh-hhhhhhhhhhhh-hhhhhh-hhhhhh. Мoжет быть в любом регистре, – важна длина, наличие "-" и то что каждый "h" – это 0-9 или от a-f
- Подход аналогичен cpl – находим, не уникальные – заменяем новыми, уникальными
- Но в отличае cpl, – нулевой uuid – не заменяется, – оставляем его как есть. 
- Последовательность вида new000-hhhhhhhhhhhh-hhhhhh-hhhhhh – заменяется на новый, уникальный uuid
- Алгоритм сохранения старых uuid аналогичен сохранению cpl.

- B003 shared_blocks – найти блоки кода, начинающиеся на shared_blocks.start, заканчивающиеся на shared_blocks.end
- Пример начала блока: // @SHARED_BLOCK {master:true, group:"block424", server:true, a:7} START
- shared_blocks.start и shared_blocks.end – могут быть только в начале строки.
- Между префиксом и словом "START" – распологается валидный JSON – его нужно распарсить, назовем этот JSON – Context'ом, он используется ниже.
- Если он не валидный, – сообщаем об ошибке и этот файл вообще не обрабатываем

Это начало требований. Полное ТЗ – в приложенном файле.
Категория

Похожие проекты

safe$500
0 2
Мы ищем fullstack разработчика, который может сделать сайт под ключ. Есть детальное ТЗ, обязатедбное к ознакомлению и наработки по дизайну в виде макета Figma....
safe$120
0 2
Должно быть у исполнителя готовое и грамотно сделанное портфолио....
2 месяца назад
safe 
11 1
Нужен сайт по открытию кейсов для игры Standoff 2. Нужен самый обычный дизайн. Личный кабинет, инвентарь, авторизация через ВК. В Админке должна быть возможность создавать/удалять кейсы, редактировать шансы на выпадение какого-либо дропа, количество кейсов, устанавливать цену. В Админке должна быть возможность......
2 месяца назад
 
0 5
Требуется веб дизайнер для  2х проектов:. Оптимизации существующего сайта (лендинг) по танцевальному фитнесу на wix. com. Создание онлайн магазина био добавок и его оптимизация.   Ищем профессионального дизайнера, который готов на долгосрочное сотрудничество....
 
0 2
Нужно сделать сайт просчет оффера. Верстка страницы с Figma....
3 месяца назад
$33
10 1
Мне нужен бот перехватчик для программы ( taxsee driver ) чтобы брать предварительные и текущие заказы. Требования: . 1 бот перехватчик нужен для android. 2 можно писать bоt под моим аккаунтом или другие варианты. 3 функция отключения и включения бота когда он нужен или не нужен. За хорошую работу готов......
2 месяца назад
 
76 1
Ищу фрилансера для создания лендингов на Битрикс24. Занятость постоянная, 1 раз в 3 месяца....
3 месяца назад
 
138 2
safe 
498 6
Необходимо написать небольшую серверную часть учебного сайта для запуска под виртуальной машиной Oracle VM VirtualBox  Debian 6. 1 используя php7. 33 и базу MongoDB....
safe 
134 6
ИЩУ СПЕЦОВ – ВЫСОКОГО УРОВНЯ!   1). Уточните, какое у вас образование. 2). Обязательно предоставьте портфолио - лучшие работы. 3). Условия сотрудничества – по договоренности (сообщите ваши предварительные условия).   П. все предложения, которые меня заинтересуют – либо отвечу, либо сохраню контакты в......
3 месяца назад
 
89 1
Нужно будет делать видео по примеру уже готового видео. Вы подойдете если : имеете базовые-легкие знания в трейдинге,если у вас хороший микрофон, нормальная дикция, и есть программа для снятия экрана на видео. (Себя снимать не нужно,только видео экрана) Чем выше качество тем выше оплата . Оплата за среднее......
safe$111
122 2
Добрый день заинтересовавшимся! У нас сайт на стадии разработки на ОС 3. Создано ТЗ. Необходимо выполнить все пункты в ТЗ. Предварительно 10 000 руб. Поднятие цены можно и обсудить....
$1000
286 5
TALP GROUP Мы занимаемся разработкой и продвижением IT- продуктов. В нашем арсенале множество интересных кейсов, большинство из которых реализованы на нашей собственной low/no code платформе Аltrp. Мы работаем как над внутренними проектами, так и с внешними заказчиками. Среди них: разработка швейцарской......
safe 
174 17
Добрый день. Мне необходимо скопировать действующий сайт с полным функционалом  https://gk-grupp....
3 месяца назад
 
198 12
Ищем специалиста для работы над дизайном агенства недвижимости для англоязычной аудитории....
safe 
109 2
Меняли хостинг сайта поэтому имена сервера слетели, надо поменять на новые и все....
$250
315 16
Разработка продающего лендинга, ТЗ во вложенных файлах....
 
164 6
Нужно ускорить загрузку сайта....
3 месяца назад
$7
144 2
Фотографии улыбок до стоматологического лечения и после. Нужно из сопоставит а схожих ракурсах и выровнить цвет , скореекситровать детали....
3 месяца назад
 
140 1
есть форма приема заявки на тильде, необходимо проверять номер телефона заказчика перед отправкой в работу....
3 месяца назад
Смотреть все