Một công cụ miễn phí để kiểm tra mã nguồn C / C ++ dựa trên bộ tiêu chuẩn mã hóa? [đóng cửa]


151

Có vẻ khá dễ dàng để tìm một công cụ như vậy cho Java ( Checkstyle , JCSC ), nhưng dường như tôi không thể tìm thấy một công cụ nào cho C / C ++. Tôi không tìm kiếm một bộ phân tích mã tĩnh giống như lint, tôi chỉ muốn kiểm tra các tiêu chuẩn mã hóa như đặt tên biến, viết hoa, giãn dòng, nhận dạng, đặt khung, v.v.


3
Nếu bạn không tìm thấy câu trả lời mình muốn ở đây, hãy xem xét câu hỏi này: stackoverflow.com/q/10819398/120163
Ira Baxter

Câu trả lời:


57

Công cụ duy nhất tôi biết là Vera . Mặc dù vậy, chúng tôi không sử dụng nó, vì vậy không thể nhận xét mức độ khả thi của nó. Demo có vẻ đầy hứa hẹn.


Tôi đã thử nó, và nó khá đơn giản. Nhưng nó đã có tác dụng!
Jader Dias

7
Tôi đã thử nó nhưng thất vọng. Nó đã mã hóa mã C ++ nhưng chỉ có một loại mã thông báo duy nhất cho "mã định danh", do đó, nó không phân biệt giữa tên lớp, biến thành viên và biến cục bộ. Do đó, không có cách nào tôi có thể tìm thấy để thực thi các quy ước đặt tên khác nhau cho các loại định danh khác nhau.
John W

Vera không có bộ quy tắc rất toàn diện - nhưng chúng có thể mở rộng (theo TCL)
fmuecke

2
"Mở rộng" chỉ cho các nhiệm vụ rất đơn giản. Do sự hiểu biết về C ++ của Vera còn nông cạn, nên bất kỳ "kiểm tra kiểu sâu" nào (xem xét một quy tắc [Tôi không gợi ý tốt] có thể: đối với mỗi phân bổ, sẽ có một thỏa thuận tương ứng trong cùng một chức năng) sẽ phải mã hóa kiến ​​thức C ++ phù hợp, và điều đó thực sự rất khó, điều đó có nghĩa là nó sẽ không xảy ra.
Ira Baxter

Đã sửa lỗi liên kết đến Vera: bitbucket.org/verateam/vera
congusbongus

49

4
+1. Điều này là rất tốt đẹp - mặc dù nó có một phong cách rất nghiêm ngặt. Không dễ dàng để mở rộng với các quy tắc riêng như với vera ++.
fmuecke

Thật tuyệt nếu bạn đang sử dụng phong cách C ++ của Google :) +1
jkp

3
Tôi giả sử đây là cái gọi là cpplint. Nó có thể được tìm thấy tại github.com/google/styleguide/tree/gh-pages/cpplint , liên kết ở trên với c ++ lint bị hỏng.
Zitrax

Chỉ để tham khảo, để cài đặt, bạn có thể sử dụng "pip install cpplint". Sau đó, bạn chỉ có thể sử dụng "cpplint file.cpp" hoặc "cpplint --recursive." thay vì "./cpplint.py", IMO thích hợp hơn nhiều. Dễ dàng hơn tải xuống thông qua github ít nhất
Colin D


8

Tôi chắc chắn rằng điều này có thể giúp một số trình kiểm tra cxx độ . Ngoài ra công cụ này có vẻ khá tốt KWStyle Đó là từ Kitware, những người phát triển Cmake.


1
cxxchecker dường như rất chết đối với tôi bây giờ.
stefanct

kiểm tra cxx là một liên kết chết.
Sói

7

Không chính xác những gì bạn yêu cầu, nhưng tôi thấy dễ dàng hơn khi tất cả đồng ý về một tiêu chuẩn mã hóa astyle có thể tạo ra và sau đó tự động hóa quy trình.


1
Tốt hơn hết, bạn nên làm rõ rằng ArtisticStyle chỉ tập trung vào định dạng , tất nhiên đó không phải là điều xấu :)
Wolf

6

Hãy thử nsiqcppstyle . Đó là trình kiểm tra kiểu mã hóa dựa trên Python cho C / C ++. Thật dễ dàng để mở rộng để thêm các quy tắc của riêng bạn.



2

Tôi đã sử dụng một công cụ trong công việc của mình bộ công cụ LDRA

Nó được sử dụng để kiểm tra mã c / c ++ nhưng nó cũng có thể kiểm tra các tiêu chuẩn mã hóa như MISRA, v.v.


1
Tại sao điều này xuống modded? Ngay cả khi LDRA cũng là một máy phân tích tĩnh - điều mà câu hỏi không tìm kiếm - tôi tin rằng nó cũng có khả năng kiểm tra mã xem có vi phạm tiêu chuẩn mã hóa hay không.
Vitor Py

4
LDRA có giá khoảng bằng chiếc xe trung bình của bạn ... không phải ý tưởng miễn phí của tôi.
Lundin

2

Kiểm tra universalindentguitrên sourceforge.net .

nó có nhiều trình kiểm tra kiểu cho C và bạn có thể tùy chỉnh trình kiểm tra.


UniversalIndentGUI Nó có chức năng xem trước trực tiếp, có thể xuất cấu hình và xuất tập lệnh. Thật tuyệt vời khi thử các "thụt lề" khác nhau, chẳng hạn như GNU Indent, Artistic Style và Uncrustify.
congusbongus

1

cppcheck cũng được Hudson hỗ trợ thông qua plugin cùng tên.


4
cppcheck là một công cụ phân tích tĩnh và không phải là câu hỏi đang tìm kiếm.
Vitor Py

Có lẽ điều này đã thay đổi kể từ năm 2010: Hôm nay Cppcheck cũng bao gồm các cảnh báo cho các vấn đề về phong cách. Nhưng, tốt, OP loại trừ rõ ràng các máy phân tích mã tĩnh.
Sói



-1

Tôi hiện đang làm việc trên một dự án với một dự án khác để viết một công cụ như vậy. Tôi đã xem xét các công cụ phân tích mã tĩnh khác và quyết định rằng tôi có thể làm tốt hơn.

Thật không may, dự án vẫn chưa sẵn sàng để được sử dụng mà không có kiến ​​thức khá mật thiết về mã ( đọc: nó có lỗi như tất cả địa ngục ). Tuy nhiên, chúng tôi đang di chuyển khá nhanh và hy vọng sẽ có bản beta trong vòng 8 tuần tới.

Dự án là nguồn mở - bạn có thể truy cập trang dự án và nếu bạn muốn tham gia, chúng tôi sẽ thích một số đầu vào bên ngoài hơn.

Tôi sẽ không làm bạn nhàm chán với các chi tiết - bạn có thể truy cập trang dự án để biết điều đó, nhưng tôi sẽ nói một điều: Hầu hết các công cụ phân tích mã tĩnh đều nhằm kiểm tra mã của bạn để tìm lỗi và không quan tâm lắm đến việc kiểm tra hướng dẫn mã hóa. Chúng tôi đã thực hiện một cách tiếp cận linh hoạt hơn cho phép chúng tôi viết các plugin để kiểm tra cả "quy tắc nội bộ" cũng như các lỗi có thể xảy ra.

Nếu bạn muốn biết thêm thông tin, xin vui lòng liên hệ với tôi.

Chúc mừng


4
Cam kết cuối cùng là vào tháng 6 năm 2009. Nó dường như không còn được phát triển.
Eponymous
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.