Examples of errors detected by the V3105 diagnostic


V3105. The 'a' variable was used after it was assigned through null-conditional operator. NullReferenceException is possible.


Microsoft Bot Builder

V3105 The 'parts' variable was used after it was assigned through null-conditional operator. NullReferenceException is possible. JwtTokenExtractor.cs 60


public async Task<ClaimsIdentity>
GetIdentityAsync(string authorizationHeader)
{
  ....
  string[] parts = authorizationHeader?.Split(' ');
  if (parts.Length == 2) // <=
    return await GetIdentityAsync(parts[0], parts[1]).
                 ConfigureAwait(false);
  ....
}

.NET Core Libraries (CoreFX)

V3105 The 'versionString' variable was used after it was assigned through null-conditional operator. NullReferenceException is possible. RuntimeInformation.cs 29


public static string FrameworkDescription
{
  get
  {
    if (s_frameworkDescription == null)
    {
      string versionString = (string)AppContext.GetData("FX_PRODUCT_VERSION");
      if (versionString == null)
      {
        ....
        versionString
          = typeof(object).Assembly
                          .GetCustomAttribute<
                             AssemblyInformationalVersionAttribute>()
                         ?.InformationalVersion;    // <=
        ....
        int plusIndex = versionString.IndexOf('+'); // <=
        ....
      }
      ....
    }
    ....
  }
}


Bugs Found

Checked Projects
364
Collected Errors
13 504