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('+'); // <=
        ....
      }
      ....
    }
    ....
  }
}

ILSpy

V3105 The 'm' variable was used after it was assigned through null-conditional operator. NullReferenceException is possible. ILSpy MethodVirtualUsedByAnalyzer.cs 137


static bool ScanMethodBody(IMethod analyzedMethod,
                           IMethod method, MethodBodyBlock methodBody)
{
  ....
  var mainModule = (MetadataModule)method.ParentModule;
  ....
  switch (member.Kind)
  {
    case HandleKind.MethodDefinition:
    case HandleKind.MethodSpecification:
    case HandleKind.MemberReference:
      var m = (mainModule.ResolveEntity(member, genericContext) as IMember)
              ?.MemberDefinition;
      if (   m.MetadataToken == analyzedMethod.MetadataToken               // <=
          && m.ParentModule.PEFile == analyzedMethod.ParentModule.PEFile)  // <=
      {
        return true;
      }
      break;
  }
  ....
}


Bugs Found

Checked Projects
427
Collected Errors
14 526
This website uses cookies and other technology to provide you a more personalized experience. By continuing the view of our web-pages you accept the terms of using these files. If you don't want your personal data to be processed, please, leave this site. Learn More →
Accept