在你的代码中,并非每一个违反代码惯例的行为都是你想采取的行动。以Python中的一个例子为例--mark_safe ,这个函数认为所有传递的输入都是有效的,在处理用户输入的视图中会出现安全漏洞。但如果在用户输入被保证为可信的环境中使用,它就完全合理了。管理员视图是这方面的一个完美例子。DeepSource对这种违规行为提出了一个问题,不管它在什么环境下使用。
在最新的版本中,我们引入了一个新的关键字,你可以把它作为注释添加到你的代码中。这将允许你在该行代码中永久地沉默一个或多个问题。
迎接,skipcq (代表跳过 连续 质量)--一种统一的方式来沉默源代码中的问题,在DeepSource上所有可用的分析器上都能工作。这个特殊的关键字可以作为注释的一部分,在发生违规的同一行或周围行中使用,以使其沉默。
沉默一个特定的问题
将skipcq 作为注释与问题的短代码一起添加到该行的末尾,或添加到它上面的一行,以压制该问题:
input = 10 # skipcq: PYL-W0622
# skipcq: PYL-W0622
input = 10
这样做将抑制这一行的PYL-W0622 ,因为内置的函数input 已经被重新定义。
压制多个问题
要使一行中的多个问题保持沉默,请在skipcq: 关键字后面添加一个逗号分隔的问题短代码列表:
def function(input, an_argument_not_used): # skipcq: PYL-W0622, PYL-W0613
pass
# skipcq: PYL-W0622, PYL-W0613
def function(input, an_argument_not_used):
pass
使一行中的所有问题保持沉默
要使某一行可能提出的所有问题保持沉默,只需在该行对应的注释中使用关键字skipcq:
except Exception: # skipcq
pass
# skipcq
except Exception:
pass
不过需要注意的是--这将阻止所有问题在这一行被提出,这可能不是你想要的。我们建议对你想抑制的问题明确使用这个关键词。
好问题!只要在你对该行的评论末尾加上skipcq:
class Klass:
def __init__(self):
pass
def func(self, x): # This function does not use `self`. Hence an issue will be raised. Lets ignore it. skipcq
return x ** 2
如果skipcq ,你可以在相关行的上方放置尽可能多的注释或换行符:
class Klass:
def __init__(self):
pass
# skipcq
# This function does not use `self`.
# Hence an issue will be raised. Lets ignore it.
def func(self, x):
return x ** 2
我们对这个版本感到非常兴奋,我们希望它有助于减少假阳性,并使您能够轻松地调整DeepSource的结果以适应您的环境,这样您就可以做您最擅长的事情--发布好的代码。