Chúng tôi có các sinh viên gửi bài tập trong khóa học trong khi họ phải tuân thủ một số quy ước về mã. Ví dụ: tên hàm phải ở trong camelCase. Độ dài chức năng không được vượt quá 50 dòng (Các nhiệm vụ đủ đơn giản để phân chia), v.v. Tôi đang tìm một công cụ có thể tự động kiểm tra xem C/C++ (Cả hai đều cần thiết). Đó là, tôi muốn công cụ để khiếu nại khi một cái gì đó là sai để học sinh có thể sửa chữa nó. Cho đến nay tôi đã không thể tìm thấy một cái gì đó phù hợp tốt. Nếu điều đó là nguồn mở và có thể dễ dàng được cấu hình theo nhu cầu của chúng tôi sẽ là o.k.Công cụ tự động kiểm tra quy ước mã cho C/C++
Trả lời
Bạn có thể sử dụng công cụ unix indent
để buộc một số kiểu mã hóa C.
Xem
man 1 indent
khi nó được cài đặt.
và chạy kết quả thông qua một khác biệt với bản gốc ... –
Thụt lề không thể "ép buộc" số dòng tối đa của hàm và bất kỳ quy tắc nào liên quan đến ngắt dòng sẽ phá hủy đầu ra khác ... – log0
AFAIK hình ảnh studio cao cấp và cuối cùng có các công cụ phân tích và thử nghiệm tùy chọn nâng cao như vậy. nhưng những người không được tự do :(
Doxygen sản xuất đầu ra XML đó sẽ rất dễ dàng để xử lý ... Vâng, ít nhất là dễ dàng như tìm ranh giới từ trong định danh bao giờ là.
Bạn có thể sử dụng gọn gàng trong debug chế độ, với một chút các script shell/perl
Về cơ bản, ý tưởng là để chạy gọn gàng và cung cấp đầu ra trong một tệp .txt khác, sau đó có thể được phân tích cú pháp để chỉ cung cấp các đầu ra lỗi và bạn có thể lấy các dòng mã gốc và chạy DIFF :-)
Có thể yêu cầu một chút mã hóa và tập lệnh để có quyền. Chúng tôi đã sử dụng một cái gì đó tương tự, nhưng đối với một dự án hoàn toàn khác và mục tiêu.
Nếu không, bạn có thể thử và sử dụng các:
http://gcgreatcode.sourceforge.net/
http://universalindent.sourceforge.net/
Nó có thể giúp đỡ phần nào với vấn đề này, với một chút mã hóa để có được kiểm tra tự động cụ thể của bạn.
Một trong những công cụ này, với tối thiểu là tùy biến, sẽ thực hiện công việc:
trình xác minh và phân tích công cụ cho C++: https://bitbucket.org/verateam/vera/wiki/Home
Google C++ kiểm tra định mức: http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py
EPITA Đại học Norm Checker (dự án sinh viên): http://code.google.com/p/norme-checker/source/browse/
Hơi phụ thuộc vào mức độ chi tiết và sự cần thiết đầu tư (hoặc thời gian tự mình làm hoặc trả tiền cho ai đó), bạn có thể muốn xem clang: Đây là C, C++ và Object-C co mpiler bằng văn bản C++ cho thấy cấu trúc dữ liệu nội bộ của nó. Tôi đã sử dụng một plug-in để kiểm tra mã cho các sai lầm khác nhau, chủ yếu là nhỏ hơn, những thứ nitpicking, mặc dù. Kể từ khi trình biên dịch cho thấy một AST nó đã được, ví dụ, tầm thường để nhổ ra cảnh báo khi C-phong cách phôi được tìm thấy (nó có thể nhận được một chút ồn ào trên mã C).
Mặc dù tôi chưa sử dụng, nhưng clang cũng có thể phát ra một biểu diễn XML về cấu trúc dữ liệu nội bộ của nó. Nếu bạn không cần đặt câu hỏi như "là lớp A
lớp cơ sở có thể truy cập công khai của B
" (tức làcác câu hỏi không tầm thường đòi hỏi phải kiểm tra ngữ nghĩa của AST), đây có thể là một con đường dễ dàng hơn cho một công cụ mà bạn mô tả. Trên thực tế, trong cả hai trường hợp, bạn có thể giúp sinh viên thực hiện kiểm tra: nếu bạn có đủ sinh viên và chỉ định cùng một kiểm tra nhiều lần để đảm bảo bạn quay lại ít nhất một lần triển khai tốt, bạn có thể thu thập một bộ sưu tập gọn gàng khá nhanh. ... và nếu sinh viên của bạn là bất cứ điều gì giống như tôi (tốt, tôi không thực sự muốn bạn số phận khủng khiếp như thế này) họ thậm chí sẽ thích tập thể dục.
Một điều, tuy nhiên: không dấu bất kỳ C++ lập trình viên xuống cho không sử dụng CamelCase! HereIsASimpleAndImpressiveExampleOfWhyUseOfCamelCaseIsReallyBad: you_have_a_much_easier_time_to_read_this! Lập trình viên C++ có xu hướng làm điều đúng. Do đó, các ưu đãi ngớ ngẩn như CamelCase và Ký hiệu Hungary là không sử dụng.
QA-CPP có thể trợ giúp tại đây. Đã hơn một năm kể từ khi tôi sử dụng nó nhưng bạn có thể cấu hình nó để làm điều đó.
Bạn có thể muốn cung cấp cho những người ở Lập trình nghiên cứu một cuộc gọi và kiểm tra xem bạn có thể làm điều đó không.
Tuy nhiên câu hỏi vẫn là lý do tại sao? Nếu giảng viên của tôi bắt đầu mắng tôi với phong cách mã trên chức năng tôi sẽ nghĩ rằng ông đã có một ốc vít lỏng lẻo. Là một người đã trải qua hệ thống trường đại học, bạn nên chuẩn bị cho họ làm việc trong thế giới thực - thiên đường biết những thứ tôi nhìn thấy qua bây giờ để lại rất nhiều điều mong muốn.
Theo kinh nghiệm của tôi, trong thế giới thực, bạn phải tuân theo các tiêu chuẩn mã hóa. – dangerousdave
Anh ấy không ở trong thế giới thực, anh ấy làm việc trong một trường đại học. –
Có EditorConfig, có vẻ như đây là công cụ để thực thi các tiêu chuẩn mã hóa trên nhiều trình chỉnh sửa khác nhau. Hỗ trợ và chức năng bị hạn chế, nhưng đó là một ý tưởng khá hay. http://editorconfig.org/
- 1. Công cụ kiểm tra mã bảo mật tự động cho Ruby
- 2. Công ước tự động
- 3. Công cụ chất lượng mã tự động cho Ruby?
- 4. Xcode và kiểm tra quy ước mã số
- 5. Công cụ kiểm tra chấp nhận tự động Flex
- 6. Kiểm tra tĩnh cho các quy ước khung
- 7. Vb6 UI Công cụ kiểm tra tự động?
- 8. Làm cách nào để kiểm tra mã PHP đối với một tập hợp quy ước mã hóa cụ thể?
- 9. Kiểm tra mã hóa và quy ước đặt tên của mã C/C++
- 10. Công cụ để tự động tạo các bài kiểm tra đơn vị cho C++?
- 11. Công cụ kiểm tra tự động hóa cho ứng dụng Oracle Forms?
- 12. Công cụ để định dạng mã với quy ước mã hóa Java Sun
- 13. quy ước mã python sử dụng pylint
- 14. Công cụ để tự động kiểm tra kiểu chuỗi ký tự theo PEP257
- 15. Một công cụ để kiểm tra mã IL dễ dàng
- 16. Công cụ kiểm tra XUL
- 17. ASP.net MVC RTM Kiểm tra quy ước đặt tên
- 18. Tự động kiểm tra các công cụ và/hoặc kỹ thuật của VBA?
- 19. Http công cụ kiểm tra tải cho URL biến
- 20. Kiểm tra tự động hóa cho Internet Explorer
- 21. Công cụ phân tích mã cho Android
- 22. Công cụ kiểm tra trực tuyến MySQL
- 23. Công cụ kiểm tra hiệu suất cho ứng dụng iPhone
- 24. Công cụ Bảo hiểm Mã cho PHP
- 25. Công cụ kiểm tra thâm nhập
- 26. Công cụ phủ sóng kiểm tra Clojure?
- 27. Công cụ hồi quy CSS?
- 28. Tự động kiểm tra đơn vị Mã số
- 29. Công cụ biên tập mã cho Perl
- 30. Công cụ Bảo hiểm Mã cho Scala
Bạn không có khả năng tìm một công cụ để thực thi các tên hàm camelCase trong mã C++, vì kiểu chi phối là lowercase_with_underscores, với một số lượng đáng kể các deviants thích PascalCasing. Hy vọng tốt nhất của bạn là một cái gì đó cấu hình. –
Tại sao bạn muốn làm điều đó tự động? Bạn ít nhất có thể đọc và sửa bài tập về nhà theo cách thủ công, đó là công việc của bạn. Bạn không thể định lượng phong cách. Bạn có thể định lượng sự tuân thủ, nhưng đó là một cái gì đó hoàn toàn khác. – wildplasser
Chúng tôi đang định lượng sự tuân thủ. Chúng tôi muốn làm điều đó tự động để khi một sinh viên có một sai lầm về một trong những vấn đề đó, ông có thể nhận được một email tự động để sửa chữa nó và để lại thời gian của người kiểm tra cho doanh nghiệp nghiêm trọng hơn. – Shiroko