2013-02-20 22 views
16

Chúng tôi muốn đo lường phạm vi mã cho hệ thống kiểm tra hồi quy tự động của riêng chúng tôi chạy trên một ứng dụng gốc khá lớn. Đây là một hệ thống thử nghiệm phức tạp, theo kịch bản sử dụng kịch bản sẵn có của ứng dụng của chúng tôi. Nó có hàng ngàn bài kiểm tra và sẽ không được thay thế bằng các bài kiểm tra đơn vị MSTest.Chúng ta có thể nhận được độ bao phủ mã C++ bản địa trong VS2012 hoặc VS2010 không có MSTest không?

Trong khi chúng tôi đang sử dụng VS2012 (Premium) vì IDE hiện tại, nó vẫn được biên dịch với các trình biên dịch VS2010 & thư viện. Điều đó có thể thay đổi sớm hơn nếu đó là điều kiện tiên quyết để bảo hiểm mã.

Chúng tôi có thể xây dựng riêng biệt cho việc này - công cụ không phải là vấn đề.

Tôi chỉ bối rối khi đọc tài liệu MS mà dường như tất cả bắt đầu từ một giả định bạn đang chạy kiểm tra đơn vị bằng cách sử dụng khuôn khổ thử nghiệm sẵn có của họ. Đó là khi tôi không đấu tranh để tìm những thứ thực sự nói về sự hỗ trợ bản địa cho ALM ngay từ đầu!

nhờ

công cụ bảo hiểm mã
+0

afaik điều này chỉ có thể với phiên bản cuối cùng (hoặc phiên bản VS đắt nhất được đặt tên) phiên bản studio trực quan. Chúng tôi cũng điều tra về điều này (để giết unix/jenkins xây dựng làm bảo hiểm mã) và bị mắc kẹt vào bìa unix – Najzero

+0

Cảm ơn. Chúng tôi có Premium được triển khai rộng rãi nhưng không phải Ultimate. –

+1

Bạn có thể làm như vậy với VS2012 khá dễ dàng bằng cách sử dụng công cụ dòng lệnh CodeCoverage. Kiểm tra xem bạn có trong "% ProgramFiles% \ Microsoft Visual Studio 11.0 \ Team Tools \ Công cụ bao phủ mã động hay không". Nó đòi hỏi .pdbs phải có mặt để thiết bị đo đạc xảy ra và tôi không chắc chắn nếu DIA sẽ duy trì khả năng tương thích ngược với năm 2010, vì vậy bạn có thể cần phải có ứng dụng được xây dựng với 2010. Mặc dù vậy, đáng giá. –

Trả lời

26

Visual Studio 2012 là hoàn toàn tách biệt với hệ thống thực hiện kiểm tra (tiết lộ đầy đủ: Tôi đã viết nó, nhưng nhóm nghiên cứu đó được thừa kế nó sau khi tôi rời Microsoft loại bỏ một số chức năng khá hữu ích). Nó được viết lại từ nền tảng trong VS 2012 thành công cụ tự động (x86 và x86-64) và mã được quản lý (.NET và Silverlight) khi nó tải vào quá trình thay vì sửa đổi các tệp thi hành trên đĩa.

Bạn có thể tìm CodeCoverage.exe trong "% ProgramFiles% \ Microsoft Visual Studio 11.0 \ Công cụ nhóm \ Công cụ bao phủ mã động".

Để thu thập dữ liệu:

CodeCoverage.exe collect /output:foo.coverage foo.exe foos_args 

Một tập tin cấu hình (có một mặc định một trong thư mục đó gọi là CodeCoverage.config) có thể được quy định để kiểm soát bộ sưu tập.

Để phân tích các dữ liệu bảo hiểm, bạn có thể mở foo.coverage trong Visual Studio 2012 hoặc sử dụng các công cụ bảo hiểm thân để làm phân tích:

CodeCoverage.exe analyze /output:results.xml foo.coverage 

Lưu ý: đối với thiết bị đo đạc diễn ra, các file .pdb phải được phát hiện cho các mô-đun của bạn. Vì bạn đang xây dựng với năm 2010, họ có thể không làm việc với DIA 2012 nên bạn có thể phải xây dựng lại với bộ công cụ của năm 2012. Nếu bạn không nhìn thấy các mô-đun bạn mong đợi trong phân tích bảo hiểm, hãy chuyển /include_skipped_modules đến lệnh phân tích; sẽ có thuộc tính "lý do" cho bạn biết lý do mô-đun bị bỏ qua (bị loại trừ, không có thông tin gỡ lỗi, v.v.).

Chỉnh sửa: Ngoài ra, không giống như các phiên bản trước của Visual Studio, định dạng tệp bảo hiểm của năm 2012 hoàn toàn độc lập. Các mô đun và .pdbs không cần phải có mặt tại thời điểm phân tích.

4

Tôi nhận thấy đây là một bài đăng cũ, nhưng tôi tin câu trả lời vẫn có liên quan.

Với tất cả những thứ mà tôi đã từng sử dụng trong C#, tôi không thực sự thích những gì tôi thấy khi tôi chuyển sang Visual C++. Ngoài ra, giống như bạn các MSTests chỉ làm việc một phần cho tôi; Tôi cũng đã từng có các ứng dụng thử nghiệm của riêng mình.

Về cơ bản những gì tôi muốn là như sau:

  • kiểm tra Run MS hoặc một tập tin EXE
  • mã số bảo hiểm Nhận ngay trong Visual Studio.

Sau khi thực hiện một số nghiên cứu, tôi nhận thấy VS Enterprise hỗ trợ tính năng này ngay hôm nay với bộ điều hợp thử nghiệm.

Nếu bạn không ở trên VSE, tôi nhận thấy có một số công cụ khác, mỗi công cụ cung cấp cho người dùng một giao diện người dùng độc lập. Cá nhân tôi không thích điều đó; Tôi muốn bảo hiểm của tôi ngay trong Visual Studio, tốt nhất là trong phiên bản Cộng đồng Visual Studio.

Vì vậy, tôi quyết định xây dựng addin này bản thân mình và - trong khi nó không phải là tinh vi như VSE - nó hiện các trick cho tôi.

  • Tôi đã viết công cụ bao gồm mã VSIX trên https://github.com/atlaste/CPPCoverage. Về cơ bản nó quản lý làm nổi bật trong Visual Studio, tạo ra một báo cáo có thể nhấp và tích hợp trong trình khám phá giải pháp.
  • Đối với các phép đo phạm vi, tôi đã từng sử dụng https://opencppcoverage.codeplex.com/. Về cơ bản, nó cho phép bạn thực hiện các bài kiểm tra bảo hiểm mã trên bất kỳ tệp thực thi có thể gỡ lỗi (gốc) nào. Ngày nay, tôi đang sử dụng các công cụ đo lường mã riêng của mình (cũng được mở nguồn ở trên).
+0

Đây là một addon tuyệt vời. Tôi đang sử dụng điều này với một dự án cmocka c, hoạt động tuyệt vời. – pogorman

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