2009-11-24 26 views
12

tôi hoàn toàn ngưỡng mộ ReSharper và sẽ không làm việc mà không có nó, nhưng có một vài gotchas mà tôi đã chạy vào và tìm cách tránh:Resharper gotchas

  • phép ReSharper để đổi tên xâu tự động thực sự có thể cắn bạn trong các trường hợp như khi các biến đối tượng của bạn khớp với các tên cột trong SQL DAL của bạn hoặc các hằng số chuỗi khác. Tôi đã học được rằng thay vì sốt ruột nhấn phím enter khi hộp thoại đổi tên thứ hai xuất hiện tôi thực sự cần phải xem những gì ReSharper được đề xuất và thường bỏ qua bước đổi tên chuỗi chữ.
  • Điều này một chút xảo quyệt hơn: Khi bạn có phân tích Giải pháp-Wide bật ReSharper sẽ cho bạn biết có hay không phương pháp công cộng được sử dụng. Điều này bao gồm getters và setters trong tài sản. Đó là một tính năng tuyệt vời nhưng những gì ReSharper không biết là khi bạn đang thiết kế một khung nhìn sẽ được hiển thị trong nhà thiết kế (dạng, user ctrl) thì getters và setters bất động sản được gọi lúc thiết kế và không hiển thị trong biên soạn. Vì vậy, ReSharper sẽ gợi ý rằng các getters hoặc setters của tài sản đó có thể được thực hiện riêng tư hoặc chỉ cần loại bỏ. Nhưng nếu bạn thực hiện điều chỉnh và sau đó tải chế độ xem trong trình thiết kế, trình thiết kế sẽ gặp sự cố vì thuộc tính không khả dụng và thông báo lỗi không chính xác rõ ràng. Tóm lại, một lập trình viên cần xem xét cẩn thận các đề xuất sử dụng tài sản khi thiết kế một khung nhìn.

Đó là những biggies của tôi. Còn gì khác ngoài kia có thể khiến tôi và những người hâm mộ ReSharper khác?

+1

Đề nghị đổi tên tập quán bằng chuỗi chỉ là một tính năng ngu ngốc. Nó cắn tôi trong ass tất cả các thời gian và tôi * không bao giờ * muốn tìm kiếm chuỗi. Toàn bộ * điểm * của tái cấu trúc là nó chống đạn. Đổi tên trong chuỗi không bao giờ chống đạn - Tôi không biết tại sao họ thậm chí cung cấp nó. –

+1

@Kirk: Tôi đồng ý. Ít nhất nó nên được tắt theo mặc định. –

Trả lời

22

Khi tôi chạy qua các chỉ thị tiền xử lý sử dụng #ifs để thực hiện biên dịch có điều kiện và cấu hình hiện tại được đặt sao cho một khối mã bị ẩn, có vẻ như không thấy mã # if'd và sẽ đề xuất yanking ra một biến mà khối sử dụng mã, suy nghĩ nó không bao giờ được gọi là.

+4

+1 về điều này. Resharper dường như không hiểu các câu lệnh trình biên dịch có điều kiện. – camainc

+5

Tôi đã xem xét điều này ngày hôm nay và đã báo cáo: http://youtrack.jetbrains.com/issue/RSRP-337056 –

+1

@RudiVisser Bạn đã báo cáo điều này một thời gian dài trước đây và vấn đề vẫn còn mở! Nó cũng là một vấn đề với sử dụng, Resharper nghĩ rằng một số không gian tên có thể được gỡ bỏ trong khi đây không phải là trường hợp ... –

14

Bạn có thể đánh dấu các thuộc tính đó bằng thuộc tính UsedImplicitly và ReSharper sẽ không đề xuất xóa nó.

+1

Tốt nhất, mặc dù tôi muốn tránh sử dụng các thuộc tính để chỉ đạo một công cụ năng suất vì nó liên kết mã với bên thứ ba gói. Có thể có một thiết lập mà R # có thể bỏ qua các thuộc tính trong các lớp có nguồn gốc điều khiển không?Hoặc có lẽ đó nên là một gợi ý về tính năng cho nhóm JetBrains cho bản phát hành kế tiếp. –

+0

lol. Đội 23! tôi nghĩ rằng có lẽ tôi đã chỉ cần đưa vào một yêu cầu tính năng! –

+6

Không cần thiết phải tham khảo lắp ráp JetBrains. Bạn có thể sao chép các thuộc tính này vào dự án của mình, tới bất kỳ địa điểm và không gian tên nào. Nhìn vào ReSharper → Tùy chọn → Chú thích mã → Sao chép cài đặt mặc định vào clipboard. – derigel

2

Tính năng chia sẻ lại hoặc bỏ qua hoàn toàn hoặc có triển khai xử lý hoàn toàn khác nhau Cảnh báo khi xây dựng dự án Lỗi khi xây dựng. Ngoài ra, lần cuối cùng khi tôi kiểm tra, nó bỏ qua "Chặn cảnh báo" chặn trong cấu hình dự án khi được sử dụng cùng với Cảnh báo là lỗi.

7

Chúng tôi đã sử dụng quá trình biên dịch có điều kiện trong toàn bộ quá khứ và Resharper hoàn toàn phụ thuộc vào những điều đó. Nó không có ý tưởng các điều kiện thậm chí tồn tại, và tải các xung đột và lỗi có thể xuất hiện nếu cả hai tập tin khai báo cùng một hằng số và phương pháp.

<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' Or '$(Configuration)|$(Platform)' == 'Release|x64'"> 
    <Compile Include="SomeFileFor.x64.cs"> 
     <SubType>Code</SubType> 
    </Compile> 
</ItemGroup> 
<ItemGroup Condition=" !('$(Configuration)|$(Platform)' == 'Debug|x64' Or '$(Configuration)|$(Platform)' == 'Release|x64')"> 
    <Compile Include="SomeFileFor.x32.cs"> 
     <SubType>Code</SubType> 
    </Compile> 
</ItemGroup> 
2

Việc biên dịch có điều kiện được thêm vào ReSharper 8. Chỉ cần lấy phiên bản cuối cùng.