2012-09-04 12 views
6

Chúng tôi đang sử dụng sonar để quản lý chất lượng mã của chúng tôi. Tôi gặp sự cố với vi phạm "Magic Number" đối với chú thích JPA như sau:Vi phạm sonar số ma thuật trên chú thích JPA

@NotNull 
@Size(min = 1, max = 300) 
@Column(name = "NAME") 

Đây có phải là vi phạm thực sự cho chú thích không?

Nếu không, làm thế nào chúng ta có thể đối phó với loại vi phạm Sonar này?

Trả lời

6

Vi phạm số ma thuật không hiểu liệu số này có xuất hiện trong chú thích hay không. IMHO này là dương tính giả và bạn có thể xử lý nó theo hai cách. Hoặc tắt quy tắc này trong hồ sơ chất lượng của bạn hoặc tạo một lớp MAGICNUMBER và liệt kê tất cả các số bạn đang sử dụng làm thuộc tính tĩnh. Ví dụ tìm lớp sau

public final class MAGICNUMBER { 
public static final int L8000 = 8000; 
public static final int L300 = 300; 

}

Sau đó, bạn có thể sử dụng nó trong lớp học của bạn như thế này

@NotNull 
@Size(min = 1, max = MAGICNUMBER.L300) 
@Column(name = "NAME") 
+0

Tôi không thích hai cách này. Tôi muốn Sonar xử lý nó mà không có bất kỳ thay đổi nào trong mã của tôi. –

+3

Sau đó vô hiệu hóa quy tắc có liên quan trong hồ sơ Sonar của bạn – ppapapetrou

4

Tôi không chắc chắn làm thế nào nó là vào năm 2012, nhưng việc tìm kiếm này ngay bây giờ , dường như có cách để tắt tính năng này chỉ cho chú thích trong v 3.3.2 và chắc chắn trên đó

Disable magic number in annotation. Shown is Sonar 3.3.2

1

Bạn có thể chỉnh sửa quy tắc trong tệp kiểu kiểm tra của mình để nó không đưa vào chú thích tài khoản, phương pháp mã băm hoặc số cụ thể.

<module name="MagicNumber"> 
    <property name="ignoreNumbers" value="-1, 0, 1, 2, 3"/> 
    <property name="ignoreHashCodeMethod" value="true" /> 
    <property name="ignoreAnnotation" value="true" /> 
</module>