Tôi làm việc trong một dự án C ++ tạo ra các cảnh báo. Hầu hết các cảnh báo xuất hiện sau khi mã được viết:
- Ban đầu dự án sử dụng Visual C ++ 8, sớm chuyển sang 9, nhưng có rất ít sự khác biệt trong các cảnh báo được tạo. Các cảnh báo được cố định hoặc im lặng, do đó không có cảnh báo nào sau đó.
- Sau đó, một mục tiêu 64 bit đã được thêm vào. Nó tạo ra một số lượng lớn các cảnh báo, chủ yếu là do sử dụng các loại cẩu thả (ví dụ
unsigned
so vớisize_t
). Không ai làm phiền, hoặc có thời gian, để sửa chúng một khi mã hoạt động đúng mục đích. - Sau đó, hỗ trợ cho các nền tảng khác sử dụng GCC (4.5 và 4.6, một số 4.4 ban đầu) đã được thêm vào. GCC kén chọn hơn nhiều, vì vậy nó tạo ra nhiều cảnh báo hơn. Một lần nữa không ai làm phiền, hoặc có thời gian, để sửa chúng. Điều này rất phức tạp bởi thực tế là GCC đã không có một pragma để im lặng cảnh báo bằng một đoạn mã cụ thể cho đến ngày 4.5, và theo tài liệu thì nó vẫn không phải là thứ người ta cần.
- Trong thời gian đó, một số cảnh báo không được chấp nhận đã xuất hiện.
Vì vậy, bây giờ chúng tôi có một dự án tạo ra hàng ngàn cảnh báo. Và tôi thậm chí không thể nói từ bao nhiêu nơi, vì .cpp
các tệp thậm chí được biên dịch nhiều lần bởi các trình biên dịch khác nhau và các cảnh báo trong các tiêu đề được in đi in lại.
Có một thực hành tốt nhất để làm sạch một cái gì đó như thế? Hoặc ít nhất một số kinh nghiệm tích cực đối phó với nó?