Fxcop là công cụ phân tích mã nguồn được lập trình từ các ngôn ngữ lập trình .Net như C#, VB.net. Fxcop giúp hỗ trợ phát hiện các sai phạm hoặc các dư thừa trong mã nguồn như sai phạm về tiêu chuẩn, quy ước hoặc dư thừa mã nguồn khi khai báo biến nhưng không sử dụng.
Hình 2.1. Giao diện Fxcop
Giao diện Fxcop được chia làm ba vùng theo số được bôi đỏ ở hình 2.1. Vùng 1 chứa danh sách các tệp chương trình cần phân tích. Vùng 2 chứa thông tin cảnh báo của Fxcop sau khi phân tích tệp chương trình. Vùng 3 chứa các thông tin chi tiết cho tệp hoặc cảnh báo được chọn.
Việc tuân theo các tiêu chuẩn, quy ước khi lập trình là rất quan trọng do các tiêu chuẩn giúp lập trình viên chuyển giao kiến thức qua các dự án, dễ dàng cập nhật, sửa chữa, bảo trì cũng như tìm hiểu nhanh chóng mã nguồn trên một dự án mới. Bảng 2.1 sẽ minh họa rõ hơn một số quy ước về lập trình của Microsoft.
Bảng 2.1. Minh họa một số quy ước về lập trình của Microsoft.
STT Quy ước Minh họa 1 Với tên lớp và phương thức, cần viết hoa ký tự
đầu của mỗi từ. (kiểu Pascal)
PersonClass AddNewProduct
2 Với tên biến, viết hoa ký tự đầu từ thứ 2 trở đi. (kiểu Camel)
personName vehicleId
3 Sử dụng từ có ý nghĩa, không viết tắt Sai: add Đúng: address 4 Không sử dụng 1 ký tự để đặt tên biến, trừ
trường hợp biến index trong vòng lặp (biến i) 5 Không sử dụng chữ cái có thể lẫn với chữ số và
ngược lại.
0 và O 1 và l
Mã nguồn hình 2.2 sẽ minh họa rõ hơn về hoạt động của Fxcop. Đoạn mã gồm một hàm gọi hai hàm tính tổng hai số và thương hai số nguyên. Kết quả của mã nguồn sẽ được phân tích bằng Fxcop và thể hiện như trong hình 2.3.
static void Main() { int a, b; a = 2; b = 0; double d = ChiaHaiSo(a, b); }
public static int CongHaiSo(int a, int b) {
return a + b; }
public static int ChiaHaiSo(int a, int b) {
return a / b; }
Hình 2.3. Kết quả phân tích từ Fxcop
Trong hình 2.3, Fxcop đưa ra hai cảnh báo với đoạn chương trình ví dụ, đó là hàm “CongHaiSo” chưa được sử dụng và biến “d” được khai báo nhưng chỉ được gán chứ không được sử dụng. Tuy nhiên có thể thấy hai vấn đề khác trong đoạn mã trên, thứ nhất kết quả trả về của hàm “ChiaHaiSo” không phải là kiểu double, thứ hai là chương trình sẽ dính lỗi chia cho không nếu truyền biến “b” có giá trị 0. Từ ví dụ này có thể thấy Fxcop có khả năng cảnh báo dư thừa trong mã nguồn, định vị và đưa ra giải pháp khắc phục cảnh báo. Ngoài ra công cụ có thể xuất báo cáo và rất dễ sử dụng. Tuy nhiên công cụ vẫn chưa phát hiện được các lỗi tiềm ẩn và chỉ hỗ trợ kiểm tra các ngôn ngữ lập trình .Net.