Pour obtenir une clé
d'essai remplissez le formulaire ci-dessous
Demandez des tariffs
Nouvelle licence
Renouvellement de licence
--Sélectionnez la devise--
USD
EUR
RUB
* En cliquant sur ce bouton, vous acceptez notre politique de confidentialité

Free PVS-Studio license for Microsoft MVP specialists
To get the licence for your open-source project, please fill out this form
** En cliquant sur ce bouton, vous acceptez notre politique de confidentialité.

I am interested to try it on the platforms:
** En cliquant sur ce bouton, vous acceptez notre politique de confidentialité.

Votre message a été envoyé.

Nous vous répondrons à


Si vous n'avez toujours pas reçu de réponse, vérifiez votre dossier
Spam/Junk et cliquez sur le bouton "Not Spam".
De cette façon, vous ne manquerez la réponse de notre équipe.

>
>
>
Examples of errors detected by the V302…

Examples of errors detected by the V3020 diagnostic

V3020. An unconditional 'break/continue/return/goto' within a loop.


.NET Core Libraries (CoreFX)

V3020 An unconditional 'return' within a loop. Enumerable.cs 517


public override bool MoveNext()
{
  switch (state)
  {
    case 1:
      _enumerator = _source.GetEnumerator();
      state = 2;
      goto case 2;
    case 2:
      while (_enumerator.MoveNext())
      {
        current = _selector(_enumerator.Current);
        return true;
      }
      Dispose();
      break;
  }
  return false;
}

Similar errors can be found in some other places:

  • V3020 An unconditional 'return' within a loop. JsonDataContract.cs 128

Space Engineers

V3020 An unconditional 'continue' within a loop. Sandbox.Game MyRenderComponentThrust.cs 109


public override void Draw()
{
  ....
  foreach (var flame in m_thrust.Flames)
  {
     if (m_thrust.CubeGrid.Physics == null)
      continue;
    ....
    if (m_landingEffect != null)
    {
      m_landingEffect.Stop(true);
      m_landingEffect = null;
      --m_landingEffectCount;
    }
    continue;                    // <=
    ....
    if (m_landingEffect == null)
      continue;
    ....
  }
}

FlashDevelop

V3020 An unconditional 'break' within a loop. AirWizard.cs 1760


private void ExtensionBrowseButton_Click(....)
{
  ....
  foreach (var existingExtension in _extensions)
  {
    if (existingExtension.ExtensionId
      == extensionId) extension = existingExtension;
  break;
  }
  ....
}

Mono

V3020 An unconditional 'throw' within a loop. System.Data.Linq-net_4_x XmlMappingSource.cs 180


public void ReadEmptyContent(XmlReader r, string name)
{
  ....
  for (r.MoveToContent();
         r.NodeType != XmlNodeType.EndElement;
           r.MoveToContent())
  {
    if (r.NamespaceURI != DbmlNamespace)
      r.Skip();
    throw UnexpectedItemError(r); // <=
  }
  ....
}

Media Portal 2

V3020 An unconditional 'break' within a loop. XmlCacheProvider.cs 433


public TvdbSeries LoadSeriesFromCache(int seriesId)
{
  ....
  foreach (TvdbEpisode e in series.Episodes.Where(....))
  {
    if (epImageFile.Contains("thumb"))
      e.Banner.LoadThumb(Image.FromFile(epImageFile));
    else
      e.Banner.LoadBanner(Image.FromFile(epImageFile));
    break;
  }
  ....
}

Unity C# reference source code

V3020 CWE-670 An unconditional 'return' within a loop. PolygonCollider2DEditor.cs 96


private void HandleDragAndDrop(Rect targetRect)
{
  ....
  foreach (....)
  {
    ....
    if (....)
    {
      ....
    }
    return;
  }
  ....
}

Infer.NET

V3020 An unconditional 'break' within a loop. Compiler DefaultFactorManager.cs 474


private static Set<StochasticityPattern>
  IntersectPatterns(IEnumerable<StochasticityPattern> patterns)
{
  Set<StochasticityPattern> result = new Set<StochasticityPattern>();
  result.AddRange(patterns);
  bool changed;
  do
  {
    int count = result.Count;
    AddIntersections(result);
    changed = (result.Count != count);
    break;
  } while (changed);
  return result;
}

Similar errors can be found in some other places:

  • V3020 An unconditional 'break' within a loop. Visualizers.Windows FactorManagerView.cs 350

FastReport

V3020 An unconditional 'return' within a loop. CodeUtils.cs 262


public static string GetExpression(FindTextArgs args, bool skipStrings)
{
  while (args.StartIndex < args.Text.Length)
  {
    if (!FindMatchingBrackets(args, skipStrings))
      break;
    return args.FoundText;
  }
  return "";
}

Telerik UI for UWP

V3020 An unconditional 'break' within a loop. NodePool.cs 189


public IEnumerable<KeyValuePair<int, List<T>>> GetUnfrozenDisplayedElements()
{
  foreach (var item in this.generatedContainers)
  {
    foreach (var pair in item.Value)
    {
      if (!pair.IsFrozen)
      {
        yield return item;
      }
      break;
    }
  }
}

LINQ to DB

V3020 An unconditional 'return' within a loop. QueryRunner.cs 751


static T ExecuteElement<T>(
  Query          query,
  IDataContext   dataContext,
  Mapper<T>      mapper,
  Expression     expression,
  object?[]?     ps,
  object?[]?     preambles)
{
  using (var runner = dataContext.GetQueryRunner(query, 0, expression, ps,
    preambles))
  {
    using (var dr = runner.ExecuteReader())
    {
      while (dr.Read())
      {
        var value = mapper.Map(dataContext, runner, dr);
        runner.RowsCount++;
        return value;
      }
    }

    return Array<T>.Empty.First();
  }
}

Orleans

V3020 An unconditional 'return' within a loop. InMemoryTransportListenerFactory.cs 117


public async ValueTask<ConnectionContext> AcceptAsync(....)
{
  if (await _acceptQueue.Reader.WaitToReadAsync(....))
  {
    while (_acceptQueue.Reader.TryRead(out var item))
    {
      var remoteConnectionContext = item.Connection;
      var localConnectionContext = ....

      item.ConnectionAcceptedTcs.TrySetResult(true);

      return localConnectionContext;                      // <=
    }
  }

  return null;
}

Orleans

V3020 An unconditional 'return' within a loop. OrleansGeneratedCodeHelper.cs 99


public static TService UnwrapService<TService>(object caller, TService service)
{
  while (   service is IServiceHolder<TService>
         && caller is TService callerService)
  {
    return callerService;
  }
  ....
}

Unicorn with delicious cookie
Nous utilisons des cookies pour améliorer votre expérience de navigation. En savoir plus
Accepter