PVS-Studio hỗ trợ phân tích các dự án bằng C, C++, C# và Java. Máy phân tích có thể được sử dụng trong các hệ thống Windows, Linux và macOS. Ghi chú này sẽ tập trung vào việc phân tích mã được viết bằng C và C++ trong môi trường Linux.
Cài đặt
Bạn có thể cài đặt PVS-Studio trên Linux theo nhiều cách khác nhau, tùy thuộc vào loại phân phối. Cách thuận tiện và ưa thích nhất là sử dụng kho lưu trữ: điều này cho phép bạn tự động cập nhật máy phân tích khi phiên bản mới được phát hành. Tùy chọn thứ hai là sử dụng gói cài đặt, có thể tải xuống .
Các lệnh bạn cần chạy để cài đặt tùy thuộc vào bản phân phối Linux bạn đang sử dụng. Ví dụ: đối với các hệ thống dựa trên Debian, quá trình cài đặt từ kho lưu trữ trông như thế này:
wget -q -O - https://files.viva64.com/etc/pubkey.txt | sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
sudo apt update
sudo apt install pvs-studioĐể cài đặt PVS-Studio từ gói cài đặt, bạn có thể sử dụng tiện ích gdebi:
sudo gdebi pvs-studio-VERSION.debQuá trình cài đặt được mô tả chi tiết hơn trong phần "" tài liệu. Ở đó bạn cũng có thể tìm thấy thông tin về các hệ thống không dựa trên Debian.
Sau khi cài đặt, bạn cần nhập thông tin giấy phép. Để làm điều này, sử dụng lệnh
pvs-studio-analyzer credentials NAME KEY [-o LIC-FILE]Где TÊN и KEY – tên mà giấy phép được đăng ký và mã cấp phép. Tham số tùy chọn -hoặc cho phép bạn chỉ định đường dẫn nơi tệp giấy phép sẽ được tạo. Theo mặc định nó được lưu trữ trong thư mục ~/.config/PVS-Studio/.
Bạn có thể lấy key dùng thử trên trang "".
Xác minh dự án
Sau khi cài đặt máy phân tích, bạn có thể bắt đầu kiểm tra dự án. Có hai cách chính để làm điều này:
- Giám sát biên soạn;
- Chạy trong quá trình xây dựng trực tiếp từ hệ thống xây dựng.
Trước tiên hãy xem xét phương pháp đầu tiên. Để bắt đầu giám sát trong Linux, bạn sẽ cần một tiện ích . Máy phân tích sử dụng nó để thu thập thông tin về những quy trình nào đã được khởi chạy trong quá trình xây dựng dự án.
Việc khởi chạy được thực hiện bằng lệnh sau:
pvs-studio-analyzer trace -- makeVí dụ này sử dụng lệnh make để xây dựng nhưng lệnh gọi make có thể được thay thế bằng bất kỳ lệnh nào khác mà bạn sử dụng để bắt đầu quá trình xây dựng. Các tham số dòng lệnh có thể được truyền tới nó theo cách thông thường.
Sau khi được xây dựng, strace sẽ tạo một tệp mà trình phân tích sẽ sử dụng để kiểm tra mã nguồn. Bạn có thể bắt đầu phân tích bằng lệnh
pvs-studio-analyzer analyze -o /path/to/project.logĐầu ra sẽ là một tệp được mã hóa với kết quả mà bạn có thể chuyển đổi sang một trong các định dạng được hỗ trợ. Chúng ta sẽ xem xét cách làm việc với các báo cáo trong phần tiếp theo.
Ngoài việc sử dụng strace, phân tích cũng có thể được chạy dựa trên một tệp biên dịch_commands.json (Cơ sở dữ liệu biên dịch JSON). Nhiều hệ thống xây dựng cho phép bạn xuất các lệnh gọi trình biên dịch hoặc bạn có thể sử dụng tiện ích . Trong trường hợp này, bạn có thể bắt đầu phân tích bằng lệnh
pvs-studio-analyzer analyze –f /path/to/compile_commands.jsonCần lưu ý rằng máy phân tích nhận ra trình biên dịch được sử dụng theo tên tệp thực thi của nó. Nếu bạn nhận được lỗi “Không tìm thấy đơn vị biên dịch” khi kiểm tra, hãy thử chỉ định tên trình biên dịch của bạn thông qua tham số –trình biên dịch hoặc -c:
pvs-studio-analyzer analyze -c MyCompilerĐiều này có thể cần thiết khi biên dịch chéo và sử dụng trình biên dịch có tên tệp thực thi không chuẩn.
Ngoài việc chạy ở chế độ giám sát, bạn có thể tích hợp máy phân tích vào hệ thống xây dựng hoặc IDE của mình. Bạn có thể tìm thấy ví dụ về các dự án đã được cấu hình tích hợp tại trong kho PVS_Studio:
Để biết hướng dẫn chi tiết hơn về cách chạy phân tích trong Linux, hãy xem .
Làm việc với các báo cáo
Sau khi kiểm tra thiết kế, máy phân tích sẽ tạo ra một báo cáo được mã hóa. Để chuyển đổi nó sang một trong các định dạng được hỗ trợ, bạn nên sử dụng tiện ích chuyển đổi plog, được cài đặt với PVS-Studio.
Tiện ích hỗ trợ các định dạng sau:
- xml – một định dạng thuận tiện để xử lý bổ sung các kết quả phân tích, được hỗ trợ bởi plugin cho SonarQube;
- csv – định dạng văn bản dùng để trình bày dữ liệu dạng bảng;
- errorfile – định dạng đầu ra gcc và clang;
- danh sách tác vụ – định dạng lỗi có thể mở được trong QtCreator;
- html – báo cáo html với mô tả ngắn gọn về kết quả phân tích;
- fullhtml – báo cáo html với khả năng sắp xếp kết quả phân tích theo các tham số khác nhau và điều hướng thông qua mã nguồn.
Định dạng fullhtml thuận tiện nhất để xem báo cáo vì nó cho phép bạn truy cập dòng mã nguồn nơi xảy ra cảnh báo. Lệnh sau cho phép bạn chuyển đổi báo cáo của máy phân tích sang định dạng này:
plog-converter -a GA:1,2 -t fullhtml /path/project.log -o /path/report_dirSau khi thực hiện lệnh, một thư mục sẽ được tạo /đường dẫn/báo cáo_dir, sẽ chứa các tệp báo cáo.
Hãy chú ý đến chìa khóa -a. Nó cho phép bạn chỉ định những cảnh báo nào sẽ được đưa vào báo cáo. Điều này thuận tiện nếu có nhu cầu lọc đầu ra của máy phân tích. Lệnh trên sẽ tạo một báo cáo chỉ chứa các cảnh báo từ nhóm phân tích chung về mức độ tin cậy thứ nhất và thứ hai (Cao и Trung bình).
Báo cáo mẫu:

Bằng cách bấm vào một ô Địa điểm tin nhắn, bạn có thể chuyển đến dòng mã tương ứng:

Bấm vào số chẩn đoán trong cột Mã sẽ mở tài liệu mô tả chẩn đoán này.
Ngăn chặn kích hoạt máy phân tích
Khi kiểm tra mã bằng máy phân tích tĩnh, có thể xảy ra kết quả dương tính giả hoặc đơn giản là các thông báo không mong muốn (tiếng ồn). PVS-Studio cung cấp cơ chế ngăn chặn những cảnh báo như vậy. Để ngăn chặn từng trình kích hoạt, bạn có thể sử dụng một trong các phương pháp được mô tả trong phần tài liệu "".
Ngoài ra, khi phân tích mã cũ, có thể cần phải loại bỏ tất cả các tin nhắn một cách ồ ạt. Thông thường, điều này là cần thiết để chỉ kiểm tra mã được thêm vào cơ sở mã hiện có. Để làm điều này, sử dụng tham số đàn áp tiện ích máy phân tích pvs-studio.
Bạn có thể chặn hàng loạt tin nhắn trong báo cáo bằng lệnh sau:
pvs-studio-analyzer suppress /path/to/report.logThông tin về các tin nhắn bị chặn được lưu trữ trong một tập tin đàn áp_base.json, nằm liền kề dự án. Những thông báo như vậy sẽ bị loại khỏi báo cáo trong những lần kiểm tra tiếp theo.
Cơ chế này được mô tả chi tiết hơn trong tài liệu .
Kết luận
Đây là phần giới thiệu ngắn gọn về cách sử dụng bộ phân tích PVS-Studio trong Linux. Tôi hy vọng nó hữu ích và trả lời các câu hỏi thường gặp nhất. Bạn có thể đọc thêm về chủ đề của bài viết này trong tài liệu .
Nếu bạn muốn chia sẻ bài viết này với khán giả nói tiếng Anh, vui lòng sử dụng liên kết dịch: Yuri Minaev. .
Nguồn: www.habr.com
