1. Trang chủ
  2. » Mẫu Slide

C coding convention

35 1,1K 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 35
Dung lượng 519,78 KB

Nội dung

C++ (đọc là C cộng cộng hay xiplusplus, IPA: siː pləs pləs) là một loại ngôn ngữ lập trình. Đây là một dạng ngôn ngữ đa mẫu hình tự do có kiểu tĩnh và hỗ trợ lập trình thủ tục, dữ liệu trừu trượng, lập trình hướng đối tượng, và lập trình đa hình.

C++ Coding Convention SVTH: Tiêu Mỹ Hồng – 51303297 Đoàn Thị Huyền Trang – 51303186 Khoa: Công Nghệ Thông Tin C++ Coding Convention I CHUẨN VIẾT CODE TRONG C++ Tổ chức chương trình Chuẩn tài liệu II CÁC LỖI THƯỜNG GẶP TRONG C++ III CÔNG CỤ KIỂM TRA TỰ ĐỘNG CODE CÓ VIẾT ĐÚNG CHUẨN HAY KHÔNG Giới thiệu công cụ hỗ trợ kiểm tra chuẩn viết Code – Cppcheck – C++ Mục đích sử dụng Cppcheck C++ Coding Convention I.Chuẩn viết code C++ C++ (đọc là "C cộng cộng" hay "xi-plus-plus", IPA: /siː pləs pləs/) là một loại ngôn  ngữ lập trình. Đây là một dạng ngôn ngữ đa mẫu hình tự do có kiểu tĩnh và hỗ  trợ lập trình thủ tục, dữ liệu trừu trượng, lập trình hướng đối tượng, và lập trình  đa hình.  C++ Coding Convention I.Chuẩn viết code C++ 1.Tổ chức chương trình  Môđun hóa chương trình: - Chương trình nên tách thành nhiều môđun, môđun nên thực công việc độc lập tốt Điều giúp dễ bảo dưỡng chương trình - Khi chuyển thông tin cho chương trình nên sử dụng tham số để tạo tính độc lâp dễ dàng kiểm soát giá trị chúng chương trình thi hành C++ Coding Convention  Định nghĩa cài đặt: - Định nghĩa cài đặt lớp phải chia thành nhiều file để dễ dàng tái sử dụng - Định nghĩa lớp lưu file header với mở rộng *.h Cài đặt thành viên lớp lưu file nguồn với mở rộng *.cpp - Mỗi file header lớp nên sử dụng định hướng #ifndef, #define, #endif để đảm bảo file header include lần C++ Coding Convention Chuẩn tài liệu  Chú thích: - Sử dụng // cho dòng thích Chỉ dùng /* */ để tạm thời vô hiệu hóa cho đoạn chương trình test debug - Mỗi file nguồn cpp h phải bắt đầu khối thích đủ để người đọc kết nối file chúng bị tách - Mỗi lớp hàm , phương thức phải có khối thích mô tả ngắn gọn lớp, hàm, phương thức - Có thể thích đoạn code bên hàm, nhiên nên thích đủ hiểu Quá nhiều thích thích thừa làm code trông rối C++ Coding Convention  Tên gọi - Sử dụng tên có nghĩa - Đặt tên cách quán - Tên project, form, component sinh môi trường lập trình - Tên biến tên hàm thường phải từ cụm từ - Không viết tắt trừ từ viết thông dụng HTML, coi từ viết tắt từ thông thường ( tên có dạng convertToHtml thay convertToHTML) C++ Coding Convention - Đặt tên cho namespace chữ in thường Vd: mynamespace - Tên biến danh từ bắt đầu kí tự in thường , từ bắt đầu kí tự in hoa Vd: audioSystem - Tên hàm thể chức : tiền tố thường sử dụng get/set, add/remove, create/destroy, start/stop, insert/delete - Tên class dùng chữ hoa tất chữ đầu từ, lại chữ thường Vd: GameBoard, C++ Coding Convention  Khoảng cách - Nên đặt khoảng cách sau dấu phẩy dấu chấm phẩy - Xung quanh toán tử VD: Method(int a, int b) x=a+b; for(int i = 0; i < n; i++) C++ Coding Convention Dấu ngoặc - Tuỳ theo chuẩn quy định - VD: chuẩn GNU: if (a[i] > a[i + 1]) { if(a[i] > a[i + 1]) { temp = a[i]; temp = a[i]; a[i] = a[i + 1]; a[i] = a[i + 1]; a[i + 1] = temp; a[i + 1] = temp; } } 10 46 For statement missing ( 47 For statement missing ) 48 For statement missing ; 49 ‘function’ cannot return Hàm có tên ‘function’ trả giá trị, a value thông thường ta khai báo hàm kiểu Void ‘function’ must be Hàm có tên ‘function’ phải khai báo declared with no tham số, xảy phần khai báo (prototype) parameters phần thân hàm không giống số tham số ‘function’ must be Tương tự lỗi declared with one parameter ‘function’ must be declared with two parameters Function call missing ) Gọi thực hàm thiếu ) 50 51 52 54 55 Function calls not supported Thiếu dấu (, ), ; câu lệnh For Không thể gọi hàm dạng này/kiểu 21 56 57 Function should return a Hàm cần phải trả giá trị, xảy ta khai báo value hàm có kiểu trả lại thiếu câu lệnh Return Goto statement missing Dùng lệnh Goto mà nhãn label 58 ‘identifier’ is not a member of struct Tên ‘identifier’ thành phần cấu trúc, xảy ta viết tên thành phần sai 59 ‘identifier’ is not a parameter Tên ‘identifier’ tham số 60 Identifier expected Thiếu tên biến 61 If statement missing ( Câu lệnh If thiếu mở hay đóng ngoặc 62 If statement missing ) 63 Illegal character Ký tự không hợp lệ, thường xảy ta biểu diễn ‘character’ (0x‘value’) số hệ hexa, lại sử dụng chữ khác A F hay a f 64 Illegal octal digit Không phải hệ hợp lệ 65 Illegal pointer subtraction Thực phép trừ không hợp lệ trỏ 22 66 67 68 69 70 71 72 Illegal use of floating point Illegal use of pointer Dùng dấu chấm động không đúng, ví dụ sử dụng phép toán modulo % số thực chẳng hạn Dùng trỏ không hợp lệ Implicit conversion of ‘type 1’ to ‘type 2’ not allow Không cho phép ngầm chuyển từ kiểu sang kiểu Improper use of typedef Kiểu liệu ‘identifier’ sử dụng không ‘identifier’ Incompatible type Không thể chuyển đổi kiểu liệu conversion Incorrect number format Không phải liệu dạng số, thường xảy ta gõ ký tự khác liệu kiểu số Incorrect use of default Dùng DEFAULT không 73 Invalid use of dot Dùng dấu chấm (.) không vị trí 74 Lvalue required 75 main must have a return type of int Vế trái phép gán phải tên biến Lỗi xảy ta gán giá trị cho Hàm main phải trả giá trị kiểu int 23 76 Misplaced break 77 Misplaced continue Dùng break vòng lặp SWITCH Dùng continue vòng lặp 78 Misplaced decimal point Dấu chấm thập phân sai vị trí 79 Misplaced else Dùng else sai vị trí (thiếu if, ) 80 81 ‘new’ and ‘delete’ not supported No: following the ? Không phép dùng new delete cấp phát vùng nhớ động Toán tử điều kiện thiếu dấu chấm (:) 82 No file name ending Không có phần kết thúc tên tập tin 83 No file name given Không có tên tập tin 84 No type information Không tìm thấy thông tin kiểu liệu 85 Not an allowed type Kiểu liệu không cho phép dùng 86 Numeric constant too large Hằng số có giá trị lớn 24 87 Pointer to structure required on left side of -> or -> * Xảy dùng trỏ cấu trúc không cách để truy xuất thành phần cấu trúc 88 sizeof may not be applied to a bit field sizeof may not be applied to a function Size of ‘identifier’ is unknown or zero Size of the type is unknown or zero Statement missing ; Toán tử sizeof() không dùng cho kiểu bit field 89 90 91 92 93 94 Toán tử sizeof() không dùng cho hàm Kích thước ‘identifier’ không xác định Kích thước kiểu liệu không xác định Thiếu dấu chấm phẩy (;), thông thường thiếu dấu ; dòng dòng báo lỗi Structure required on Xảy truy xuất thành phần cấu trúc left side of or * không cách Structure size too large Kích thước cấu trúc lớn, vượt giới hạn 64K chẳng hạn 25 95 Switch statement missing ( 96 Switch statement missing ) 97 The value for ‘identifier’ is Giá trị biến ‘identifier’ không nằm not within the range of an phạm vi biến kiểu nguyên (int) int Too few parameters in call Gọi thực hàm lại truyền không đủ số to function lượng tham số Too many decimal points Biểu diễn số thực dùng nhiều dấu chấm thập phân Too many default cases Trong câu lệnh switch có nhiều lệnh default Too many errors or Có nhiều lỗi cảnh báo chương warning messages trình Xảy chương trình có nhiều 25 lỗi Too many type in Khai báo nhiều kiểu liệu (ít gặp) declaration Too much global data Có nhiều biến toàn cục chương trình, defined in file gây tràn vùng nhớ dành riêng cho biến 98 99 100 101 102 103 Câu lệnh switch thiếu ngoặc Phần giá trị lệnh switch phải đặt cặp dấu ngoặc 26 104 105 Type mismatch in default Giá trị mặc định tham số truyền cho chương argurment value trình bị sai kiểu Type mismatch in default Giá trị mặc định tham số ‘parameter’ bị sai value for parameter kiểu ‘parameter’ 106 Type mismatch in Truyền tham số cho chương trình ‘function’ parameter ‘number’ in call bị sai kiểu tham số ‘number’ to ‘function’ 107 Tham số ‘parameter’ bị sai kiểu 108 Type mismatch in parameter ‘parameter’ Type mismatch in parameter ‘parameter’ in call to ‘function’ 109 Type name expected Thiếu tên kiểu vị trí báo lỗi 110 111 Gần giống lỗi 106 Type ‘typename’ may not Kiểu liệu ‘typename’ định nghĩa be defined here vị trí Unable to create turboc Không thể tạo tập tin turboc.1$n $ln Thường xảy ta chạy Turboc đĩa mềm hay đĩa CD 27 112 113 114 115 116 Unable to execute command ‘command’ Unable to open include file ‘filename’ Undefined label ‘identifier’ Undefined structure ‘structure’ Undefined symbol ‘identifier’ Không thể thực lệnh ‘command’ Không thể mở tập tin tiêu đề ‘filename’ thường xảy ta viết tên tập tin tiêu đề sai, tập tin không tồn đĩa Nhãn ‘identifier’ chưa khai báo Cấu trúc ‘structure’ chưa khai báo Ký hiệu ‘identifier’ chưa khai báo, thường xảy trường hợp ta sử dụng biến mà chưa khai báo 117 Unexpected } Dư dấu đóng ngoặc } 118 Unexpected end of file in comment started on ‘line number’ Thường xảy trường hợp thiếu dấu đóng ngoặc } hàm main() 119 Unexpected end of file in conditional started on ‘line number’ 28 120 121 122 123 124 125 Unknown language, must be C or C++ User break Một cú pháp lạ, cú pháp C hay C++ Chương trình bị ngắt người sử dụng Value of type void is not allowed Variable ‘identifier’ is initialized more than once Không phép gán liệu cho biến kiểu void Biến ‘identifier’ khởi tạo nhiều lần void & is not a valid type While statement missing ( Không chấp nhận tham chiếu đến biến kiểu void Câu lệnh while thiếu ngoặc Phần điều kiện lệnh while phải đặt dấu ngoặc 29 C++ Coding Convention III Công cụ kiểm tra tự động code có viết chuẩn hay không Giới thiệu công cụ hỗ trợ kiểm tra chuẩn viết Code – Cppcheck – C++ - Cppcheck công cụ phân tích mã tĩnh cho ngôn ngữ lập trình C C++ Nó công cụ đa kiểm tra mã không tiêu chuẩn - Cppcheck phần mềm miễn phí theo GNU (General Public License) - Cppcheck hỗ trợ loạt kiểm tra tĩnh mà không bao gồm biên dịch Việc kiểm tra kiểm tra phân tích tĩnh thực mức mã nguồn Chương trình hướng theo kiểm tra phân tích tĩnh nghiêm ngặt, đoán tự nhiên 30 C++ Coding Convention Mục đích sử dụng Cppcheck Một lợi ích công cụ phân tích Cppcheck dễ dàng để sử dụng Nó tốt để giảng dạy nghiên cứu phương pháp phân tích tĩnh: ví dụ, bạn cài đặt Cppcheck hệ thống Windows có giao diện GUI cho phép bạn bắt đầu kiểm tra project bạn 31 C++ Coding Convention Chỉ cần chọn “Check directory” menu định đường dẫn đến project bạn Báo cáo phân tích project sau: 32 C++ Coding Convention - Nếu bạn bắt đầu sử dụng Cppcheck mức độ sâu sắc hơn, bạn cần tuỳ chỉnh số cài đặt Ví dụ, bạn cần phải định đường dẫn đến thư viện bên thứ ba, tích hợp Cppcheck với môi trường phát triển bạn thiết lập kiểm tra ban đêm Nhưng thực tế bạn chọn thư mục nhận kết nghiêm trọng Nó đặc biệt vậy, bạn việc bắt đầu với phân tích tĩnh, trường hợp khả vô giá - Khi phân tích, bạn nghiên cứu thông điệp đặc trưng Chúng phân thành loại sau đây: Errors, Warnings, Style Warnings, Portability Warnings, Performance Warnings, Information Messages Bạn dễ dàng mở đóng nhóm cách nhấp vào nút đặc biệt công cụ 33 C++ Coding Convention - Hình bên cho thấy làm để thiết lập chế độ xem tin nhắn để xem Style Warnings: nhóm tin nhắn “Style Warnings” on, tất phần lại off Các tập tin “cpuid_x86.c” chứa số cảnh báo loại hình này, điều chọn đề cập đến dòng 214 Mô tả đặc trưng hiển thị cửa sổ bên dưới: 34 C++ Coding Convention Cảm ơn thầy bạn lắng nghe!!! Thêm ví dụ phần lỗi 35 [...]... ích c bản c a c ng c phân tích Cppcheck là nó rất dễ dàng để sử dụng Nó rất tốt để giảng dạy và nghiên c u c c phương pháp phân tích tĩnh: ví dụ, bạn c i đặt Cppcheck trên một hệ thống Windows và c đư c một giao diện GUI cho phép bạn ngay lập t c bắt đầu kiểm tra c c project c a bạn 31 C+ + Coding Convention Chỉ c n chọn “Check directory” trong menu và chỉ định đường dẫn đến project c a bạn Báo c o... Không chấp nhận tham chiếu đến biến kiểu void C u lệnh while thiếu ngo c Phần điều kiện c a lệnh while phải đư c đặt trong dấu ngo c 29 C+ + Coding Convention III C ng c kiểm tra tự động code c viết đúng chuẩn hay không 1 Giới thiệu về c ng c hỗ trợ kiểm tra chuẩn viết Code – Cppcheck – trong C+ + - Cppcheck là một c ng c phân tích mã tĩnh cho ngôn ngữ lập trình C và C+ + Nó là một c ng c đa năng c ... đúng tiêu chuẩn - Cppcheck là phần mềm miễn phí theo GNU (General Public License) - Cppcheck hỗ trợ một loạt c c kiểm tra tĩnh mà c thể không bao gồm biên dịch Vi c kiểm tra là kiểm tra phân tích tĩnh c thể đư c th c hiện ở m c mã nguồn Chương trình này hướng theo kiểm tra phân tích tĩnh nghiêm ngặt, chứ không phải phỏng đoán tự nhiên 30 C+ + Coding Convention 2 M c đích sử dụng c a Cppcheck Một trong... phân tích project như sau: 32 C+ + Coding Convention - Nếu bạn bắt đầu sử dụng Cppcheck trên một m c độ sâu s c hơn, bạn c ng c n tuỳ chỉnh một số c i đặt Ví dụ, bạn sẽ c n phải chỉ định đường dẫn đến thư viện c a bên thứ ba, tích hợp Cppcheck với môi trường phát triển c a bạn ho c thiết lập kiểm tra ban đêm Nhưng trên th c tế bạn chỉ c thể chọn một thư m c và nhận đư c kết quả nghiêm trọng Nó đ c biệt... logic, chẳng hạn +, ... CHUẨN HAY KHÔNG Giới thiệu c ng c hỗ trợ kiểm tra chuẩn viết Code – Cppcheck – C+ + M c đích sử dụng Cppcheck C+ + Coding Convention I.Chuẩn viết code C+ + C+ + (đ c là  "C c ng c ng" hay "xi-plus-plus", IPA: /siː pləs pləs/) là một loại ngôn ... ngo c 29 C+ + Coding Convention III C ng c kiểm tra tự động code c viết chuẩn hay không Giới thiệu c ng c hỗ trợ kiểm tra chuẩn viết Code – Cppcheck – C+ + - Cppcheck c ng c phân tích mã tĩnh cho... tích tĩnh th c m c mã nguồn Chương trình hướng theo kiểm tra phân tích tĩnh nghiêm ngặt, đoán tự nhiên 30 C+ + Coding Convention M c đích sử dụng Cppcheck Một lợi ích c ng c phân tích Cppcheck

Ngày đăng: 11/03/2016, 22:17

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w