InlineTrivialConstant misses an empty-string constant with a parenthesized initializer
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 72/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- java
- Lĩnh vực
- testing-qa
Hướng nghiên cứu
Bắt đầu với matcher InlineTrivialConstant và kiểm tra xem việc so khớp phần khởi tạo có xử lý ParenthesizedTree hay không; issue gợi ý ASTHelpers.stripParentheses làm manh mối. So sánh các ví dụ được báo cáo và các ví dụ chuỗi rỗng bị bỏ sót với những bài kiểm tra hiện có cho kiểm tra này. Hoàn tất khi cả hai phần khởi tạo đều tạo ra một phát hiện và các bài kiểm tra của kiểm tra này đều đạt.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Error Prone version
Error Prone 2.49.0 (javac 21.0.8, --source/--target 21)
Affected checks
InlineTrivialConstant
Description
Adding redundant parentheses around an empty-string initializer causes InlineTrivialConstant to miss a trivial constant. The check reports private static final String EMPTY = "";, but does not report private static final String EMPTY = ("");.
Per JLS §15.8.5, parentheses around an expression do not change its value, type, or constant-expression status. The parenthesized empty string is still the same trivial constant.
I verified the following pair on Error Prone 2.49.0:
| Check | Rewrite | BEFORE | AFTER | Effect |
|---|---|---|---|---|
InlineTrivialConstant |
"" → ("") |
1 | 0 | false negative |
The matcher appears to inspect the initializer without looking through ParenthesizedTree. A possible fix is to unwrap the initializer before matching it, for example with ASTHelpers.stripParentheses.
Reproducers
InlineTrivialConstant — ("") is missed
// BEFORE — 1 finding
public class Sample {
private static final String EMPTY = "";
}
// AFTER — 0 findings
public class Sample {
private static final String EMPTY = ("");
}
Expected behavior
Both versions should produce 1 InlineTrivialConstant finding. Adding redundant parentheses around the empty-string initializer does not change its value or constant-expression status.
Actual behavior
The BEFORE version produces 1 finding. The AFTER version produces 0 findings after the empty-string initializer is parenthesized.
- Ngôn ngữ chính
- Java
- Star
- 7.3k
- Fork
- 827
- Merge trung bình
- 21 giờ 35 phút
- Pull request đã merge (30 ngày)
- 60
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của google/error-prone
-
ASTHelpers.getSymbol returns null for a parenthesized expression, while javac's TreeInfo.symbol returns the symbol insideCó thể đã có người làm @vlsi đã nhận 8 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
google/error-prone#6223 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
google/error-prone#6216 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
google/error-prone#6215 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
NonAtomicVolatileUpdate misses volatile increments and decrements with parenthesized operandsĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
google/error-prone#6214 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
google/error-prone#6213 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của google/error-prone
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
aws/context-ontology-accelerator#325 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
The README tells to run `mvn jeo:disassemble`, which fails with `No plugin found for prefix 'jeo'`Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
objectionary/jeo-maven-plugin#1938 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
oVirt/ovirt-engine#1219 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
pending:code-area pending:issue-category to-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày
-
area:core bug priority:p2
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
aomarai/minecraft-mcp#247 ·
Maintainer thường phản hồi trong vòng 1 ngày