Có một bài kiểm tra tuân thủ cho trình biên dịch C ++ không? [đóng cửa]


21

Có, ở đâu đó, một tập lệnh, tập tin nguồn, hoặc bất cứ thứ gì có thể sử dụng tự do, có thể đo lường mức độ tuân thủ của trình biên dịch C ++ đã cho không?

Ví dụ: thử nghiệm Acid3 cho trình duyệt: http://acid3.acidtests.org/

Kết quả tôi mơ ước sẽ là một ghi chú phần trăm toàn cầu (hoặc nhiều ghi chú, một ghi chú cho mỗi tiêu chuẩn, ví dụ: c ++ 98, c ++ 11, c ++ 14, v.v.), và sau đó kiểm tra chi tiết với "thành công" hoặc "thất bại" cho mỗi người trong số họ.

Bối cảnh: Tôi đã có một cuộc thảo luận tại nơi làm việc về boost và một số trình biên dịch bị thách thức. Người đối thoại của tôi đã nói về việc boost là một dự án học thuật, bởi vì nó sẽ không hoạt động trong các trình biên dịch C ++ chính và tôi trả lời rằng các trình biên dịch bị thách thức về mặt tinh thần không nên tính. Có thể đo lường bằng mã sự phù hợp thực tế của trình biên dịch sẽ giúp cả hai trong việc đánh giá trình biên dịch và khám phá "các trường hợp góc" cần tránh trong mã đa nền tảng được biên dịch cùng với chúng.

Chỉnh sửa: 2013-06-22

Không phải là một câu trả lời, nhưng rõ ràng, ủy ban C ++ đang làm việc về chủ đề này:

SG10, Kiểm tra tính năng: Clark Nelson (Intel). Nghiên cứu xem liệu và cách chuẩn hóa một cách cho mã di động để kiểm tra xem một sản phẩm C ++ cụ thể có thực hiện một tính năng chưa, khi chúng tôi tiếp tục mở rộng tiêu chuẩn.

Nguồn: http://isocpp.org/std/the-committee


Có cái này: peren.com/pages/products_set.htm . Sẽ không thử trả lời, vì tôi chưa sử dụng nó và tôi không chắc về tình trạng của nó trong cộng đồng C ++.
yannis

1
Boost hoạt động trong các trình biên dịch C ++ chính. Có lẽ không phải là phiên bản cổ của các trình biên dịch đó, và có lẽ không phải là một trình biên dịch tương đối khó hiểu mà công ty bạn đang dựa vào, mà chỉ cần nhìn vào danh sách lớn các trình biên dịch được thử nghiệm trong ghi chú phát hành. Và đó chỉ là những người mà các anh chàng Boost tự thử nghiệm! Boost không có nghĩa là từ học thuật, và bạn không cần phải đánh giá trình biên dịch để loại bỏ tuyên bố đó.

4
Tôi suýt té ghế cười vì câu hỏi này .... Đó là một câu hỏi rất hợp lệ, tôi rất thích câu trả lời ở đây ..... Đó là năm 2013 - chắc chắn là một điều cơ bản như chuỗi công cụ của chúng tôi sử dụng TDD - hoặc đó là một trường hợp "Làm những gì tôi nói, không phải những gì tôi làm ......"
mattnz

6
Tại sao phiếu bầu chặt chẽ? Tôi tin rằng đây là một câu hỏi rất hợp lệ và có liên quan. Bằng chứng về việc tuân thủ các tiêu chuẩn là bắt buộc đối với hầu hết các công cụ được sử dụng bởi hầu hết các chuyên gia.
mattnz

1
Tôi nghĩ rằng đây là một trong những sai lầm ngớ ngẩn / thất bại lớn nhất của ủy ban C ++. Tôi ngạc nhiên rất nhiều người thực sự thông minh cứ lặp đi lặp lại những điều ngu ngốc như vậy.

Câu trả lời:


5

Một cách để kiểm tra sự tuân thủ của trình biên dịch C ++ đã cho là chạy testsuite (lớn), tức là một loạt các tệp C ++ kiểm tra tất cả các khía cạnh của ngôn ngữ.

Testuites nổi tiếng là các testuites gcc và llvm. Chúng kiểm tra tất cả các loại khía cạnh của trình biên dịch, rõ ràng bao gồm cả sự phù hợp. Tuy nhiên, thật khó để đánh giá sự phù hợp một cách cụ thể vì (theo hiểu biết tốt nhất của tôi) không có báo cáo đặc biệt nào được tạo ra về sự phù hợp.

Trong vương quốc này, bạn có:

  • các bài kiểm tra GCC C-torture được sử dụng để kiểm tra trình biên dịch gcc
  • testsuite LLVM: một hỗn hợp các thử nghiệm được định hướng cho trình biên dịch clang và phụ trợ llvm cộng với một bộ các ứng dụng chính thức để kiểm tra trình biên dịch.
  • kiểm tra libcxx LLVM (một phần của kho libcxx) để kiểm tra hỗ trợ C ++ 11.

Có một số thử nghiệm mở rộng để kiểm tra sự phù hợp của C / C ++. Than ôi đây là tất cả các giấy phép thương mại theo thứ tự 10k-40k.

  • SuperTest : Rộng nhất trong danh sách này. Khoảng 3 triệu thử nghiệm theo hướng đối với sự phù hợp của C99, C ++, EmbeddedC, DSP-C.
  • Hội trường mận . C và C ++, bao gồm thư viện C ++. Bao gồm sự phù hợp ANSI C, trình tạo chương trình ngẫu nhiên, tạo mẫu thử nghiệm và trình thông dịch kịch bản để kiểm soát quá trình thử nghiệm tổng thể.
  • Lâu năm . C và C ++.
  • Đá rỗng . C chỉ.

4

Điều gần nhất mà tôi biết là trong bối cảnh của một phiên bản tiêu chuẩn cụ thể . Tương tự, có những bài viết trên blog có chứa nội dung như thế. Tuy nhiên, tôi không biết về bộ phần mềm, bộ kiểm tra hoặc bộ kiểm tra thực tế quy định về các vấn đề như vậy. Ngay cả isocpp.org hiện tại dường như không có tài nguyên phù hợp. Gần nhất bạn có thể nhận được có lẽ là biểu đồ tuân thủ cụ thể của mỗi nhà cung cấp không phù hợp nhất.

ví dụ: Clang , GCC , MSVC , Intel

Thực sự chỉ có một vài trình biên dịch cạnh tranh (ít nhất là trong không gian x86 / x64 - tôi cho rằng đó cũng là trường hợp của các nền tảng ít phổ biến hơn), nhưng tôi đồng ý rằng sẽ rất tốt khi có một tài liệu tham khảo, đặc biệt là bây giờ tiêu chuẩn là đón tốc độ.


0

Tôi không biết về bất kỳ thử nghiệm tiêu chuẩn nào, mặc dù URL sau đây là trang web tiêu chuẩn chính thức comopee http://www.open-std.org/jtc1/sc22/wg21/ .

Ngoài ra, nhiều thứ được tìm thấy trong Boost chuyển sang chuẩn C ++. Theo Tiến sĩ Kenneth Sundberg của Đại học Bang Utah.

Tôi cũng không thể xác minh tính công nhận của nó, tôi vẫn đang cố gắng tìm hiểu xem nó có đáng tin hay không, nhưng Nhóm Google tại https://groups.google.com/forum/?fromgroups#!forum/comp.std .c ++ tuyên bố rằng không có thử nghiệm chính thức nào tồn tại.


Tiến sĩ Sundberg? Giống như trong Tiến sĩ Không hay Tiến sĩ Guttenberg?
ott--

4
@ott Không, như trong một bằng tiến sĩ. Khoa học máy tính.
Travis Pessetto
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.