Tôi đã thử sử dụng Flexelint (phiên bản unix của PC-Lint) và có kết quả hơi hỗn hợp. Điều này có thể là do tôi đang làm việc trên một cơ sở mã rất lớn và có nhiều nút. Tôi khuyên bạn nên kiểm tra cẩn thận từng tệp được báo cáo là không sử dụng.
Lo lắng chính là dương tính giả. Nhiều bao gồm cùng một tiêu đề được báo cáo là một tiêu đề không cần thiết. Điều này thật tệ vì Flexelint không cho bạn biết dòng tiêu đề được bao gồm trên hoặc nơi nó được bao gồm trước đó.
Một trong những cách mà các công cụ tự động có thể hiểu sai:
Trong A.hpp:
class A {
// ...
};
Trong B.hpp:
#include "A.hpp
class B {
public:
A foo;
};
Trong C.cpp:
#include "C.hpp"
#include "B.hpp" // <-- Unneeded, but lint reports it as needed
#include "A.hpp" // <-- Needed, but lint reports it as unneeded
Nếu bạn mù quáng theo dõi các tin nhắn từ Flexelint, bạn sẽ làm hỏng # phụ thuộc của bạn. Có nhiều trường hợp bệnh lý hơn, nhưng về cơ bản, bạn sẽ cần phải tự kiểm tra các tiêu đề để có kết quả tốt nhất.
Tôi đánh giá cao bài viết này về Cấu trúc vật lý và C ++ từ blog Trò chơi từ bên trong. Họ đề xuất một cách tiếp cận toàn diện để dọn dẹp mớ hỗn độn #incoide:
Hướng dẫn
Đây là một bộ hướng dẫn được chắt lọc từ cuốn sách của Lakos nhằm giảm thiểu số lượng phụ thuộc vật lý giữa các tệp. Tôi đã sử dụng chúng trong nhiều năm và tôi luôn thực sự hài lòng với kết quả.
- Mỗi tệp cpp bao gồm tệp tiêu đề của riêng nó đầu tiên. [bắn tỉa]
- Một tệp tiêu đề phải bao gồm tất cả các tệp tiêu đề cần thiết để phân tích nó. [bắn tỉa]
- Một tệp tiêu đề nên có số lượng tệp tiêu đề tối thiểu cần thiết để phân tích nó. [bắn tỉa]