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