2016-02-08 21 views
7

Tôi đang trong quá trình di chuyển dự án hiện đang biên soạn với gcc thành clang, và có một loạt cảnh báo mà gcc không tạo (-Winconsistent-missing-override). clang-tidy hoạt động để sửa các lỗi này trong các tệp *.cpp, tuy nhiên nó không chạm vào tệp hpp vì lệnh biên dịch không được tìm thấy trong cơ sở dữ liệu (như tôi mong đợi).Bắt buộc phải sửa các tệp tiêu đề

Tôi đang sử dụng ninja để tạo dự án và ninja -t compdb cc cxx > .build/compile_commands.json để tạo cơ sở dữ liệu biên dịch. Tôi đã thử chạy:

clang-tidy-3.6 -p .build/  \ 
     $(find src/ -name *.cpp) \ 
     $(find src/ -name *.hpp) \ 
     --checks=misc-use-override --fix 

để sửa lỗi. Nó từ chối chạm vào các tệp tiêu đề phàn nàn:

Skipping .../src/header/file.hpp. Compile command not found. 

Trả lời

6

Tôi đã làm việc này bằng cách chỉ định tùy chọn --header-filter=src/. sửa Điều thú vị là kết thúc lên được áp dụng nhiều lần gây ra như thế này:

void f() override override override override override; 

tôi làm việc này bằng cách chạy clang-tidy trên mỗi file nguồn riêng biệt. Cũng lưu ý rằng <build-path> được chỉ định với -p cũng phải chứa cấu hình .clang-format để tạo kiểu.

này được lặp hiện tại của tôi của lệnh:

find src/ -name '*.cpp' -exec \ 
    clang-tidy-3.6 -p . --header-filter=src/ {} 
       --checks=misc-use-override --fix 
+0

Liên quan đến "sửa kết thúc được áp dụng nhiều lần": Đó là lý do tại sao có một kịch bản chạy kêu vang-gọn gàng mà đầu tiên thu thập các bản sửa lỗi và sau đó áp dụng chúng trong một lần * sau đó *. Xem http://clang-developers.42468.n3.nabble.com/Clang-tidy-applying-fixes-multiple-times-on-same-file-tp4048842p4049156.html – kfunk

+0

Tôi hiểu. Mặc dù vậy, không phải là tài liệu rất tốt. Nếu bạn viết câu trả lời đó hoặc một bản chỉnh sửa được đề xuất, tôi sẽ rất sẵn lòng chấp nhận nó. (Tôi đã ngừng phát triển nhiều C++, vì vậy có lẽ tôi sẽ không thử nghiệm nó) – nishantjr

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