Level 716 bài
Software Engineering với C
Viết mã người khác đọc được, kiểm thử được, phân tích được và an toàn.
Chương 56. Code Quality
Đặt tên, quy ước, module, xử lý lỗi, lập trình phòng vệ.
- 56.1Đặt tênTên là tài liệu đọc nhiều nhất trong dự án của bạn.24 phút
- 56.2Quy ước viết mãclang-format, EditorConfig, và những thứ không nên tranh cãi.26 phút
- 56.3Chia module và đóng góiMột module là một header, một tệp .c, và một trách nhiệm.28 phút
- 56.4Xử lý lỗiBốn chiến lược, và cách chọn một cái rồi giữ nó nhất quán.30 phút
- 56.5Lập trình phòng vệKiểm tra đầu vào, khẳng định, và ranh giới tin cậy.26 phút
Chương 57. Testing
Kiểm thử đơn vị, thiết kế ca kiểm thử, giả lập, độ phủ.
- 57.1Kiểm thử đơn vịMột khung kiểm thử nhỏ, và ba khung có sẵn nếu bạn muốn.28 phút
- 57.2Thiết kế ca kiểm thửGiá trị biên, lớp tương đương, và đường lỗi.28 phút
- 57.3Giả lập phụ thuộcBốn cách thay một phụ thuộc bằng bản giả trong C.28 phút
- 57.4Độ phủ và tích hợp liên tụcgcov, lcov, và một quy trình chạy mọi thứ tự động.26 phút
Chương 58. Static Analysis
Cảnh báo trình biên dịch, clang-tidy, cppcheck, quy trình.
Chương 59. Security trong C
Tràn bộ đệm, chuỗi định dạng, chèn lệnh, TOCTOU, fuzzing.
- 59.1Tràn bộ đệm và tràn ngăn xếpCách một chuỗi quá dài biến thành quyền điều khiển chương trình.30 phút
- 59.2Chuỗi định dạng và tràn sốprintf(s) là một lỗ hổng, và tràn số là cách vượt qua kiểm tra kích thước.28 phút
- 59.3Chèn lệnh, đường dẫn và TOCTOUBa lỗ hổng đến từ việc tin vào dữ liệu và tin vào thời gian.28 phút
- 59.4Checklist bảo mật và fuzzingMười hai mục phải kiểm, và cách để máy tự tìm lỗ hổng cho bạn.28 phút