Sonarqube Sonar中的Pylint自定义检查器规则未知
目标:在SonarQube UI中使用自定义pylint规则 我为python selenium webdriver的pylint创建了一个自定义规则。检查是否使用了XPATH定位器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'
#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