2013-01-16 42 views
6

Tôi đang sử dụng công cụ phân tích mã tĩnh OCLint cho mục tiêu-C và muốn tìm hiểu cách tùy chỉnh quy tắc? Các quy tắc được biểu diễn bằng tập hợp các tệp dylib.Tùy chỉnh quy tắc OCLint

Trả lời

4

Câu trả lời, như với rất nhiều thứ, là nó phụ thuộc.

  1. Nếu bạn muốn viết quy tắc tùy chỉnh của riêng mình, bạn sẽ cần phải viết xuống và viết quy tắc của riêng bạn, trong C++ ở trên cùng của mã nguồn hiện tại. Hãy xem thư mục oclint-rules/rules, size/LongLineRule.cpp là một quy tắc đơn giản để bắt đầu. Bạn sẽ cần phải biên dịch lại, v.v.

  2. Nếu bạn muốn thay đổi thông số của quy tắc hiện tại, bạn cần thêm thông số dòng lệnh -rc=<rulename>=<value> vào cuộc gọi đến oclint. Ví dụ: nếu bạn muốn quy tắc đường dài chỉ kích hoạt cho các dòng dài hơn 150 ký tự, bạn cần phải thêm -rc=LONG_LINE=150.

Tôi không có đủ kiên nhẫn để liệt kê ra tất cả các thông số khác nhau mà bạn có thể thay đổi. Danh sách các quy tắc ở đây là http://docs.oclint.org/en/dev/rules/index.html và danh sách các quy tắc dựa trên ngưỡng tại đây http://docs.oclint.org/en/dev/customizing/rules.html nhưng không có danh sách các giá trị được chấp nhận và tôi không biết liệu hai URL này có bao gồm tất cả các quy tắc hay không. Bạn có thể phải xem xét mã nguồn cho từng quy tắc để tìm hiểu cách hoạt động của quy tắc.

4

Nếu bạn đang sử dụng kịch bản Xcode bạn nên sử dụng oclint_args như thế này:

oclint_args oclint-json biên dịch-cơ sở dữ liệu "-rc LONG_LINE = 150" | sed 's/(.. \ m {1,2}: [0-9]: [0-9] *:)/\ 1 cảnh báo: /'

trong đó mẫu tôi m thay đổi các quy tắc của LONG_LINE đến 150 ký tự

4

thay qua cấu hình như các đối số (xem câu trả lời Jon Boydell của), bạn cũng có thể tạo một file YML tên .oclint trong thư mục dự án.

Dưới đây là một tập tin ví dụ mà tùy một vài điều:

rules: 
    - LongLine 
disable-rules: 
rulePaths: 
    - /etc/rules 
rule-configurations: 
- key: LONG_LINE 
    value: 20 
output: filename 
report-type: xml 
max-priority-1: 10 
max-priority-2: 20 
max-priority-3: 30 
enable-clang-static-analyzer: false 
Các vấn đề liên quan