Rider如何針對一個項目禁用某一類錯誤檢查(Inspections)的辦法
Rider的Inspections確實是非常好的功能,但是也并非每一種檢查都適合當前項目,有的檢查對于當前項目可能是沒有意義的,比如對于一個基礎庫,將很多未使用的屬性、方法、類等設置為public是很合理的,但是Rider會高亮提醒,這可能不是我們想要的,所以我們可能想針對當前項目禁止這種檢查。
最簡單的辦法可能就是將光標移動到波浪線上,然后點擊左側的“點亮”圖標(或者你的快捷鍵)選擇修復或者使用注釋禁用。但是這需要每個位置都作一次,更好的辦法是使用.editorconfig配置。比如下面這個配置文件:
[*.cs] resharper_unused_type_global_highlighting = none resharper_unused_member_in_super_global_highlighting = none resharper_gc_suppress_finalize_for_type_without_destructor_highlighting = none resharper_member_can_be_private_global_highlighting = none resharper_invert_if_highlighting = none resharper_convert_switch_statement_to_switch_expression_highlighting = none resharper_switch_statement_missing_some_enum_cases_no_default_highlighting = none resharper_unused_member_global_highlighting = none resharper_unused_field_compiler_highlighting = none resharper_switch_statement_handles_some_known_enum_values_with_default_highlighting = none
這里將.editorconfig所在目錄以及其子目錄下面的所有cs代碼文件的Inspections禁用掉了一部分。本身Rider有上千種檢查,要準確的找到這個檢查叫什么名字,靠猜是很費勁的,所以這里提供一個百試不爽的辦法,僅供參考。首先你要收藏Rider的這個官方文檔:
C# : https://www.jetbrains.com/help/rider/Reference__Code_Inspections_CSHARP.html
C++ :https://www.jetbrains.com/help/rider/Reference__Code_Inspections_CPP.html
其他語言以此類推。比如下面這一條。
Some values of the enum are not processed inside 'switch' statement and are handled via default section SwitchStatementHandlesSomeKnownEnumValuesWithDefault resharper_switch_statement_handles_some_known_enum_values_with_default_highlightin

如圖所示有這樣一個提醒。此時可能我們并不想處理這個提醒。所以我們可以點擊左側“點亮”圖標或者你的快捷鍵選擇使用注釋來禁用這一次:

此時你可以看到,Rider自動幫你添加了一個注釋:
/// <summary> /// Gets the type of the underlying. /// </summary> /// <param name="memberInfo">The member information.</param> /// <returns>Type.</returns> /// <exception cref="System.ArgumentException">Input MemberInfo must be if type EventInfo, FieldInfo, MethodInfo, or PropertyInfo</exception> public static Type GetUnderlyingType(this MemberInfo memberInfo) { // ReSharper disable once SwitchStatementHandlesSomeKnownEnumValuesWithDefault switch (memberInfo.MemberType) { case MemberTypes.Event: return ((EventInfo)memberInfo).EventHandlerType!; case MemberTypes.Field: return ((FieldInfo)memberInfo).FieldType; case MemberTypes.Method: return ((MethodInfo)memberInfo).ReturnType; case MemberTypes.Property: return ((PropertyInfo)memberInfo).PropertyType; default: throw new ArgumentException ( "Input MemberInfo must be if type EventInfo, FieldInfo, MethodInfo, or PropertyInfo" ); } }
注釋中的SwitchStatementHandlesSomeKnownEnumValuesWithDefault就是我們要關注的關鍵字。此時只需要拿著這個關鍵字去官方文檔搜索一下即可:

下方的字符串即可用于在.editorconfig中用于配置禁用某個Inspection。我也嘗試過直接配置SwitchStatementHandlesSomeKnownEnumValuesWithDefault到.editorconfig中,但是似乎并沒有效果。

浙公網安備 33010602011771號