как использовать пользовательское правило Java на сонаре?

Я использую сонар для многих клиентских проектов, многим клиентам нужны собственные правила, я всегда создавал правила для java с помощью xpath, но теперь xpath удален для классов java.

Я использую sonarQube вер. 4.5.1 и подключаемый модуль Java Ver. 2.9.1

В документации сонара: http://docs.sonarqube.org/display/DEV/Custom+Rules+for+Java

Я вижу, что для пользовательских правил для java требуется как минимум версия 3.1 для плагина java, а изменения, внесенные между ver. 3.0 и 3.1, в которых нужно переписать некоторые классы.

Мне нужно знать, как я могу использовать настраиваемое правило для java-кода с моей фактической конфигурацией, и если я создам настраиваемое правило сейчас, перепишу ли я какой-либо класс настраиваемого правила для любого обновления java-плагина??


person Yalami    schedule 15.02.2016    source источник
comment
По многим-многим причинам (см. примечания к выпуску java-плагина) вам действительно лучше использовать последнюю версию java-плагина (например, 3.10 или выше).   -  person benzonico    schedule 15.02.2016
comment
да, я знаю, но у меня 150 проектов и 1100 пользователей, это общая платформа, я не могу обновить плагин для любого обновления, потому что для каждого обновления, которое я сделал, это большой сайт, мне нужно сделать много тестов нет регрессия, и протестировать его на платформе разработки и в предварительной версии, а также после установки в рабочей версии, как вы можете видеть, каждое обновление занимает более 3 месяцев тестирования и т. д. мне нужно решение, спасибо за ваш ответ   -  person Yalami    schedule 16.02.2016
comment
Здесь вопрос мнения, но я не думаю, что это веские причины не обновлять: обновление даст вам меньше ошибок, больше правил и позволит вам быстрее разрабатывать собственные правила. Мы тестируем отсутствие регрессии на нашей стороне. Я думаю, что использование ярлыка для разработки пользовательских правил для устаревшего плагина приведет вас только в тупик.   -  person benzonico    schedule 17.02.2016


Ответы (2)


Если вы пишете собственные правила для java-плагина версии 2.9.1, да, в этом случае вы столкнетесь с критическими изменениями при обновлении до более поздней версии плагина (что я не могу вам порекомендовать).

Мы (разработчики java-плагинов) стараемся свести критические изменения API к минимуму, но начиная с версии 2.9.1 это происходит.

Глядя на пример в документе для 3.1, вы можете начать писать собственные правила, но все будет по-другому, и вам придется во всем разобраться.

person benzonico    schedule 17.02.2016
comment
Большое спасибо, хорошо, я вижу, но после версии 3.1 сонар изменит способ кодирования пользовательского правила на новейшую версию или она будет стабильной? - person Yalami; 17.02.2016
comment
В настоящее время мы работаем с версией 3.10 плагина. И (насколько я помню) он не сильно изменился. Мы стараемся, чтобы все было как можно более стабильным и избегало критических изменений. Но чтобы продвигать API, нам, возможно, придется делать это время от времени. - person benzonico; 17.02.2016
comment
По многим-многим причинам мы не можем обновить java-плагин сейчас, потому что: 1 - сначала нужно обновить sonarQube до 4.5.6+ 2 - мы только что сделали обновление sonarQube в прошлом месяце, и это занимает много времени. 3 - у нас есть общая платформа между JAVA и .NET, и последняя версия, совместимая между ними, - 4.5.1 4 - мы не можем обновить обе платформы Java и .net только для этой функциональности, поэтому, если у вас есть работа arround или решение, позволяющее заставить правила xpath работать, это будет полезно для нас. Если нет обходного пути, нам придется обновиться, но это должен быть наш последний вариант. - person Yalami; 17.02.2016
comment
XPath больше не поддерживается подключаемым модулем Java и больше не вернется. Следовательно, обходного пути нет. Правила придется переписывать. Любое правило, которое вы сейчас пишете на основе XPath, тоже придется перенести. - person Wohops; 17.02.2016
comment
Хорошо, спасибо, Майкл, но, как сказал benzonico, прежде чем мы проверим отсутствие регрессии на нашей стороне, как вы можете объяснить, что правила xpath работали в версии 4.0, но не работали с версией 4.5.1 ?? Проблема в том, что я обнаружил эту неработоспособность после обновления, потому что это нигде не упоминалось... что xpath не работает с java-плагином из 2.9.1 - person Yalami; 18.02.2016
comment
Мне нужно знать, есть ли у меня способ создать пользовательское правило Java с моей актуальной версией 2.9.1? у вас есть вики для этого, я ничего не нашел. заранее спасибо - person Yalami; 18.02.2016
comment
Посмотрите на мой ответ еще раз: просмотр примера в документе для 3.1 может помочь вам начать писать собственные правила (для 2.9.1), но все будет по-другому, и вам придется во всем разобраться. - person benzonico; 18.02.2016
comment
хорошо, спасибо, benzonico, за ваше время и ответ, я попытался создать собственное правило для java-плагина 2.9.1, и я выполнил шаг, как описано в документации сонара для версии 3.1, но я не нашел свое правило в сонаре, вы можете помочь мне создать свое первое пользовательское правило Java, потому что я всегда использовал правило xpath, и теперь я заблокирован, это мое собственное правило: если в классе есть аннотация @Stateless или @Stateful , должна быть аннотация @Interceptors . Если это не так, это должна быть критическая проблема. - person Yalami; 24.02.2016

Наконец-то я нашел, как создать собственный плагин правил Java,

Я создал шаблон проекта, чтобы он мог сгенерировать пользовательское правило Java.

я разместил проект на git, им могут пользоваться все, ссылка на проект: https://github.com/cecef/sonar-CustomRule-plugin

С уважением, Юсеф

person Yalami    schedule 01.07.2016
comment
Могу я попросить вас просмотреть как предлагать персональные библиотеки с открытым исходным кодом?, пожалуйста? - person Martijn Pieters; 02.07.2016