dlint
1.0.0

DLINT是鼓勵最佳編碼實踐並幫助確保Python代碼安全的工具。
近年來,我作為程序員所做的最重要的事情是積極進行靜態代碼分析。比我預防的數百個嚴重的錯誤更有價值的是關於我查看軟件可靠性和代碼質量的方式的變化。
- 約翰·卡馬克(John Carmack),2011年
為了獲得成功的靜態分析項目,開發人員必須感到自己從中受益並喜歡使用它。
- 從Google建立靜態分析工具的經驗教訓
有關文檔和規則列表,請參見文檔。
$ python -m pip install dlint並仔細檢查是否正確安裝了它:
$ python -m flake8 -h
Usage: flake8 [options] file file ...
...
Installed plugins: dlint: 0.16.0, mccabe: 0.5.3, pycodestyle: 2.2.0, pyflakes: 1.3.0注意dlint: 0.16.0 。
DLINT在flake8上構建以執行其覆蓋。這提供了許多有用的功能,而無需重新發明輪子。
讓我們進行簡單的檢查:
$ cat << EOF > test.py
print("TEST1")
exec('print("TEST2")')
EOF $ python test.py
TEST1
TEST2$ python -m flake8 --select=DUO test.py
test.py:2:1: DUO105 use of " exec " is insecure/docs/linters/DUO105.md 。DUO ? DLINT最初是由二人實驗室團隊開發的。 --select=DUO旗告訴flake8僅運行DLINT LINT規則。
從這裡開始,我們可以輕鬆地根據Python代碼目錄運行DLINT:
$ python -m flake8 --select=DUO /path/to/code要微調您的覆蓋物,請查看flake8幫助:
$ python -m flake8 --helpDLINT結果也可以在您的編輯器中插入,以獲取快速反饋。這通常需要編輯插件或擴展程序。以下是常見編輯的一些起點:
DLINT可以很容易地集成到CI管道中,或者真正的任何東西。
有關更多信息和示例,請參見“如何將DLINT集成到XYZ中?”。
DLINT的自定義插件建立在簡單的命名約定上,並依靠Python模塊。要製作DLINT自定義插件,請使用以下約定:
dlint_plugin_開頭。Dlint開頭。dlint.linters.base.BaseLinter繼承。get_results函數並從ast.NodeVisitor繼承。有關更多詳細信息,請參見示例插件。
首先,安裝開發軟件包:
$ python -m pip install -r requirements.txt
$ python -m pip install -r requirements-dev.txt
$ python -m pip install -e . $ pytest$ flake8$ pytest --cov$ pytest -k test_benchmark_run --benchmark-py-file /path/to/file.py tests/test_benchmark/或單獨獲得襯裡的基準結果:
$ pytest -k test_benchmark_individual --benchmark-py-file /path/to/file.py tests/test_benchmark/或與單個襯裡競爭:
$ pytest -k test_benchmark_individual[DUO138-BadReCatastrophicUseLinter] --benchmark-py-file /path/to/file.py tests/test_benchmark/