星期四, 3月 16, 2017

mypy

演講:https://youtu.be/ZP_QV4ccFHQ
mypy 是靜態型別檢查工具,遵循 PEP484 與 PEP526 這兩個標準
而 PEP484 與 PEP526 這兩個標準最主要的用途是為 Python 加上型別標示,這樣可以更容易找到潛在的錯誤。

安裝

pip3 install mypy-lang

程式的部份 (type annotation)

Python 3

def hello(name: str) -> str:
    """foo."""
    return "Hello, {}".format(name)


def main() -> None:
    """Main entry."""
    hello("John")

Python 2

def hello(name):
    # type: (str) -> str
    """foo."""
    return "Hello, {}".format(name)


def main():
    # type: () -> None
    """Main entry."""
    hello("John")

如何使用 mypy 檢查

如果程式沒加 type annotation,那麼執行 mypy 不會有任何問題。 如果有一部份使用了 type annotation,那麼執行 mypy 就會告知有問題。 要強制檢查,可以使用 --disallow-untyped-defs
mypy --disallow-untyped-defs your_program.py
要產生 HTML 報告
mkdir html
mypy --html-report ./html your_program.py
xdg-open ./html/index.html
產生 JUnit XML
mypy --junit-xml JUNIT_XML your_program.py

案例

Dropbox 內部已經在使用。

沒有留言: