2010-04-04 32 views
7

Tôi đang tìm một tập lệnh/công cụ có thể được tùy chỉnh để kiểm tra và thực thi các quy ước đặt tên/mã hóa trên mã C/C++.Kiểm tra mã hóa và quy ước đặt tên của mã C/C++

Nó nên kiểm tra ví dụ:

  • dòng Mã được gói tại một số chiều dài.
  • Biến riêng có tiền tố _
  • Mã được thụt lề đúng cách.
  • Tất cả các chức năng đều được ghi lại.

Nhiều dự án mà tôi đang làm việc được khách hàng thuê ngoài có xu hướng có các quy ước đặt tên và mã hóa nội bộ khác nhau.

+4

Bạn chắc chắn không muốn biến bất kỳ để bắt đầu với '_', quy tắc cho sử dụng' _' trong tên là phức tạp , bởi vì một số tốt được dành riêng cho các trình biên dịch trình biên dịch, v.v ... –

+3

@Matthieu: Chỉ các tên bắt đầu bằng hai dấu gạch dưới, hoặc dấu gạch dưới và một chữ hoa được đặt trước. Vì vậy, miễn là tất cả các biến riêng của mình bắt đầu bằng dấu gạch dưới và một chữ cái thường (hoặc dấu gạch dưới và một số), thì không sao cả. –

+2

@Matthieu: Biến thành viên tiền tố với '_' là một quy ước khá phổ biến và không có tính chất. Các số nhận dạng bắt đầu bằng '_' chỉ được đặt trong không gian tên chung. Xem ví dụ http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=/com.ibm.xlcpp8l.doc/language/ref/ident.htm –

Trả lời

2

Công cụ GNU indent có thể thực hiện một số điều bạn đang yêu cầu. Không chắc chắn nếu nó có thể kiểm tra tài liệu, nhưng phần còn lại nghe có thể thực hiện được

+0

Tôi thích thụt lề GNU, nhưng nó không kiểm tra mã hóa và quy ước đặt tên. –

3

Không biết nếu nó thực sự đáng giá thời gian, nhưng nếu bạn thực sự muốn, bạn có thể thử xây dựng một cái gì đó tương tự như google's cpplint, kiểm tra của họ style guide . Cá nhân tôi nghĩ rằng đánh giá toàn diện và cam kết của mọi người tuân theo một số quy ước nhất định là cách tốt hơn để đảm bảo mã của bạn được "thụt lề đúng cách" và các biến được đặt tên nhất quán. Có thể đầu tư vào việc tạo một tài liệu như google đã làm, mô tả chi tiết về phong cách chấp nhận được, và có người trong công ty của bạn chấp nhận nó và gắn bó với nó.

Tại sao con người lại tốt hơn kịch bản? Câu trả lời khá đơn giản: mọi người sẽ phải đối phó với mã sau, họ nên quan tâm về nội dung họ đang viết. Một tên biến như i sẽ ổn cho một tập lệnh, nhưng sẽ không bị trượt khỏi mắt tôi, nếu nó là clientCount, nó chỉ nên được đặt tên phù hợp, kịch bản có thể làm điều đó có thể chiếm lĩnh thế giới khá sớm. :)

+0

Cảm ơn bạn đã chia sẻ điều này. –

+0

Dường như cpplint không kiểm tra các quy ước đặt tên và biến lớp? – cxwangyi

3

Universal Indent bao gồm toàn bộ rất nhiều công cụ chú ý trong giao diện đẹp. Nếu bất cứ điều gì phù hợp với bạn nó có khả năng bao gồm. (Here là danh sách tính năng) Tất cả các hệ điều hành chính đều được hỗ trợ.

Ngoài ra còn có các công cụ khác kiểm tra những thứ khác:

lint để bảo mật và những thứ khác.

Đối với chương trình Qt bạn có thể sử dụng Krazy. Đó là một chút rắc rối để tìm kiếm, tải xuống và làm cho nó đi, vì nó được ẩn trong chiều sâu của cây nguồn KDE (đảm bảo chất lượng thư mục phụ ... một nơi nào đó). Nhưng một khi làm việc thì nó rất tuyệt. Nó kiểm tra tất cả các loại công cụ dễ thương. Giống như các tiêu đề Qt chưa được sử dụng. Sử dụng chuỗi không hợp lệ. Thiếu các trạng thái tr() cho các chuỗi hiển thị của người dùng, các cấu trúc lặp lạ, dấu chấm chấm.

Điều không cần phải nói là tất cả các công cụ được đề cập đều có thể tùy chỉnh.

1

Về cơ bản, những gì người khác đã nói. Nhưng tôi có thể chỉ ra rằng:

  • Tất cả các chức năng đều được ghi lại.

thực sự không thể được kiểm tra bởi một công cụ - nó đòi hỏi mắt người và sự hiểu biết. Tôi nghi ngờ chúng tôi đã nhìn thấy tất cả những thứ như thế này:

//------------------------------------------------------------- 
// Name: foo 
// Purpose: 
// Returns: integer 
//------------------------------------------------------------- 

Nói cách khác, soạn sẵn "tài liệu" mà nói với bạn ít hơn không có gì. Loại điều này chỉ có thể được loại trừ bằng cách đánh giá mã.

0

Nếu bạn có nhiều tiền, bạn nên xem Klocwork. Nó có khả năng kiểm tra mã nguồn cho các nguyên tắc về phong cách sau đây. Tôi đã sử dụng nó ở các cửa hàng khác nhau. A công việc để thiết lập và duy trì, nhưng rất mạnh mẽ.

0

Tôi sử dụng Hiểu 4 C++ được thực hiện bởi scitools. Nó đi kèm với một perl và C api. Tuy nhiên tôi đã viết một API được quản lý cho nó. Công cụ này cho phép bạn quét mã nguồn của mình và phân tích nó như sự phản chiếu đối với mã gốc. Nó hoạt động thực sự độc đáo trong việc cho phép bạn có được tên của các biến của bạn, các lớp học vv ... Cá nhân tôi đã viết hàng chục công cụ phân tích tĩnh tại nơi làm việc bằng cách sử dụng API này. Nó sẽ là một vấn đề dễ dàng để thực thi tất cả các loại tiêu chuẩn mã hóa bằng cách sử dụng công cụ này. Đặc biệt là tiêu chuẩn tên biến.

Các liên kết cho sản phẩm: http://www.scitools.com/ và wrapper quản lý của tôi: http://understandapi.codeplex.com/

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