คำถามติดแท็ก pylint

ตัววิเคราะห์ซอร์สโค้ด Python กำลังมองหาจุดบกพร่องและสัญญาณคุณภาพต่ำ

2
PyLint, PyChecker หรือ PyFlakes? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันต้องการรับความคิดเห็นเกี่ยวกับเครื่องมือเหล่านี้ใน: มี; การปรับตัว; ใช้งานง่ายและเรียนรู้โค้ง

12
ฉันจะปิดคำเตือน Pylint ได้อย่างไร
ฉันกำลังพยายามปิดการใช้งานคำเตือน C0321 ("คำสั่งมากกว่าหนึ่งคำสั่งในบรรทัดเดียว" - ฉันมักจะใส่ifคำสั่งที่มีผลลัพธ์บรรทัดเดียวสั้น ๆ ในบรรทัดเดียวกัน) ใน Pylint 0.21.1 (ถ้ามันสำคัญ: astng 0.20 1, 0.50.3 ทั่วไป, Python 2.6.6 (r266: 84292, 15 กันยายน 2010, 16:22:56)) ฉันได้ลองเพิ่มdisable=C0321ในไฟล์การกำหนดค่า Pylint แต่ Pylint ยืนยันในการรายงานต่อไป การเปลี่ยนแปลงในบรรทัดนั้น (เช่นdisable=0321หรือdisable=C321) ถูกตั้งค่าสถานะเป็นข้อผิดพลาดดังนั้น Pylint จึงจดจำตัวเลือกได้อย่างถูกต้องมันเป็นเพียงการเพิกเฉย นี่เป็นข้อผิดพลาด Pylint หรือฉันกำลังทำอะไรผิดหรือเปล่า? มีวิธีแก้ไขไหม? ฉันอยากกำจัดเสียงนี้บ้าง
267 python  pylint 

4
ทำไมการใช้ len (SEQUENCE) ในสภาพที่มีการพิจารณาว่าไม่ถูกต้องโดย Pylint
พิจารณาตัวอย่างโค้ดนี้: from os import walk files = [] for (dirpath, _, filenames) in walk(mydir): # more code that modifies files if len(files) == 0: # <-- C1801 return None ฉันตื่นตระหนกโดย Pylint กับข้อความนี้เกี่ยวกับบรรทัดที่มีคำสั่ง if: [pylint] C1801: อย่าใช้len(SEQUENCE)เป็นค่าเงื่อนไข กฎ C1801 ในแวบแรกไม่ฟังดูสมเหตุสมผลสำหรับฉันและคำจำกัดความของคู่มืออ้างอิงไม่ได้อธิบายว่าทำไมถึงเป็นปัญหา ในความเป็นจริงมันอย่างจริงจังเรียกมันใช้ไม่ถูกต้อง len-as-condition (C1801) : ห้ามใช้len(SEQUENCE)เป็นค่าเงื่อนไขใช้เมื่อ Pylint ตรวจพบการใช้ len (ลำดับ) ที่ไม่ถูกต้องภายในเงื่อนไข ความพยายามในการค้นหาของฉันก็ล้มเหลวเช่นกัน …

22
ข้อผิดพลาด PyLint“ ไม่สามารถนำเข้า” ได้ - จะตั้ง PYTHONPATH ได้อย่างไร?
ฉันใช้ PyLint จากด้านใน Wing IDE บน Windows ฉันมีไดเรกทอรีย่อย (แพ็คเกจ) ในโครงการของฉันและภายในแพ็คเกจฉันนำเข้าโมดูลจากระดับบนสุดเช่น __init__.py myapp.py one.py subdir\ __init__.py two.py ข้างในtwo.pyฉันมีimport oneและสิ่งนี้ทำงานได้ดีที่รันไทม์เนื่องจากไดเรกทอรีระดับบนสุด (ซึ่งmyapp.pyรัน) อยู่ในเส้นทาง Python อย่างไรก็ตามเมื่อฉันรัน PyLint บน two.py มันทำให้ฉันมีข้อผิดพลาด: F0401: Unable to import 'one' ฉันจะแก้ไขสิ่งนี้ได้อย่างไร

22
ฉันจะทำให้ PyLint จดจำสมาชิกที่เป็นสมาชิกได้อย่างไร
ฉันกำลังใช้ PyLint ในโครงการ Python PyLint สร้างข้อร้องเรียนมากมายเกี่ยวกับการไม่สามารถหาสมาชิกที่มีจำนวนมาก ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไรในขณะที่หลีกเลี่ยงการตรวจสอบการเป็นสมาชิก จากรหัส: import numpy as np print np.zeros([1, 4]) ซึ่งเมื่อฉันวิ่งฉันจะได้รับสิ่งที่คาดหวัง: [[0. 0. 0. 0. ]] อย่างไรก็ตาม pylint ให้ข้อผิดพลาดนี้กับฉัน: E: 3, 6: โมดูล 'numpy' ไม่มีสมาชิก 'ศูนย์' (ไม่มีสมาชิก) สำหรับรุ่นฉันใช้ pylint 1.0.0 (astroid 1.0.1, 0.60.0 ทั่วไป) และพยายามทำงานกับ numpy 1.8.0
163 python  numpy  pylint 

3
ข้อความ PyLint: การบันทึกการจัดรูปแบบการแก้ไข
สำหรับรหัสต่อไปนี้: logger.debug('message: {}'.format('test')) pylint สร้างคำเตือนต่อไปนี้: การบันทึก - รูปแบบ - การแก้ไข (W1202): ใช้การจัดรูปแบบ% ในฟังก์ชั่นการบันทึกและส่งผ่านพารามิเตอร์% เป็นอาร์กิวเมนต์ที่ใช้เมื่อคำสั่งการบันทึกมีรูปแบบการโทรเป็น "การบันทึก (format_string.format (format_args ... ))" การเรียกดังกล่าวควรใช้การจัดรูปแบบ% แทน แต่ปล่อยให้การแก้ไขไปยังฟังก์ชันการบันทึกโดยส่งพารามิเตอร์เป็นอาร์กิวเมนต์ ฉันรู้ว่าฉันสามารถปิดคำเตือนนี้ได้ แต่ฉันต้องการที่จะเข้าใจ ฉันถือว่าการใช้format()เป็นวิธีที่เหมาะสมในการพิมพ์คำสั่งใน Python 3 ทำไมจึงไม่เป็นความจริงสำหรับคำสั่ง logger?

4
เป็นไปได้หรือไม่ที่จะละเว้นบรรทัดเดียวที่มี pylint?
ฉันมีบรรทัดต่อไปนี้ในส่วนหัวของฉัน: import config.logging_settings นี่เป็นการเปลี่ยนการตั้งค่าการบันทึกของหลาม แต่ pylint คิดว่าเป็นการอิมพอร์ตที่ไม่ได้ใช้ ฉันไม่ต้องการลบunused-importคำเตือนโดยทั่วไปดังนั้นจึงเป็นไปได้ไหมที่จะละเว้นบรรทัดนี้ ฉันไม่รังเกียจที่จะมี.pylintrcโครงการนี้ดังนั้นคำตอบที่เปลี่ยนไฟล์ config จะได้รับการยอมรับ มิเช่นนั้นสิ่งนี้จะได้รับการชื่นชม: import config.logging_settings # pylint: disable-this-line-in-some-way
150 python  pylint 

12
ใช้ Pylint กับ Django
ฉันอยากจะรวมpylintเข้ากับกระบวนการสร้างสำหรับโครงการ python ของฉัน แต่ฉันได้ใช้ในการแสดงครั้งเดียว: หนึ่งในประเภทข้อผิดพลาดที่ฉันพบว่ามีประโยชน์มาก -: - E1101: *%s %r has no %r member*รายงานข้อผิดพลาดเมื่อใช้เขตข้อมูล django ทั่วไป , ตัวอย่างเช่น: E1101:125:get_user_tags: Class 'Tag' has no 'objects' member ซึ่งเกิดจากรหัสนี้: def get_user_tags(username): """ Gets all the tags that username has used. Returns a query set. """ return Tag.objects.filter( ## This line triggers the error. …

30
Pylint ข้อผิดพลาด "การนำเข้าที่ไม่ได้รับการแก้ไข" ใน Visual Studio Code
ฉันใช้การตั้งค่าต่อไปนี้ macOS v10.14 (โมฮาวี) Python 3.7.1 Visual Studio รหัส 1.30 ไพลินท์ 2.2.2 Django 2.1.4 ฉันต้องการใช้ผ้าสำลีเพื่อทำให้ชีวิตของฉันง่ายขึ้นใน Visual Studio Code อย่างไรก็ตามสำหรับการนำเข้าทุกครั้งฉันมีสถานะ "การนำเข้าที่ไม่ได้รับการแก้ไข" แม้ในการนำเข้า Django เริ่มต้น (เช่นจากโมเดลการนำเข้า django.db) ฉันคิดว่าเป็นเพราะไม่เห็นไฟล์ Python สภาพแวดล้อมเสมือน ทุกอย่างทำงานได้ดี แต่มันเริ่มน่ารำคาญ ตัวเลือกล่ามที่ฉันมีคือ Python เวอร์ชันระบบทั้งหมด ดูเหมือนว่าจะไม่เห็น Python สภาพแวดล้อมเสมือนของฉันเลย (ไม่ได้อยู่ในไดเร็กทอรีเดียวกับพื้นที่ทำงานของฉันดังนั้นส่วนนั้นจึงสมเหตุสมผล) ถ้าฉันตั้งค่าpython.PythonPathในไฟล์settings.jsonมันจะละเว้นมันและไม่แสดงพา ธ สภาพแวดล้อมเสมือนของฉันเป็นตัวเลือก ฉันลองตั้งค่าในการตั้งค่า Python ส่วนกลางแล้ว แต่ก็ไม่ปรากฏขึ้นด้วย มีการแก้ไขอย่างรวดเร็วเพื่อให้ใช้งานได้หรือไม่?

2
ฉันจะสร้างไฟล์ pylintrc ได้อย่างไร
ฉันกำลังใช้งานลินุกซ์ ฉันสามารถทำสิ่งที่ชอบpylint --generate-rcfile > .pylintrcแล้วทำการเปลี่ยนแปลงกับ.pylintrcไฟล์ผลลัพธ์เพื่อแทนที่การตั้งค่าเริ่มต้นได้หรือไม่ และถ้าเป็นเช่นนั้นควรอยู่ใน~/ไดเรกทอรีของฉันหรือฉันควรใส่ไว้ใน. pylint.d
132 pylint 

4
ข้อความ“ วิธีการสาธารณะน้อยเกินไป” ของไพลินท์หมายความว่าอย่างไร
ฉันใช้ไพลินต์กับโค้ดบางโค้ดและได้รับข้อผิดพลาด "มีวิธีการสาธารณะน้อยเกินไป (0/2)" ข้อความนี้หมายความว่าอย่างไร เอกสาร pylintจะไม่เป็นประโยชน์: ใช้เมื่อชั้นเรียนมีวิธีการสาธารณะน้อยเกินไปดังนั้นอย่าลืมว่ามันคุ้มค่าจริงๆ
110 python  pylint 

5
เหตุใดไพลินท์จึงตั้งชื่อตัวแปรอักขระเดี่ยว
ฉันยังคงคุ้นเคยกับอนุสัญญา python และใช้pylintเพื่อทำให้โค้ดของฉันเป็น pythonic มากขึ้น แต่ฉันงงงวยกับความจริงที่ว่าไพลินท์ไม่ชอบชื่อตัวแปรอักขระเดี่ยว ฉันมีสองสามลูปดังนี้: for x in x_values: my_list.append(x) และเมื่อฉันเรียกใช้pylintฉันได้รับInvalid name "x" for type variable (should match [a-z_][a-z0-9_]{2,30}- นั่นแสดงให้เห็นว่าชื่อตัวแปรที่ถูกต้องต้องมีความยาวระหว่าง 3 ถึง 31 อักขระ แต่ฉันได้ดูหลักเกณฑ์การตั้งชื่อ PEP8แล้วและฉันไม่เห็นอะไรที่ชัดเจนเกี่ยวกับตัวอักษรตัวพิมพ์เล็กตัวเดียว และฉันเห็นตัวอย่างมากมายที่ใช้มัน มีบางอย่างที่ฉันขาดหายไปใน PEP8 หรือเป็นมาตรฐานเฉพาะสำหรับไพลินท์?

11
ฉันจะปิดการใช้งานคำเตือน“ Missing docstring” ที่ระดับไฟล์ใน Pylint ได้อย่างไร
Pylint แสดงข้อผิดพลาดที่บางไฟล์ไม่มี docstrings ฉันพยายามเพิ่ม docstrings ให้กับแต่ละคลาสวิธีการและฟังก์ชัน แต่ดูเหมือนว่า Pylint ยังตรวจสอบว่าไฟล์ควรเป็น docstring ที่จุดเริ่มต้น ฉันสามารถปิดการใช้งานนี้ได้หรือไม่? ฉันต้องการได้รับแจ้งว่า docstring หายไปในคลาสฟังก์ชันหรือวิธีการ แต่ไม่ควรบังคับให้ไฟล์มี docstring (มักพบศัพท์เฉพาะทางกฎหมายที่จุดเริ่มต้นของไฟล์ต้นฉบับที่เป็นกรรมสิทธิ์หรือไม่มีตัวอย่างไหมฉันไม่รู้ว่าการโพสต์คำถามที่ไม่สำคัญแยกจากกันเป็นเรื่องปกติหรือไม่)
94 python  pylint 

5
Pylint ปิดการใช้งานคำเตือนทั้งหมดสำหรับไฟล์
เรากำลังใช้ไพลินท์ภายในระบบสร้างของเรา เรามีแพคเกจ python ภายในฐานรหัสของเราที่มีรหัสทิ้งและฉันต้องการปิดการใช้งานคำเตือนทั้งหมดสำหรับโมดูลชั่วคราวเพื่อที่ฉันจะได้หยุดบั๊ก devs อื่น ๆ ด้วยข้อความที่ไม่จำเป็นเหล่านี้ มีวิธีง่ายๆในการpylint: disableเตือนทั้งหมดสำหรับโมดูลหรือไม่?
90 python  pylint 

2
ทำไมไพลินถึงส่งคืน `unsubscriptable-object` สำหรับ numpy.ndarray.shape?
ฉันเพิ่งรวบรวมกรณีการทำซ้ำ "ขั้นต่ำ" ต่อไปนี้ (ขั้นต่ำในเครื่องหมายคำพูดเพราะฉันต้องการให้แน่ใจว่าจะpylintไม่มีข้อผิดพลาดคำเตือนคำแนะนำหรือข้อเสนอแนะอื่น ๆ - รวมถึงความหมายของแผ่นสำเร็จรูป): pylint_error.py : """ Docstring """ import numpy as np def main(): """ Main entrypoint """ test = np.array([1]) print(test.shape[0]) if __name__ == "__main__": main() เมื่อฉันใช้pylintรหัสนี้ ( pylint pylint_error.py) ฉันจะได้ผลลัพธ์ต่อไปนี้: $> pylint pylint_error.py ************* Module pylint_error pylint_error.py:13:10: E1136: Value 'test.shape' is unsubscriptable (unsubscriptable-object) ------------------------------------------------------------------ …
9 python  numpy  pylint 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.