2015-06-20 35 views
5

Tôi đang sử dụng cppcheck để phân tích tĩnh. Để tăng tốc quá trình xem xét, tôi muốn thiết lập cppcheck để tìm kiếm một số quy tắc tùy chỉnh, ví dụ để kiểm tra xem các hàm geter được định nghĩa là một const hay chưa.Viết quy tắc tùy chỉnh cho cppcheck

Nếu có ai có kinh nghiệm viết quy tắc tùy chỉnh cho cppcheck, vui lòng cho bạn một số ví dụ để viết quy tắc tùy chỉnh ?.

P.S Tôi đã thực hiện một số nghiên cứu để tìm một công cụ cho phép tôi viết các quy tắc tùy chỉnh và giúp quá trình đánh giá nhanh hơn. Tôi có tìm thấy những liên kết về chủ đề này

What open source C++ static analysis tools are available?

C++ static code analysis tool on Windows

A free tool to check C/C++ source code against a set of coding standards?

+0

Xin chào, TM_. Yêu cầu về tài nguyên ngoại tuyến và yêu cầu đề xuất công cụ là không chính xác cho luồng ngăn xếp. –

+1

Hi @DrewDormann thực sự là câu hỏi của tôi về cách viết các quy tắc tùy chỉnh cho cppcheck. Nếu thậm chí chỉ đề cập đến off-topic tôi có thể loại bỏ phần này khỏi câu hỏi của tôi. –

+0

Tôi cá rằng sẽ giúp ích. Tôi đọc lại từng câu mà bạn đã gõ và tự hỏi * "Đây có phải là một câu hỏi không?" * Tôi không thể tìm thấy câu hỏi nào ở bất cứ đâu. –

Trả lời

6

Tôi là một nhà phát triển Cppcheck.

Bạn có thể sử dụng tùy chọn --rule và --rule-file để thêm các quy tắc như vậy. Có thể bạn có thể sử dụng cụm từ thông dụng như:

\sget[A-Za-z]+\(\)\s+{\s+return 

Tùy thuộc vào mã cơ sở của bạn.

Nếu bạn có thể viết cụm từ thông dụng thì đây là cách trực tiếp và đơn giản nhất để tạo quy tắc tùy chỉnh.

Để biết thêm thông tin, đọc "quy tắc Viết" bài viết ở đây: http://sourceforge.net/projects/cppcheck/files/Articles/

Nhưng có lẽ bạn muốn viết quy tắc phức tạp hơn mà tìm kiếm các phương pháp getter như vậy bằng cách sử dụng các Cppcheck SymbolDatabase, tokenlist và cây cú pháp. Bạn không thể sử dụng --rule và --rule-file sau đó. Khi đó, bạn có những lựa chọn này:

  • Sử dụng --dump và viết tập lệnh tùy chỉnh của riêng bạn đọc dữ liệu đầu ra (xml).
  • Viết mã C++ và biên dịch nó thành Cppcheck. Đây là imho tương đối đơn giản nhưng yêu cầu bạn tự biên dịch Cppcheck.
+1

Xin chào @Daniel Marjamäki Cảm ơn bạn đã trả lời. Vì vậy, như được viết trong tài liệu mà bạn cung cấp quy tắc là tệp XML, có cách nào để sử dụng tệp quy tắc được tạo tùy chỉnh này với cppcheck GUI không? Tôi có thể thiết lập quy tắc mới trong GUI ở đâu? –

+1

Hiện tại bạn không thể sử dụng các quy tắc trong GUI. Tôi nghĩ rằng nó sẽ tương đối dễ dàng để cải thiện GUI, nhưng không ai muốn làm điều đó. –

+1

Ok cảm ơn tôi sẽ cố gắng sử dụng với cửa sổ thiết bị đầu cuối cmd. –

Các vấn đề liên quan