Tôi vừa tải xuống bản dùng thử Resharper 7.1. Mục tiêu của tôi là thực thi một quy tắc mà logger tùy chỉnh của chúng ta phải được sử dụng trên tất cả các khối catch trong cơ sở mã C# của chúng ta. Thí dụ;Mẫu kiểm tra tùy chỉnh để ghi nhật ký khối catch
try{
// Any amount of code
}
catch(Exception e){
}
nên là bất hợp pháp, tuy nhiên:
try{
// Any amount of code
}
catch(Exception e){
Logger.LogException(e.Message, e);
}
là hoàn toàn chấp nhận được. Để kết thúc này, tôi đã thiết lập mẫu sau để phát hiện và tái yếu tố.
Tìm kiếm mẫu:
try{
$anystatements$
}
catch($exceptiontype$ $exceptionarg$){
$anycatchstatements$
}
Thay thế mẫu:
try{
$anystatements$
}
catch($exceptiontype$ $exceptionarg$){
Logger.LogException($exceptionarg$.Message, $exceptionarg$)
$anycatchstatements$
}
Resharper được phát hiện mùi tốt, nhưng được xử lý thay thế mô hình như một mùi trong chính nó như dòng gia tăng đối với Logging đang được khớp với $anycatchstatement$
trình giữ chỗ.
Làm cách nào để xác định trình giữ chỗ mô tả "khớp với bất kỳ số lượng câu lệnh nào trong khối catch KHÔNG gọi đến trình ghi nhật ký tùy chỉnh và chỉ cần thêm cuộc gọi vào trình ghi nhật ký"?
Điều này có vẻ xấu cho bạn: http://stackoverflow.com/questions/11657922/resharper-custom-pattern-replacement-with-negative-equality-expression Tôi nghĩ rằng nó hiệu quả là một dupe, trong một vòng xoay thời trang. – spender
Ah chết tiệt! Tôi đã dành rất nhiều thời gian cho việc tìm kiếm, không nghĩ đến 'bình đẳng tiêu cực'! Điều đó nói rằng, không có câu trả lời dễ chịu cho giải pháp của tôi về chủ đề đó ngoài 'không làm điều đó'. – Finch
Gửi yêu cầu tính năng tại đây: http://youtrack.jetbrains.com/issues/RSRP - Nhóm ReSharper thường rất nhanh trong việc khắc phục các sự cố quan trọng. –