Sonarqube PLSQL Пользовательское правило для определения правильной точки с запятой в SQL-файле сценария SQL
Я использую плагин 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 ответа
Вы можете следовать руководству " Создание плагина с пользовательскими правилами ", используя шаблон проекта plsql-custom-rules
,
Это сложнее, чем добавить правило в XPATH, но у вас будет больше контроля.
Чтобы создать чек, вы можете создать подкласс
org.sonar.plsqlopen.checks.AbstractBaseCheck
,
Вы можете использоватьorg.sonar.check.Rule
а такжеorg.sonar.squidbridge.annotations.SqaleConstantRemediation
аннотации для настройки метаданных проверки (имя, описание, ключ...).Очень часто вам нужно переопределить только два метода:
init()
: подписаться на желаемые правила грамматикиvisitNode(AstNode)
: проанализировать узлы, которые соответствуют подписанным правилам грамматики
Но сначала, как показано в выпуске 21, убедитесь, что ваш код не содержит ошибок с сообщением "Невозможно разобрать файл".
Мне просто нужно знать такой анализатор, как sonarqube analysis, чтобы обнаружить ошибки компиляции в файле скрипта
Убедитесь, что ваш случай не является дополнительной точкой с запятой, так как в " Точка с запятой не требуется в CREATE VIEW
".
Просмотр этого исходного кода - хороший способ проверить, как анализатор, например анализ sonarqube, обнаруживает ошибки компиляции в файле сценария.
Мы использовали его в прошлом, с небольшой модификацией. Вы можете начать с правила, которое реализует ту же логику здесь:
https://github.com/gretard/sonar-tsql-plugin/wiki/Custom-rules