Хорошо, я зашел в какой-то тупик.
В моем проекте с открытым исходным кодом, браузере базы данных Oracle на базе .NET, я реализовал несколько инструментов рефакторинга. Все идет нормально. Единственной функцией, которую я действительно надеялся реализовать, было большое «Глобальное переформатирование», которое сделало бы стандарты кода (скрипты, функции, процедуры, пакеты, представления и т. Д.) Совместимыми. (Меня всегда огорчало отсутствие приличных инструментов рефакторинга SQL, и я хотел с этим что-то сделать.)
К сожалению, я обнаруживаю, к большому огорчению, что, похоже, не существует какого-либо одного широко используемого или даже "общепринятого" стандарта для PL-SQL. Такого рода помехи в моих планах реализации.
Мой поиск был довольно исчерпывающим. Я нашел много противоречивых документов, тем и статей, и мнения довольно разные. (Запятая, между прочим, кажется, вызывает немало споров.)
Итак, я столкнулся с парой вариантов:
- Добавьте функцию, которая позволяет пользователю настраивать стандарт, а затем переформатировать код в соответствии с этим стандартом.
-ИЛИ-
- Добавьте функцию, которая позволяет пользователю настраивать стандарт и просто генерировать список нарушений, как это делает StyleCop, оставляя SQL нетронутым.
По моему мнению, первый вариант экономит конечным пользователям большую работу, но рискует изменить SQL потенциально нежелательными способами. Второй вариант рискует генерировать множество предупреждений и вообще не выполнять никаких действий. (Это было бы просто раздражающим.)
В любом сценарии у меня все еще нет стандарта. То, что я должен знать от вас, ребята, является своего рода опросом, но вроде нет. Если вы собираетесь использовать инструмент такого типа, какие части вашего кода SQL вы бы хотели, чтобы он предупреждал вас или исправлял?
Опять же, я просто в растерянности из-за отсутствия единого стандарта. И, учитывая, что Oracle ничего официально не публикует, я думаю, что это то, на что сообщество может рассчитывать. Кроме того, учитывая то, как голосование работает на SO, голосование поможет установить популярность данного «рефакторинга».
P.S. Движок анализирует SQL в дереве выражений, чтобы он мог надежно анализировать SQL и переформатировать его. Там должно быть совсем немного, что мы можем сделать, чтобы исправить формат SQL. Но я думаю, что для первого релиза, layout является главной задачей. Хотя стоит отметить, что эта штука уже имеет рефакторинг для преобразования ключевых слов в верхний регистр и идентификаторы в нижний регистр.