Files
Obsidian-Main/20.01. Programming/Python/檢測工具.md

3.1 KiB
Raw Permalink Blame History

單元測試

pytest

Pytest 不僅可以幫助我們運行測試還可以幫助我們配置如何運行它們、運行哪些文件等等……Pytest 有一個配置文件 pytest.ini,您可以在其中描述它的配置,例如哪個版本應該是 Pytest 或者哪些是測試文件,例如下列。

# pytet.ini
[pytest]   
minversion = 6.0   
addopts = -ra -q — cov=src — cov-report=html   
python_files = test_*.py

tox

Tox 是一個通用的virtualenv管理和測試命令行工具。 使用不同的 Python 版本和解釋器檢查您的包是否正確安裝 在每個環境中運行您的測試,配置您選擇的測試工具 作為持續集成服務器的前端,大大減少樣板文件並合併 CI 和基於 shell 的測試。 Tox 也有它的配置文件。

[tox] 
isolated_build = True 
envlist = py{38} 

[testenv] 
usedevelop = true 
deps = -r src/requirements_dev.txt

程式檢查工具

用來檢查程式是否符合coding style、PEP8之類的規範

pylint

Pylint config: create .pylintrc file

[MESSAGES CONTROL]  
disable=  
    missing-docstring,  
    too-few-public-methods[REPORTS]  
output-format=colorized  
files-output=no  
reports=no  
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)

flake8

Flake8 config: create .flake8 file

[flake8]  
ignore = E203, E266, E501, W503, F403, F401, E402  
max-line-length = 120  
max-complexity = 18  
select = B,C,E,F,W,T4,B9  
exclude =  
    .git,  
    tests

mypy

Git hook

pre-commit

Pre-commit 是一個創建 git hook的framework以確保您的代碼編寫與您定義的代碼樣式相對應。
它會掃描您的原始碼並運行您將在預提交配置文件中定義的所有檢查器:.pre-commit-config.yaml

repos:
  - repo: 'https://gitlab.com/pycqa/flake8'
    rev: 3.8.2
    hooks:
      - id: flake8
        name: Style Guide Enforcement (flake8)
        args:
          - '--max-line-length=120'
  - repo: 'https://github.com/pre-commit/mirrors-mypy'
    rev: v0.720
    hooks:
      - id: mypy
        name: Optional Static Typing for Python (mypy)

漏洞檢查

SonarQube

有很多用於漏洞掃描的工具,但我們將看看Sonarqube。Sonarqube 是用於代碼質量和安全掃描的開源強大工具,是該行業的領先工具之一。
更多在官方文檔中。 您可以使用 Docker 映像設置本地 Sonarqube 服務器並定義sonar-project.properties

# must be unique in a given SonarQube instance
sonar.projectKey=python_app_blueprint
# --- optional properties ---
# defaults to project key
#sonar.projectName=My project
# defaults to 'not provided'
#sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Defaults to .
#sonar.sources=.
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8