Sonarqube PLSQL Пользовательское правило для определения правильной точки с запятой в SQL-файле сценария SQL - PullRequest
0 голосов
/ 05 июня 2018

Я использую плагин Jenkins и SONARQUBE PL / SQL для анализа кода Oracle SQL, мне нужно создать пользовательские правила, используя XPATH для анализа качества файлов сценариев SQL, отправляемых для развертывания через Jenkins.

Я пытаюсь создать пользовательское правило, которое определяет, отсутствует ли точка с запятой (";") в конце какой-либо команды SQL.Завершение SQL («точка с запятой») имеет важное значение для развертывания сценариев SQL с SQLPLUS.

пример кода

 insert into table_name values('wait','for','completion'); -- compliant with script 
 insert into table_name values('somename','for','good'); -- compliant with script 
 **insert into table_name values('someplace','for','game')** -- non compliant as semicolon missing
 insert into table_name values('something','for','change'); -- compliant with script 
 delete from table_name ; -- compliant with script 
 delete from table_name ; -- compliant with script 
 update table_name set name='james' where id='22';

существует запрос вставки, в котором отсутствует точка с запятой и, следовательно, sonarqube должен обнаружить это и завершить сборку jenkins или не выполнить тест качества SONAR.

помогите создать пользовательское правило PLSQL для обнаружения правильного завершения SQL через точку с запятой.

пример xpathбудет: / COMPILATION_UNIT / ANY_DML_EXPRESSION / follow-sibling :: SEMICOLON - что-то вроде этого

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Мы использовали его в прошлом, с небольшой модификацией.Вы можете начать с правила, которое реализует ту же логику здесь:

https://github.com/gretard/sonar-tsql-plugin/wiki/Custom-rules#creating-more-complex-custom-rule-with-distance

0 голосов
/ 08 июня 2018

Вы можете следовать руководству " Создать плагин с пользовательскими правилами ", используя шаблон проекта plsql-custom-rules.
Это более сложно, чем добавление правила к XPATH , но у вас будет больше возможностей для управления.

Чтобы создать проверку, вы можете создать подкласс org.sonar.plsqlopen.checks.AbstractBaseCheck.
Вы можете использоватьаннотации org.sonar.check.Rule и org.sonar.squidbridge.annotations.SqaleConstantRemediation для настройки метаданных проверки (имя, описание, ключ ...).

Очень часто вам необходимо переопределить только два метода:

  • init(): подписаться на нужные правила грамматики
  • visitNode(AstNode): проанализировать узлы, которые соответствуют подписанным правилам грамматики

Но сначала, как показано на рисунке выпуск 21 , убедитесь, что ваш код не содержит ошибок с сообщением "Unable to parse file".

Мне просто нужно знать синтаксический анализатор, например, анализ sonarqube, чтобы обнаружить ошибки компиляции в файле сценария

Убедитесь, что ваш случай не является необязательным, как в случае с точкой с запятой, как в " Точка с запятой не требуется в CREATE VIEW ".
Просмотр этого исходного кода - хороший способ проверить, как синтаксический анализатор, например, анализ sonarqube, обнаруживает ошибки компиляции в файле сценария.

...