JetBrains / resharper-unity

Unity support for both ReSharper and Rider
Apache License 2.0
1.21k stars 134 forks source link

That new "Implicit check for Unity object lifetime" is nonsense #2461

Open aybe opened 2 months ago

aybe commented 2 months ago

Just noticed that new suggestion after upgrading today.

See by yourself, code was fine but applying either fix makes it worse actually:

New icon:

image

Fixes:

image

After fix 1:

image

After fix 2:

image

JetBrains ReSharper 2024.2.4
Build 242.0.20240905.115624 built on 2024-09-05
dotTrace 2024.2.20240905.115624
ReSharper C++ 2024.2.20240905.115624
ReSharper 2024.2.20240905.115624
JetBrains ForTea 2024.2.1.3 (Compatible)
JetBrains Unity 2024.2.3.166 (Compatible)

ReSharper 2024.2.4 licensed to aybe aybe. Subscription is valid through 1/16/2025. Perpetual for builds released before 1/17/2024.
ReSharper C++ 2024.2.4 licensed to aybe aybe. Subscription is valid through 1/16/2025. Perpetual for builds released before 1/17/2024.
TeamCity Add-in 2024.2.4 disabled by user preferences.

Build Version: 2024.2.4.65536

Visual Studio Enterprise 2022
Version 17.11.2, InstanceId a77197d5.
InstallVersion: 17.11.35222.181
InstallDir: “C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE”
LocalAppData: C:\Users\aybe\AppData\Local\Microsoft\VisualStudio\17.0_a77197d5

Branch: refs/heads/242.21829

Application Packages:
...
JetBrains Unity build 2024.2.3.166 on 0001-01-01
waitxd commented 1 month ago

First fix is valid. Casting UnityEngine.Object to bool is essentially a null-check, but shorter. Reference

So, in this case, Visual Studio's warning about null-dereferencing is invalid.

The second fix modifies code behavior by only checking the reference for null, ignoring the UnityEngine.Object lifetime.

Both context actions are applicable.