2012-02-11 34 views
18

Tôi có một lượng lớn mã python cần phải có kiểu/định dạng tương thích pep8 được áp đặt trên đó. Có nhiều biến thể của pep8 mà các quy tắc khác nhau (như this one by a coworker), nhưng điều khó nhất là xử lý việc tách các dòng quá dài và định dạng mã đã sửa đổi.Trình định dạng nguồn python có lập trình

Tôi đã nhìn lên những câu hỏi về vấn đề này:

  1. python-formatter-tool
  2. python-source-formatter-pretty-printer

Chúng được từ năm 2009 và 2010. Tôi hy vọng rằng công cụ tốt hơn đã được phát triển từ đó.

Tôi biết về PythonTidy khá tốt nhưng làm cho nhiều mã tồi tệ hơn, IMHO. Pylint phát hiện lỗi định dạng nhưng không sửa chúng. Các dịch vụ web không thực sự phù hợp với yêu cầu của tôi bởi vì tôi muốn một công cụ có thể là một phần của một bản dựng.

Có ai có đề xuất chưa được đề cập không? Cảm ơn.

+0

Và nó không phải là chương trình, có lẽ là. – hughdbrown

+2

Đối với việc bỏ phiếu để đóng, sẽ rất hữu ích khi biết tại sao hai câu hỏi trước đó về các công cụ định dạng python không có phiếu bầu nào nhưng nỗ lực này lại có tác dụng. – hughdbrown

Trả lời

1

Google yapf hoạt động rất tốt.

Có một bản demo trực tuyến tại đây: yapf.now.sh

Bạn có thể tích hợp nó vào công việc của bạn và chạy nó khi bạn lưu tập tin trong soạn thảo của bạn hoặc là một git precommit treo hoặc một cái gì đó như thế.

+1

Dừng đồng hồ. Chúng ta có một người chiến thắng. Đây là điều gần nhất với những gì tôi muốn. Và chỉ mất sáu năm để có được câu trả lời! – hughdbrown

7

Một số khác mà trông khá tốt: autopep8

Nhưng lưu ý rằng một cách mù quáng làm theo tất cả các quy ước trong PEP8 là không thực sự theo tinh thần PEP8. Từ chính PEP8:

Nhưng quan trọng nhất: biết khi nào không nhất quán - đôi khi chỉ dẫn kiểu không áp dụng.

+0

Tôi cần phải nhận xét trước đó rằng tôi có một cái gì đó mà đề với một số lỗi pep8 nhưng không có gì thông minh xử lý các dòng quá dài, dẫn tôi tin rằng một giải pháp tổng quát hơn, một trình định dạng mã, là bắt buộc. – hughdbrown

2

PyCharm có chức năng này được xây dựng trong và bây giờ có một miễn phí, mã nguồn mở phiên bản cộng đồng. Mở tệp của bạn và nhấn CtrlAltL.

Unifortunately, nó cũng sẽ không tự động refactor tên chức năng và tên biến để PEP8 ước ... những người sẽ phải được thực hiện từng người một với chức năng đổi tên của PyCharm.

Các vấn đề liên quan