Sonarqube Sonar中的Pylint自定义检查器规则未知

Sonarqube Sonar中的Pylint自定义检查器规则未知,sonarqube,pylint,Sonarqube,Pylint,目标:在SonarQube UI中使用自定义pylint规则 我为python selenium webdriver的pylint创建了一个自定义规则。检查是否使用了XPATH定位器 #webdriver_locator_checker.py from pylint.interfaces import IRawChecker from pylint.checkers import BaseChecker XPATH_LOCATORS = [ b'XPATH', b'xpath'

目标:在SonarQube UI中使用自定义pylint规则

我为python selenium webdriver的pylint创建了一个自定义规则。检查是否使用了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
文件(使用自定义检查器):

然后我整理了我的文件以得到一份派林报告: (pylint checkers-dir与webdriver\u locator\u checker.py)

已使用所需的规则检测正确创建报告文件:

#pylint.out
path/to/locators.py:31: [WD001(xpath-locator-not-recommended), ] Locator strategy by xpath is not recommended
在该项目中,我使用(运行sonnar scanner)设置了声纳配置文件:

然后我为SonarQube运行sonnar扫描仪:

sonar-scanner   -Dsonar.projectKey=Project1 -Dsonar.host.url=http://localhost:9000   -Dsonar.login=xxxxxxxxxxxxxxxxx
但最终结果包含(声纳配置文件中至少需要1条pylint规则才能使用pylint报告):

而这个WD001检测在SonarQube用户界面中不可见

问题:如何使此规则在SonarQube分析中可见?(WD001是自定义id)

我使用SonarQube本地docker SonarQube服务器7.9.1

SonarQube扫描仪4.0.0.1744

python 3.6.8


pylint 2.4.2

可以发布json描述并将报告文件分配给sonar。变量

只有SonarQube python分析器知道Pylint问题的Pylint id时,才能导入Pylint问题。这是pylint目前与SonarQube集成方式的一个限制。这将得到解决。同时,你必须依靠你找到的解决办法

#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
sonar-scanner   -Dsonar.projectKey=Project1 -Dsonar.host.url=http://localhost:9000   -Dsonar.login=xxxxxxxxxxxxxxxxx
WARN: Pylint rule 'WD001' is unknown in Sonar