CodeQL 文档

使用 exit() 或 quit()

ID: py/use-of-exit-or-quit
Kind: problem
Security severity: 
Severity: warning
Precision: very-high
Tags:
   - maintainability
Query suites:
   - python-security-and-quality.qls

单击以查看 CodeQL 存储库中的查询

“exit” 和 “quit” “函数” 实际上是 site.Quitter 对象,并在解释器启动时从 site.py 加载。但是,如果解释器使用 -S 标志启动,或者使用自定义 site.py,那么 “exit” 和 “quit” 可能不存在。

建议

将 “exit()” 和 “quit()” 的使用替换为 “sys.exit()”,后者内置于解释器中,并且保证存在。

示例

在这个示例中,使用 “exit()”,如果解释器传递了 “-S” 选项,它将失败。


def main():
    try:
        process()
    except Exception as ex:
        print(ex)
        exit(1)

在这个示例中,使用 “sys.exit()”,无论解释器选项如何,它的行为都相同。

import sys

def main():
    try:
        process()
    except Exception as ex:
        print(ex)
        sys.exit(1)

参考资料

  • ©GitHub, Inc.
  • 条款
  • 隐私