2010-03-14 36 views
12

Tôi có một mã số được chạm vào bởi nhiều người. Mặc dù hầu hết mọi người cố gắng giữ mã được định dạng độc đáo (ví dụ như thụt đầu dòng và sử dụng dấu ngoặc nhọn), một số không, và thậm chí cả những người không thể làm điều đó vì tất cả chúng ta đều sử dụng các trình soạn thảo khác nhau, vì vậy các cài đặt như dấu cách các tab khác nhau.Có công cụ lint nào cho C và C++ để kiểm tra định dạng không?

Có công cụ lint tiêu chuẩn nào mà kiểm tra mã đó được định dạng đúng hay không thực sự thay đổi (như indent nhưng chỉ trả về lỗi và cảnh báo)?

Trong khi câu hỏi này có thể được trả lời chung, tập trung của tôi là về C và C++, bởi vì đó là những gì dự án này được viết bằng

+1

sao chép tệp, áp dụng thụt lề trên tệp, sau đó phân biệt hai tệp? – kennytm

+0

Tôi muốn làm điều này tự động như một phần của quá trình xây dựng. Tôi chỉ tự hỏi nếu có một cách tốt hơn. –

Trả lời

3

Nhân Linux dùng một công cụ thực hiện chính xác này -. Nó được gọi là checkpatch. Bạn sẽ phải sửa đổi nó để kiểm tra các tiêu chuẩn mã hóa của bạn chứ không phải của chúng, nhưng nó có thể là cơ sở tốt để làm việc. (Nó cũng được thiết kế cho mã C chứ không phải là C++).

+0

Đây có phải là một phần của bản phân phối Linux chuẩn không? –

+0

Không, nhưng nó chỉ là một kịch bản perl (có sẵn tại liên kết trong câu trả lời của tôi: http://www.kernel.org/pub/linux/kernel/people/apw/checkpatch/) – caf

1

Có một số chương trình có thể tự động định dạng cho bạn khi lưu (chẳng hạn như Eclipse). Bạn có thể có cài đặt định dạng mà mọi người có thể sử dụng đảm bảo cùng một định dạng.

Cũng có thể tự động áp dụng định dạng như vậy khi mã được cam kết. Khi bạn sử dụng SVN, hệ thống để thực hiện điều này được gọi là svn hooks. Điều này về cơ bản bắt đầu một chương trình để xử lý (hoặc kiểm tra và từ chối) định dạng khi một cam kết xảy ra.

This site giải thích cách bạn có thể tự tạo. Nhưng cũng có những người đã tồn tại để làm điều này.

+4

Lưu ý rằng đối với SVN, việc thay đổi tệp trong không được khuyên dùng móc trước: http://svnbook.red-bean.com/en/1.5/svn.reposadmin.create.html#svn.reposadmin.create.hooks – sbi

+1

Bạn nói đúng, tốt hơn là từ chối cam kết khi định dạng sai (nhưng chỉ hoạt động nếu tất cả định dạng được tự động) – Thirler

+2

Không nên sử dụng SVN ở tất cả (Linus Torvalds khuyến nghị git :) – Frank

7

Google sử dụng cpplint. Đây là số style guide của họ.

+3

Rất tệ khi cpplint của Google không được cấu hình dễ dàng. – dalle

1

Hãy xem Vera++, nó có một số rules đã có sẵn nhưng phần tốt đẹp là bạn có thể sửa đổi hoặc viết của riêng bạn.

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