Правило пользовательской проверки Pylint неизвестно в Sonar

Цель: используйте настраиваемые правила pylint с пользовательским интерфейсом SonarQube.

Я создал настраиваемое правило для pylint для python selenium webdriver. Чтобы проверить, используется ли локатор XPATH.

#webdriver_locator_checker.py
from pylint.interfaces import IRawChecker
from pylint.checkers import BaseChecker

XPATH_LOCATORS = [
    b'XPATH',
    b'xpath'
]


class WebdriverLocatorChecker(BaseChecker):
    """Checks if XPATH locator is used."""
    __implements__ = IRawChecker

    name = 'webdriver-xpath-locator'
    msgs = {
        'WD001': (
            'Locator strategy by xpath is not recommended',
            'xpath-locator-not-recommended',
            'Xpath locators are not recommended, use css locators instead or use class name, id or name if possible.'
        ),
    }
    options = ()

    def process_module(self, node):
        with node.stream() as stream:
            for (lineno, line) in enumerate(stream):
                for locator in XPATH_LOCATORS:
                    if locator in line:
                        self.add_message('xpath-locator-not-recommended', line=lineno + 1)
                        break

def register(linter):
    """required method to auto register this checker"""
    linter.register_checker(WebdriverLocatorChecker(linter))

В корневой каталог я добавил .pylintrc файл (для использования настраиваемой проверки):

#.pylintrc
load-plugins=webdriver_locator_checker

затем я пролистал свои файлы, чтобы получить отчет pylint: (pylint-checkers - dir with webdriver_locator_checker.py)

PYTHONPATH=./pylint-checkers/ pylint ./path/to/locators.py | tee ./pylint.out

файл отчета был создан правильно с обнаружением желаемого правила:

#pylint.out
path/to/locators.py:31: [WD001(xpath-locator-not-recommended), ] Locator strategy by xpath is not recommended

В проекте я создал конфигурационный файл сонара (для запуска сонара-сканера):

#sonar-project.properties
sonar.python.pylint.reportPath=pylint.out

Затем запустил соннар-сканер для SonarQube:

sonar-scanner   -Dsonar.projectKey=Project1 -Dsonar.host.url=http://localhost:9000   -Dsonar.login=xxxxxxxxxxxxxxxxx

но конечный результат содержит (вам нужно как минимум 1 правило pylint в профиле сонара, чтобы он работал с отчетом pylint):

WARN: Pylint rule 'WD001' is unknown in Sonar

И это обнаружение WD001 не отображается в пользовательском интерфейсе SonarQube.

Вопрос: как сделать это правило видимым в SonarQube Analysis? (WD001 - пользовательский идентификатор)

Я использую локальный докер SonarQube Сервер SonarQube 7.9.1

Сканер SonarQube 4.0.0.1744

Python 3.6.8

pylint 2.4.2


person Lukasz    schedule 14.10.2019    source источник


Ответы (2)


возможно с описанием проблемы json и назначением файла отчета эхолоту. переменная https://docs.sonarqube.org/latest/analysis/generic-issue/

person Lukasz    schedule 15.10.2019

Проблемы Pylint можно импортировать, только если их идентификатор pylint известен анализатору Python SonarQube. Это ограничение способа интеграции pylint в настоящее время с SonarQube. Это будет устранено , когда проблемы pylint импортируются как внешние проблемы в SonarQube. А пока вы должны полагаться на обходные пути, подобные тому, который вы нашли.

person Pierre-Yves    schedule 17.10.2019