Sự khác biệt giữa SonarQube và SonarLint


89

Chính xác thì sonarQube khác với SonarLint như thế nào? SonarQube có một máy chủ được liên kết với nó và Sonar lint hoạt động giống như một plugin hơn. Nhưng sự khác biệt cụ thể của chúng là gì?

Câu trả lời:


131

SonarLint chỉ tồn tại trong IDE (IntelliJ, Eclipse và Visual Studio). Mục đích của nó là cung cấp phản hồi tức thời khi bạn nhập mã của mình. Đối với điều này, nó tập trung vào mã bạn đang thêm hoặc cập nhật.

SonarQube là một máy chủ trung tâm xử lý các phân tích đầy đủ (được kích hoạt bởi các Máy quét SonarQube khác nhau). Mục đích của nó là cung cấp tầm nhìn 360 ° về chất lượng của cơ sở mã của bạn. Đối với điều này, nó phân tích tất cả các dòng nguồn của dự án của bạn một cách thường xuyên.

Cả SonarLint và SonarQube đều dựa trên cùng một bộ phân tích mã nguồn tĩnh - hầu hết chúng được viết bằng công nghệ SonarSource.


Cảm ơn @Fabrice! Nhưng một câu hỏi tiếp theo. Tôi đang tìm thấy sự khác biệt trong các báo cáo cho sonarqube và lint sonar cho cùng một phiên bản của cơ sở mã. Đây là vấn đề ban đầu khiến tôi viết câu hỏi này. Điều gì có thể là vấn đề?
Jeevan Varughese

7
Bạn nên "kết nối" SonarLint với SonarQube và liên kết dự án cục bộ của bạn (trong IDE) với dự án từ xa (trong SonarQube) để đảm bảo rằng bạn đang sử dụng cùng một cấu hình chất lượng (= bộ quy tắc) trong cả hai thế giới.
Fabrice - Nhóm SonarSource

Cảm ơn Fabrice. Điều này cũng có nghĩa là các phiên bản khác nhau thì các bộ quy tắc khác nhau sẽ có thể đưa ra các báo cáo khác nhau phải không? Giống như có thể có sự khác biệt giữa báo cáo v5.6 và v6.0 cho cùng một phiên bản cơ sở mã.
Jeevan Varughese

1
Bạn có thể thấy điều này thú vị; bài viết này đã giúp tôi hiểu sự khác biệt giữa 3 chế độ khởi chạy SonarQube khác nhau: phân tích (người tạo báo cáo trong SonarQube UI), xem trước và tăng dần (được sử dụng bởi SonarLint). blog.sonarsource.com/…
YB Nguyên nhân.

23

Cần phải nói thêm rằng SonarQube cũng thực hiện quét với các bộ phân tích của bên thứ 3 (findBugs, checkstyle, PMD) trong khi SonarLint không bao gồm những công cụ đó. Tôi nghĩ lý do là ưu tiên hiệu suất và findBugs dựa trên mã byte java.

Do đó, phát hiện của bạn trong SonarQube và SonarLint có thể khác nhau, nếu cấu hình chất lượng cơ bản sử dụng máy quét của bên thứ ba.


2
Bạn nói đúng @guitarlum, và lý do chính không phải là lý do bạn đã đề cập, mà là thực tế là chúng tôi thực sự tin rằng SonarJava (trình phân tích Java do SonarSource phát triển) vượt trội hoàn toàn so với PMD + Findbugs.
Fabrice - Nhóm SonarSource,

3
@ Fabrice-SonarSourceTeam Tôi hiểu lý do của bạn và điều này có thể đúng với FindBugs và PMD mặc định, tuy nhiên trong lĩnh vực bảo mật ứng dụng, cụ thể là FindSecurityBugs ( find-sec-bugs.github.io ), theo tôi là cách quét lỗ hổng tốt nhất, SonarJava thiếu hụt.
guitarlum

4

SonarQube là một máy chủ nơi bạn có thể lưu trữ các dự án của mình và thực hiện phân tích, trong khi SonarLint là một tác nhân cho phép chúng tôi kết nối với SonarQube này và thực hiện phân tích từ xa. SonarLint có thể được sử dụng với IDE hoặc cũng có thể được thực thi thông qua các lệnh CLI.

SonarLint chứa bộ quy tắc mặc định của riêng nó nhưng khi kết nối với SonarQube, người dùng có thể nhập các quy tắc từ SonarQube, thực tế không chỉ là một bộ quy tắc tiêu chuẩn. Chúng tôi có thể tích hợp PDM, CodeStyle và nhiều trình kiểm tra khác trên SonarQube và tạo các quy tắc tùy chỉnh.

Hai sự thật tôi muốn đề cập mà tôi rút ra được từ kinh nghiệm của mình, SonarLint sẽ không kế thừa các quy tắc tùy chỉnh đó từ SonarQube, thứ hai là Sonar không hoạt động trên các lớp Thử nghiệm.


0

Sonarqube chạy các dũng cảm quy tắc trên máy chủ Chúng tôi đã tích hợp nó vào các bản dựng TFS của chúng tôi. SonarLint chạy trong IDE nên trước khi cam kết mã của mình, tôi biết dòng nào đang vi phạm quy tắc nào bên trong IDE.


Câu hỏi là về cách máy quét khác nhau? Câu trả lời của bạn được đưa ra làm tiền đề cho câu hỏi. Máy chủ và các plugin đã được đề cập trong câu hỏi.
Jeevan Varughese
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.