
DLINT adalah alat untuk mendorong praktik pengkodean terbaik dan membantu memastikan kode Python aman.
Hal terpenting yang telah saya lakukan sebagai programmer dalam beberapa tahun terakhir adalah secara agresif mengejar analisis kode statis. Bahkan lebih berharga daripada ratusan bug serius yang telah saya cegah dengan itu adalah perubahan dalam pola pikir tentang cara saya melihat keandalan perangkat lunak dan kualitas kode.
- John Carmack, 2011
Agar proyek analisis statis berhasil, pengembang harus merasa mereka mendapat manfaat dan menikmati menggunakannya.
- Pelajaran dari membangun alat analisis statis di google
Untuk dokumentasi dan daftar aturan, lihat dokumen.
$ python -m pip install dlintDan periksa kembali apakah itu diinstal dengan benar:
$ 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 Perhatikan dlint: 0.16.0 .
Dlint membangun di flake8 untuk melakukan serat. Ini menyediakan banyak fitur yang berguna tanpa menemukan kembali roda.
Ayo jalankan cek sederhana:
$ 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 awalnya dikembangkan oleh tim duo Labs. Bendera --select=DUO memberitahu flake8 untuk hanya menjalankan aturan DLINT LINT.
Dari sini, kita dapat dengan mudah menjalankan DLINT terhadap direktori kode Python:
$ python -m flake8 --select=DUO /path/to/code Untuk menyempurnakan serat Anda, lihat Bantuan flake8 :
$ python -m flake8 --helpHasil DLINT juga dapat dimasukkan sebaris dalam editor Anda untuk umpan balik cepat. Ini biasanya membutuhkan plugin atau ekstensi editor. Berikut adalah beberapa titik awal untuk editor umum:
Dlint dapat dengan mudah diintegrasikan ke dalam jaringan pipa CI, atau apa pun.
Untuk informasi dan contoh lebih lanjut, lihat 'Bagaimana cara mengintegrasikan DLINT ke dalam XYZ?'.
Plugin khusus DLINT dibangun di atas konvensi penamaan sederhana, dan mengandalkan modul Python. Untuk membuat plugin kustom DLint, gunakan konvensi berikut:
dlint_plugin_ .Dlint .dlint.linters.base.BaseLinter .get_results dengan tepat dan mewarisi dari ast.NodeVisitor .Lihat contoh plugin untuk detail lebih lanjut.
Pertama, pasang paket pengembangan:
$ 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/Atau dapatkan hasil benchmark untuk linter secara individual:
$ pytest -k test_benchmark_individual --benchmark-py-file /path/to/file.py tests/test_benchmark/Atau berlari melawan satu linter:
$ pytest -k test_benchmark_individual[DUO138-BadReCatastrophicUseLinter] --benchmark-py-file /path/to/file.py tests/test_benchmark/