【发布时间】:2020-12-27 09:55:21
【问题描述】:
假设我有一个 python 函数和字典如下:
d = {"a": 1, "b": 2, "c": 3}
def foo(input):
return d[input]
当我将我的代码推送到 GitHub(可能是某种持续集成)时,有没有办法检查 foo 的所有调用是否仅使用 d 的一个键作为 input 参数,并且如果有一个带有无效参数的调用,标记它或发出警报?
例如:
foo("a") # no flag
foo("d") # flag/alert
我知道如何在运行时引发异常或ValueError,但我正在寻找一个 CI 解决方案以包含在我们的 GitHub 工作流程中。现在我们正在使用 Travis-CI 进行自定义测试和 LGTM 提供的标准 CodeQL 测试。我研究过通过 LGTM 使用自定义 CodeQL,但我不太明白。我会很好地在这些持续集成中实现它或实现第三个。
【问题讨论】:
-
听起来您需要适当的函数参数注释和检查器。
-
嗯...我不知道你可以做超出类型的参数注释?特别是在 python 2.7 中?
-
好吧,无论如何你都不应该使用 Python 2.7,因为它已经停产 9 个月了。但是,是的,有一个用于输入字典的 PEP:python.org/dev/peps/pep-0589
-
如果我错了,请纠正我,但是 PEP 不是描述为字典的键和值设置注释,而不是为函数的参数设置注释吗?
-
嗯...在进一步搜索后,也许 Literal 类型注释会起作用?除了你不能做 Literal[dict.keys()]...
标签: python django travis-ci codeql semmle-ql