clang-tidy v. -Weffc++
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Không có dữ liệu ngôn ngữ
- Star
- 110
- Fork
- 17
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
## Context
Recent versions of clang-tidy added `readability-redundant-member-init`: https://clang.llvm.org/extra/clang-tidy/checks/readability-redundant-member-init.html
This is handy! When a class member has a default initializer it is redundent to initialize it in the member list.
But, because some types don't have default initializers, forgetting to initialize them in the member list (or using [c++11 initialization in the class definition](https://arne-mertz.de/2015/08/new-c-features-default-initializers-for-member-variables/)) can lead to serious trouble like mapbox/wagyu#69 - refs mapbox/wagyu#70.
So, this is the reason, at https://github.com/mapbox/cpp/issues/37#issuecomment-336200744, that we recommend using g++ and the `-Weffc++` flag because it can catch this (note, clang++ plus `-Weffc++` cannot):
> -Weffc++ - useful when building with g++ (does not do much with clang++). With g++ it can catch uninitialized class members and prevent crashes like mapbox/wagyu#69 - refs mapbox/wagyu#70
## Problem
- `-Weffc++` will warn on all class members not explicitly initialized in the initializer list
- `clang-tidy` will automatically remove variables from the initializer list that have default constructors
So, the two will fight: causing each other warnings. For this reason I think we should likely:
- let clang-tidy win
- recommend no longer using g++ with `-Weffc++`
- figure out what alternative way we can catch when members, without default initializers, are uninitialized (without needing to use `-Weffc++`). Maybe another `clang-tidy` check?
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu với tài liệu về clang-tidy's readability-redundant-member-init và các cuộc thảo luận được liên kết mapbox/cpp#37, wagyu#69 và wagyu#70; không có tệp hoặc bài kiểm thử nào trong repository được xác định. Xác định một cách tiếp cận đã được thống nhất cho -Weffc++, hướng dẫn về clang-tidy và việc phát hiện các member chưa được khởi tạo; công việc được xem là hoàn thành khi có khuyến nghị và cấu hình được ghi lại.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- cpp
- Lĩnh vực
- tooling
- Loại issue
- Tính năng
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 30/100