Welcome to StackEdit! Hey! I’m your first Markdown document in StackEdit 1 . Don’t delete me, I’m very helpful! I can be recovered anyway in the Utils tab of the Settings dialog. Documents StackEdit stores your documents in your browser, which means all your documents are automatically saved locally and are accessible offline! Note: StackEdit is accessible offline after the application has been loaded for the first time. Your local documents are not shared between different browsers or computers. Clearing your browser’s data may delete all your local documents! Make sure your documents are synchronized with Google Drive or Dropbox (check out the Synchronization section). Create a document The document panel is accessible using the button in the navigation bar. You can create a new document by clicking New document in the document panel. Switch to another document All your local documents are listed in the document panel. You can switch from one to anoth...
Sau khi hoàn thành source code, trong test phase, có thể chúng ta cần kiểm tra tập test case của chúng ta có coverage tất cả các trường hợp có thể xảy ra hay không, hành động này gọi là test code coverage.
Có nhiều tool miễn phí cũng như có phí để thực hiện việc này, nhưng đơn giản nhất là sử dụng công cụ gcov đi kèm trong trình biên dịch gcc.
Để đọc chi tiết hơn về gcov, bạn có thể vào http://gcc.gnu.org/onlinedocs/gcc/Gcov.html#Gcov, hoặc tìm kiếm với Google.
Sử dụng gcov khá đơn giản, giả sử ta có 3 file a.c, b.c và c.c.
Truy cập vào thư mục chứa 3 files này, gõ:
gcc -fprofile-arcs -ftest-coverage a.c b.c c.c
Mặc định gcc sẽ tạo ra file a.out trong thư mục hiện thời, cùng với 3 file a.gcno, b.gcno và c.gcno.
Sau đó bạn chạy file a.out với các parameter cần thiết, sẽ tạo ra thêm 3 file a.gcda, b.gcda và c.gcda.
Sau đó, giả sử cần phân tích file b.c, chúng ta gõ:
gcov b.c
Có hai tham số thường dùng là -b và -f:
-b: thêm thông tin về branch trong code.
-f: thêm thông tin về hàm.
Thông tin tóm tắt sẽ được xuất ra standard output (có thể chuyển hướng output).
Thông tin chi tiết được ghi trong file b.c.gcov.
File b.c.gcov sẽ có dạng:
23: 56: a = 3; //dòng thứ 56 được thực thi 23 lần.
-: 34: { // dòng thứ 23 không được thực hiện
####: 87: } // dòng thứ 87 không được thực hiện
Còn có nhiều thông tin khác bạn có thể tham khảo thêm.
Note: có thể viết shell script để thực hiện tự động với nhiều test case.
gcov tự động ghi thêm thông tin mà không xóa thông tin cũ nếu file a.out được thực hiện nhiều lần.
Ví dụ, nếu a.out chạy 100 lần thì thông tin cuối cùng được ghi vào a.c.gcov, b.c.gcov, v.v... là thông tin tổng hợp của 100 lần chạy.
Có nhiều tool miễn phí cũng như có phí để thực hiện việc này, nhưng đơn giản nhất là sử dụng công cụ gcov đi kèm trong trình biên dịch gcc.
Để đọc chi tiết hơn về gcov, bạn có thể vào http://gcc.gnu.org/onlinedocs/gcc/Gcov.html#Gcov, hoặc tìm kiếm với Google.
Sử dụng gcov khá đơn giản, giả sử ta có 3 file a.c, b.c và c.c.
Truy cập vào thư mục chứa 3 files này, gõ:
gcc -fprofile-arcs -ftest-coverage a.c b.c c.c
Mặc định gcc sẽ tạo ra file a.out trong thư mục hiện thời, cùng với 3 file a.gcno, b.gcno và c.gcno.
Sau đó bạn chạy file a.out với các parameter cần thiết, sẽ tạo ra thêm 3 file a.gcda, b.gcda và c.gcda.
Sau đó, giả sử cần phân tích file b.c, chúng ta gõ:
gcov b.c
Có hai tham số thường dùng là -b và -f:
-b: thêm thông tin về branch trong code.
-f: thêm thông tin về hàm.
Thông tin tóm tắt sẽ được xuất ra standard output (có thể chuyển hướng output).
Thông tin chi tiết được ghi trong file b.c.gcov.
File b.c.gcov sẽ có dạng:
23: 56: a = 3; //dòng thứ 56 được thực thi 23 lần.
-: 34: { // dòng thứ 23 không được thực hiện
####: 87: } // dòng thứ 87 không được thực hiện
Còn có nhiều thông tin khác bạn có thể tham khảo thêm.
Note: có thể viết shell script để thực hiện tự động với nhiều test case.
gcov tự động ghi thêm thông tin mà không xóa thông tin cũ nếu file a.out được thực hiện nhiều lần.
Ví dụ, nếu a.out chạy 100 lần thì thông tin cuối cùng được ghi vào a.c.gcov, b.c.gcov, v.v... là thông tin tổng hợp của 100 lần chạy.
Comments