Один из универсальных советов по совершенствованию навыков разработки на любом языке, который был прочитан в книгах
Криса Касперски (недословно):
Открой исходные коды лучшего проекта и изучи их внимательно. Это даст больше знаний, чем что-либо. Для поиска ошибок достаточно будет просматривать исходный текст с высокой скоростью, глаз сам будет зацепляться
за ошибки.
Когда-то, работая на проекте DIRECTUM в группе тестирования прикладных решений, сделал инструмент isblTest. Инструмент помог следовать совету, навигация по ISBL-коду стала простым занятием, знаний прибавилось, ошибки находились.
Потом была задача сертификации технического решения («Акелон: Управление проектами»), добавил в утилиту механизм поиска, и быстро решил задачу. Найдя ошибку в одном месте, можно было легко найти похожие участки кода. Но больше не приходилось работать с ISBL,
инструмент не использовался и не поддерживался несколько лет. А программное обеспечение без поддержки умирает.
Сейчас настало время расчехлить запасы живой воды и оживить проект. ISBLScan ViewCode — переписанная версия проекта isblTest. Не изменилось назначение инструмента. А структуры данных, алгоритмы, компоненты были реализованы без
оглядки на старую версию. Проект создал в течение трёх недель в свободное от работы время, три дня без сна и недели неспешного рефакторинга. Лицензия — New BSD (шаблон:
The BSD 3-Clause License).
ISBLScan ViewCode выглядит так:
Возможности инструмента:
Аутентификация на SQL Server по паролю, поддержка Windows-аутентификации.
Отображение элементов разработки в виде дерева (как дерево элементов проекта).
Загрузка исходного кода основных элементов разработки на IS-Builder 7 и IS-Builder 5 из базы данных.
Поиск элементов дерева разработки, содержащих в тексте нужные слова (слова из поля
Search Text).
Выделение ключевых слов, по которым выполнялся поиск в исходном тексте (желтый текст, золотой фон).
Фильтрация элементов дерева разработки по наименованию (поле фильтрации расположено над деревом проекта).
Выделение результатов поиска в дереве разработки (узлы соответствующие поисковому запросу остаются черными, узлы не соответствующие поисковому запросу становятся серыми).
Реализуемые с помощью ISBLScan ViewCode потребности:
Получение выгод.
Оптимизация рисков.
Оптимизация ресурсов.
Получение выгод
лучшие продукты делаются лучшими инструментами ((с)
Наиль Ахмеджанов, руководитель группы разработки
Synerdocs). Вы сможете сделать вашу разработку быстрее и качественней, что отразится на доверии заказчиков и финансовой выгоде;
возможность изучения исходных кодов на ISBL, повышение компетенций разработчика и финансовой составляющей работы.
Оптимизация рисков
быстрый поиск типичных ошибок и недостатков в коде позволит сократить количество уязвимостей, недопустить нарушения целостности и конфиденциальности данных информационной системы;
снижается риск остановки проекта при передаче разработки на поддержку другому разработчику. Если команда регулярно знакомится с кодом коллег, то коллегам проще уйти в отпуск.
Оптимизация ресурсов
повышение уровня культуры разработки. Имея простой доступ к примерам разработки, сделанной профессионалами, будет происходить неявный обмен опытом. Начинающие разработчики смогут быстрее перенять лучшие практики и выработать единый
стиль кодирования, что положительно скажется на слаженности работы команды;
разработчик быстрее получает доступ к информации, используя ISBLScan ViewCode как справочник по примерам разработки на ISBL.
Примеры использования инструмента
Использовал ISBLScan ViewCode (isblTest) для целей обучения разработке на ISBL, выполнения задач тестирования прикладной разработки (это уже история, обросшая легендами, не все из которых правда).
Первый пользователь, который когда-то высказал пожелания —
Пётр Федотов. Первый пользователь, точно использующий инструмент, для решения задач разработки и инспекции кода —
Иван Чурбаков.
Также есть компания-партнёр, использующая инструмент, но от них не было обратной связи.
Вариант развития проекта
ViewCode:
Расширить состав загружаемых элементов разработки:
типовые маршруты;
блоки типовых маршрутов;
вычисления из специальных справочников Prestima (например, OLAP кубы данных);
Добавить навигацию типичную для IDE:
Find all reference (найти все ссылки);
Go to definition (перейти к определению).
Улучшить подсветку синтаксиса.
Загрузка разработки как из пакета разработки так и из базы данных.
InspectCode:
Реализовать поддержку ручной инспекции кода.
Возможность оставлять примечания к коду.
Совместное редактирование примечаний.
Связь с системой учёта дефектов.
Пометка участков кода тегами:
Bug;
Good work;
Needs work;
With comment.
CheckCode:
Метрики кода.
Поиск дублирующего кода.
Реализовать автоматическую проверку синтаксиса.
Поиск кода, содержащего недостатки по шаблонам поиска.
Анализ потока данных и автоматическое выявление SQL и ISBL-инъекций.
EditCode:
Сохранение кода в базу данных.
Сохранение кода в пакет разработки.
Помощь при написании кода (автоподстановка, всплывающие подсказки по параметрам).
ReviewCode:
Сохранение кода в систему контроля версий.
Загрузка кода из системы контроля версий.
Сравнение кода из разных веток.
Когда инструмент разовьётся до ReviewCode, это будет весело.
Windows (проверялось в Windows Server 2008 R2), .NET 2.0;
Linux (проверялось в Linux Mint 14), Mono 2.10.8.1;
особенности:
не проверялась работа windows-аутентификации, так как нет опыта интеграции Open LDAP с Active Directory;
на малом размере шрифта в исходном коде не отображаются нижние подчеркивания, для увеличения размера шрифта можно нажать клавишу Ctrl и прокрутить колесо мыши вверх.
Лицензионное соглашение
Лицензия ISBLScan ViewCode — New BSD (вариант лицензии BSD, свободной от рекламного упоминания университета Беркли в тексте соглашения). Оставляю за собой право изменить лицензию в дальнейшем. Условия лицензии позволяют это сделать.
Лицензия компонента ICSharpCode.TextEditor — LGPL 2.1 (вариант свободной лицензии GPL для библиотек, позволяющий использовать продуктам с любой лицензией динамическое подключение библиотеки, если разрешить «модификации для внутреннего
использования потребителем и обратную разработку для отладки таких модификаций», а лицензия New BSD допускает такие модификации и отладку).
426011, г. Ижевск, пер. Северный, д.61, 8-й этаж, ООО
ДИРЕКТУМ, группа разработки
Synerdocs, Смирнов Вячеслав Александрович.
Благодарности. Спасибо всем, кто осилил.
Update:
2014-11-19. Перенёс разработку на github
https://github.com/polarnik/isblScan, так как запутался с настройкой рабочего места при обновлении SSH-ключей на bitbucket.
Скачал инструмент, посмотрел, удобно искать необходимый текст в разработке
Использовал ISBLScan ViewCode (isblTest) для целей обучения разработке на ISBL, выполнения задач тестирования прикладной разработки (это уже история, обросшая легендами, не все из которых правда).
Использование данного инструмента для обучения разработке на ISBL - это поиск готовых примеров кода в текущей разработке?
Не смог придумать как его можно для тестирования использовать...
Не смог придумать как его можно для тестирования использовать...
Учить писать вас плохой код не пока не стану. Цель тестирования — убедиться в отсутствии плохого кода. Убедиться, что исключения не проглатываются. Убедиться, что функции, сценарии и отчёты следуют кодексу самурая.
Функция, следующая кодексу самурая, будет выполняться только при корректных входных данных и подходящем состоянии системы. Проверки входных параметров осуществляются в начале функции, если значения параметров не соответствуют кодексу, то должно сгенерироваться
исключение. Если исключение не сгенерировано, то функция должна отработать корректно и надёжно.
Заценил искалку. Срочно дайте парню денег на "допиливать" и включать в дистр. Ну или выкладывать для всеобщего доступа. Дефолтный "поиск по текстам разработки" в директуме - выпилить с уничтожением всех следов и доказательств, чтобы на Страшном Суде даже
не доказали что оно там было.
Уважайте труд других людей. Сценарий хороший и с задачей справляется.
денег на "допиливать"
Этот проект не денежный. Помогайте советом и кодом. Проект для формирования сообщества (увеличения количества пользователей), развития инструмента и для появления потребности в такой услуге как аудит кода. А на такой услуге, при наличии хорошего инструмента,
уже можно что-то заработать.
Не совсем понял что это такое. Это развитие стандартного сценария "Поиск в текстах разработки"?
Скачал инструмент, посмотрел, удобно искать необходимый текст в разработке
Использование данного инструмента для обучения разработке на ISBL - это поиск готовых примеров кода в текущей разработке?
Не смог придумать как его можно для тестирования использовать...
Учить писать вас плохой код не пока не стану. Цель тестирования — убедиться в отсутствии плохого кода. Убедиться, что исключения не проглатываются. Убедиться, что функции, сценарии и отчёты следуют кодексу самурая.
Функция, следующая кодексу самурая, будет выполняться только при корректных входных данных и подходящем состоянии системы. Проверки входных параметров осуществляются в начале функции, если значения параметров не соответствуют кодексу, то должно сгенерироваться исключение. Если исключение не сгенерировано, то функция должна отработать корректно и надёжно.
Заценил искалку. Срочно дайте парню денег на "допиливать" и включать в дистр. Ну или выкладывать для всеобщего доступа. Дефолтный "поиск по текстам разработки" в директуме - выпилить с уничтожением всех следов и доказательств, чтобы на Страшном Суде даже не доказали что оно там было.
Уважайте труд других людей. Сценарий хороший и с задачей справляется.
Этот проект не денежный. Помогайте советом и кодом. Проект для формирования сообщества (увеличения количества пользователей), развития инструмента и для появления потребности в такой услуге как аудит кода. А на такой услуге, при наличии хорошего инструмента, уже можно что-то заработать.
Вячеслав, принимайте почтение за Вашу работу!
windows-аутентификация не работает, а жаль...
Почему-то дерево элементов разработки пустое. Версия 4.8.0.2910, IS-Builder 7.9.2.2408.
Проверил на версии 4.9 - дерево отображается.
Кстати, windows-аутентификация работает.
Авторизуйтесь, чтобы написать комментарий