Cara Mengecek Ada Ketikan Yang Error di Python
Sampai saat ini, kamu pasti sudah menuliskan banyak kode pemrograman Python, termasuk di antaranya kode yang mengalami kesalahan sintaksis atau indentasi. Bagaimana cara agar kamu bisa mencegah terjadinya kesalahan tersebut untuk kedepannya?
Editor yang kamu gunakan untuk menulis kode Python dapat mempermudah penulisan dengan fitur-fiturnya, seperti memformat kode sesuai dengan arahan gaya penulisan (style guide) PEP8 dan mengecek kemungkinan terjadinya kesalahan. Berikut ini adalah beberapa aplikasi yang dapat kamu gunakan untuk membantu mengecek kesalahan dan kesesuaian dengan PEP8, baik dengan memanggil perintah atau diintegrasikan ke editor kode yang kamu gunakan.
Lint
Lint adalah proses pengecekan kode untuk menemukan kemungkinan terjadinya kesalahan, termasuk pengecekan kesesuaian dengan arahan gaya penulisan kode (style guide) PEP8. Aplikasi yang digunakan untuk proses ini disebut linter. Menggunakan linter yang terintegrasi dengan editor kode akan membuat proses penulisan kode Python lebih efisien. Linter hanya menghasilkan output berupa teks singkat yang berisi keterangan dan kode Error atau Warning atau Kesalahan Konvensi Penamaan (Naming Conventions).
Lint atau linting dapat meminimalkan kesalahan pada kode kamu, misalnya kesalahan indentasi di Python. Sebelum interpreter Python mengeluarkan IndentationError pada kode kamu, lint akan memberi tahu kamu terlebih dahulu. Hal ini akan membantu kamu dalam menghindari kesalahan yang mungkin terjadi pada kode kamu.
Berikut ini akan dibahas 3 jenis aplikasi linter yang dapat kamu coba. Kamu tidak perlu menginstal atau mencoba semuanya, cukup pilih paket yang sesuai dengan kebutuhan kamu. Hasil keluaran dari masing-masing aplikasi mungkin mirip, tapi pada kondisi tertentu mungkin ada keluaran atau fitur yang sesuai dengan kebutuhan kamu saat menulis kode.
Pycodestyle (sebelumnya bernama pep8)
Pycodestyle adalah aplikasi open source yang bertujuan membantu mengecek kode sesuai dengan gaya penulisan kode yang ditentukan oleh konvensi PEP8. Aplikasi ini dilisensikan dengan MIT/Expat.
Kamu dapat menginstal pycodestyle dengan menggunakan manajer paket pip seperti ini: pip install pycodestyle.
Pylint
Pylint adalah aplikasi open source yang dilisensikan dengan GPL v2 yang dapat digunakan untuk menganalisis kode Python. Aplikasi ini dapat mengecek kode untuk menemukan kesalahan pemrograman, memastikan penulisan kode sesuai dengan standar, dan memberikan saran untuk refactoring sederhana. Pylint juga dapat memeriksa penulisan kode yang tidak baik.
Kamu dapat menginstal pylint dengan menggunakan manajer paket pip seperti ini: pip install pylint.
Flake8
Flake8 adalah aplikasi open source yang dilisensikan dengan MIT yang menggabungkan beberapa kemampuan dari aplikasi lain seperti pycodestyle, pyflakes, dan fitur lainnya. Aplikasi ini memudahkan penggunaan beberapa aplikasi linter sekaligus dengan hanya menggunakan satu perintah.
Kamu dapat menginstal flake8 dengan menggunakan manajer paket pip seperti ini: pip install flake8.
Berikut ini adalah contoh kode class sederhana yang akan diproses oleh lint. File kode ini disimpan dengan nama kal.py. Perhatikan baris 5, kolom 5, dan kolom 10 pada contoh kode di bawah ini. Baris-baris kode tersebut disisipkan dengan jeda untuk memudahkan pengecekan penomoran kolom.
Jika kode di atas diproses oleh pycodestyle, aplikasi tersebut akan mengeluarkan error E301 pada baris 5 kolom 5 dan error E112 pada baris 7 kolom 5. Kode ini mungkin tidak sesuai dengan standar penulisan kode yang ditentukan oleh PEP8.
pycodestyle kal.py
kal.py:5:5: E301 expected 1 blank line, found 0
kal.py:7:5: E112 expected an indented block
Jika kode di atas diproses oleh pylint, aplikasi tersebut akan mengeluarkan error E0001 pada baris 7 kolom 10. Error ini mungkin disebabkan oleh kesalahan pemrograman atau penulisan kode yang tidak sesuai dengan standar yang ditentukan.
pylint kal.py
************* Module kal
kal.py:7:10: E0001: invalid syntax (<unknown>, line 7) (syntax-error)
Jika kode di atas diproses oleh flake8, aplikasi tersebut akan mengeluarkan error E301 pada baris 5 kolom 5, error E112 pada baris 7 kolom 5, dan error E999 pada baris 7 kolom 10. Error E301 dan E112 merupakan kesalahan penulisan kode yang tidak sesuai dengan standar PEP8, sedangkan error E999 mungkin merupakan kesalahan pemrograman atau penulisan kode yang tidak sesuai dengan standar yang ditentukan.
flake8 kal.py
kal.py:5:5: E301 expected 1 blank line, found 0
kal.py:7:5: E112 expected an indented block
kal.py:7:10: E999 IndentationError: expected an indented block
Setelah kode di atas diperbaiki, maka kode tersebut diubah secara manual dengan mengetik ulang. Pembahasan selanjutnya mengenai memformat kode secara otomatis akan menangani masalah ini. Sebagai contoh, berikut ini adalah kode yang telah diperbaiki :
"""kalkulator"""
class Kalkulator:
"""kalkulator tambah kurang"""
def __init__(self, _i):
self.i = _i
def tambah(self, _i): return self.i + _i
def kurang(self, _i):
return self.i - _i
Setelah kode di atas diperbaiki, kemudian diproses kembali dengan pycodestyle dan flake8. Aplikasi linter tersebut tidak mengeluarkan pesan kesalahan lagi pada kode yang telah diperbaiki tersebut. Hal ini menunjukkan bahwa kode tersebut sudah sesuai dengan standar penulisan kode yang ditentukan oleh PEP8.
Jika kode di atas diproses kembali dengan pylint, aplikasi tersebut akan mengeluarkan peringatan tentang adanya lebih dari satu pernyataan (statement) dalam satu baris, serta kedua fungsi yang ada belum dilengkapi dengan dokumentasi. Hasilnya, pylint memberikan skor 5.71 dari 10 untuk kode tersebut. Peringatan tentang pernyataan dalam satu baris mungkin disebabkan oleh penulisan kode yang tidak sesuai dengan standar yang ditentukan, sedangkan peringatan tentang dokumentasi mungkin disebabkan oleh tidak adanya penjelasan tentang fungsi yang ditulis dalam kode.
Penutup
Penggunaan aplikasi linter dapat membantu kamu dalam menulis kode Python yang efisien dan sesuai dengan standar penulisan yang ditentukan oleh PEP8. Selain itu, linter juga dapat membantu menemukan kesalahan pemrograman sebelum kode tersebut dijalankan oleh interpreter. Ada beberapa aplikasi linter yang dapat kamu coba, seperti pycodestyle, pylint, dan flake8. Pilihlah aplikasi yang sesuai dengan kebutuhan kamu dan integrasikan dengan editor kode yang kamu gunakan untuk mempermudah proses penulisan kode Python.