Подтвердить что ты не робот

Предварительная компиляция PL/SQL и проверка качества кода в автоматизированной среде сборки?

Мы строим программное обеспечение с использованием Hudson и Maven. У нас есть С#, java и последние, но не в последнюю очередь PL/SQL-источники (sprocs, packages, DDL, crud)

Для С# и Java мы выполняем модульные тесты и анализ кода, но мы действительно не знаем, как работают источники PL/SQL, прежде чем мы опубликуем их в целевой базе данных.

Требования

Есть несколько вещей, которые мы не тестировали в следующем приоритете:

  • Являются ли источники действительными, следовательно "компилируемыми"?
  • Для пакетов, относящихся к определенной базе данных, они будут компилироваться?
  • Качество кода: есть ли у нас недостатки кода, такие как дубликаты, слишком сложные методы или другие нарушения для определенного набора правил?

Кроме того,

  • инструмент должен работать без заголовка (commandline, ant,...)
  • мы хотим провести анализ на частичной базе кода (только с измененными источниками)

Инструменты

Мы провели небольшое исследование и нашли следующие инструменты, которые могли бы потенциально помочь:

До сих пор Жаба для Oracle вместе с Sonar кажется элегантным решением. Но может быть, мы что-то упустили?

Любые идеи? Другие продукты? Опыт?

Вопросы, относящиеся к SO:

4b9b3361

Ответ 1

Я думаю, что этот блог описывает необходимый процесс:

http://www.theserverlabs.com/blog/?p=435

Пожалуйста, проверьте и дайте мне знать, что вы думаете об этом.

Ответ 2

Наш подход заключается в том, чтобы сохранить каждый объект базы данных (таблицы, представления, функции, пакеты, sprocs и т.д.) в собственном файле под контролем источника и иметь сервер интеграции (TeamCity, Hudson и т.д.) делают ночную сборку базы данных - из источника - где она падает и воссоздает схему перед проверкой ошибок компиляции в системной таблице user_errors. Это позволяет узнать, когда кто-то ввел компиляцию ошибок в сборку.

Следующий шаг - использовать что-то вроде PLUTO, чтобы добавить модульные тесты к вашему коду PL/SQL и добавить их в ночное время построить задачу. Для нас это связано с наличием образцов тестовых наборов данных (также под контролем источника), которые позволяют нам получить базу данных в "известное состояние" для целей тестирования.

Я не нашел ничего, что очень помогло бы нам с любым из вышеперечисленных, так что это главным образом коллекция задач Ant, пользовательских сценариев оболочки и wizardry, которые в основном применяют требуемый DDL к пустой базе данных и используют DBMS_UTILITY.COMPILE_SCHEMA() компилировать схему. Вы можете добавить больше причудливых материалов позже, например, объекты обратной трассировки, которые не могут скомпилировать или пропустить тесты для конкретного отправителя в исходном элементе управления, и выдать "обвинительную почту".

Мне было бы очень интересно узнать, есть ли у кого-нибудь другой подход или есть готовый продукт, который делает это для меня!

Ответ 3

Наш DMS Software Reengineering Toolkit является основой для любых настраиваемых инструментов. Он имеет интерфейс PL/SQL, который может использоваться для создания произвольных проверок качества исходного кода. Да, он имеет версию в командной строке.

Существуют различные инструменты PL/SQL COTS на основе DMS, которые можно использовать для проверки качества:

  • Formatter - очищает макет. Побочный эффект: статическая проверка для легального синтаксиса PL/SQL
  • Поиск исходного кода - позволяет быстро искать индексированную базу исходного кода. Вычисляет Halstead и Cyclomatic метрики как побочный эффект настройки индекса.
  • CloneDR - находит и отправляет дублированный код PL/SQL
  • Test Coverage - определяет часть кода PL/SQL, не выполняемую с помощью тестов (ad hoc, unit или функциональных тестов).

Все они имеют версии командной строки.