Skip to content

ตรวจสอบคุณภาพโค้ด Python ด้วย Pylint

Pylint เป็นเครื่องมือหนึ่งใน Python ใช้สำหรับตรวจสอบคุณภาพและประสิทธิภาพของโค้ด Python ที่เขียน ว่ามีคุณภาพอยู่ในระดับใด โดยอ้างอิงตามหลัก PEP 8 ของ Python  ซึ่งเป็นหลักที่เกี่ยวข้องกับรูปแบบของ Python Code และมีการให้คะแนนการทำงานของโค้ด Python อีกด้วยครับ

เครื่องมือ Pylint นี้ รองรับทั้ง Python 2 และ Python 3 สามาติดตั้งได้ง่าย ๆ โดยใช้ pip ใช้คำสั่งต่อไปนี้

pip install pylint

การใช้งาน ทำได้ง่าย ๆ แค่ใช้คำสั่งบนคอมมาไลน์

pylint ไฟล์โค้ด.py

ตัวอย่างการตรวจสอบโค้ด Python ด้วย Pylint
ผมใช้โค้ดจากบทความ จัดการและประมวลผลรูปภาพกราฟิกใน Python ด้วย Pillow มาลองตรวจสอบคุณภาพโค้ดครับ
โค้ด 1.py

from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
img = Image.open("60_1.jpg") #ดึงรูปภาพเข้ามา
draw = ImageDraw.Draw(img)
#ดึงไฟล์ Font เข้ามาและกำหนดขนาด
font = ImageFont.truetype("CSPraKasFD.otf", 50)
#ใส่ข้อความ โดยมีรูปแบบการใช้งานดังนี้ draw.text((x, y),"Sample Text",(r,g,b))
draw.text((10, 10), "Hello!",font=font)
#บันทึกรูปภาพเป็น sample-out.jpg
img.save('sample-out.jpg')

ใช้คำสั่ง

pylint 1.py

ผลลัพธ์

D:งาน python3>pylint 1.py
No config file found, using default configuration
************* Module 1
C:  8, 0: Exactly one space required after comma
draw.text((10, 10), "Hello!",font=font)
                            ^ (bad-whitespace)
C: 11, 0: Final newline missing (missing-final-newline)
C:  1, 0: Invalid module name "1" (invalid-name)
C:  1, 0: Missing module docstring (missing-docstring)
C:  4, 0: Invalid constant name "img" (invalid-name)
C:  5, 0: Invalid constant name "draw" (invalid-name)
C:  7, 0: Invalid constant name "font" (invalid-name)


Report
======
9 statements analysed.

Statistics by type
------------------

+---------+-------+-----------+-----------+------------+---------+
|type     |number |old number |difference |%documented |%badname |
+=========+=======+===========+===========+============+=========+
|module   |1      |1          |=          |0.00        |100.00   |
+---------+-------+-----------+-----------+------------+---------+
|class    |0      |0          |=          |0           |0        |
+---------+-------+-----------+-----------+------------+---------+
|method   |0      |0          |=          |0           |0        |
+---------+-------+-----------+-----------+------------+---------+
|function |0      |0          |=          |0           |0        |
+---------+-------+-----------+-----------+------------+---------+



External dependencies
---------------------
::

    PIL
      -Image (1)
      -ImageDraw (1)
      -ImageFont (1)



Raw metrics
-----------

+----------+-------+------+---------+-----------+
|type      |number |%     |previous |difference |
+==========+=======+======+=========+===========+
|code      |9      |81.82 |11       |-2.00      |
+----------+-------+------+---------+-----------+
|docstring |0      |0.00  |0        |=          |
+----------+-------+------+---------+-----------+
|comment   |1      |9.09  |0        |+1.00      |
+----------+-------+------+---------+-----------+
|empty     |1      |9.09  |1        |=          |
+----------+-------+------+---------+-----------+



Duplication
-----------

+-------------------------+------+---------+-----------+
|                         |now   |previous |difference |
+=========================+======+=========+===========+
|nb duplicated lines      |0     |0        |=          |
+-------------------------+------+---------+-----------+
|percent duplicated lines |0.000 |0.000    |=          |
+-------------------------+------+---------+-----------+



Messages by category
--------------------

+-----------+-------+---------+-----------+
|type       |number |previous |difference |
+===========+=======+=========+===========+
|convention |7      |3        |+4.00      |
+-----------+-------+---------+-----------+
|refactor   |0      |0        |=          |
+-----------+-------+---------+-----------+
|warning    |0      |116      |-116.00    |
+-----------+-------+---------+-----------+
|error      |0      |0        |=          |
+-----------+-------+---------+-----------+



Messages
--------

+----------------------+------------+
|message id            |occurrences |
+======================+============+
|invalid-name          |4           |
+----------------------+------------+
|missing-final-newline |1           |
+----------------------+------------+
|missing-docstring     |1           |
+----------------------+------------+
|bad-whitespace        |1           |
+----------------------+------------+



Global evaluation
-----------------
Your code has been rated at 2.22/10 (previous run: -98.18/10, +100.40)

ถือว่าโค้ดที่ผมเขียน ถ้าต้องการประสิทธิภาพสูง ๆ ต้องนำไปปรับปรุงตามคำแนะนำของ Pylint ครับ

อ่านเอกสารการใช้งาน Pylint  ได้ที่ http://docs.pylint.org/
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

1 thought on “ตรวจสอบคุณภาพโค้ด Python ด้วย Pylint

  1. Pingback: ควบคุมคุณภาพโค้ด Python - Python 3

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *