Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top

Вебинар: Использование статических анализаторов кода при разработке безопасного ПО - 19.12

>
>
>
Примеры ошибок, обнаруженных с помощью …

Примеры ошибок, обнаруженных с помощью диагностики V3005

V3005. The 'x' variable is assigned to itself.


Umbraco

V3005 The 'member.UpdateDate' variable is assigned to itself. MemberService.cs 114


public void SavePassword(IMember member, string password)
{
  ....
  member.RawPasswordValue = result.RawPasswordValue;
  member.LastPasswordChangeDate = result.LastPasswordChangeDate;
  member.UpdateDate = member.UpdateDate;
}

Similar errors can be found in some other places:

  • V3005 The 'user.UpdateDate' variable is assigned to itself. UserService.cs 269

SharpDevelop

V3005 The 'linearGradientBrush.GradientStops' variable is assigned to itself. BrushEditor.cs 120


void DetermineCurrentKind()
{
  ....
  else if (Brush is LinearGradientBrush) {
    linearGradientBrush = Brush as LinearGradientBrush;
    radialGradientBrush.GradientStops =
      linearGradientBrush.GradientStops;
    CurrentKind = BrushEditorKind.Linear;
  }
  else if (Brush is RadialGradientBrush) {
    radialGradientBrush = Brush as RadialGradientBrush;
    linearGradientBrush.GradientStops =      // <=
      linearGradientBrush.GradientStops;     // <=
    CurrentKind = BrushEditorKind.Radial;
  }
}

Most likely this is what should be written here: linearGradientBrush.GradientStops = radialGradientBrush.GradientStops;


SharpDevelop

V3005 The 'this.WhiteSpaceText' variable is assigned to itself. WhitespaceNode.cs 65


public WhitespaceNode(string whiteSpaceText,
                      TextLocation startLocation)
{
  this.WhiteSpaceText = WhiteSpaceText;
  this.startLocation = startLocation;
}

Lower case 'w' should have been used instead of capital 'W'. Correct variant: this.WhiteSpaceText = whiteSpaceText;


MonoDevelop

V3005 The 'MacroCharacter' variable is assigned to itself. Mono.TextEditor ViMacro.cs 57


public ViMacro (char macroCharacter) {
  MacroCharacter = MacroCharacter;
}

public char MacroCharacter {get; set;}

MonoDevelop

V3005 The 'MarkCharacter' variable is assigned to itself. Mono.TextEditor ViMark.cs 45


public ViMark (char markCharacter) {
  MarkCharacter = MarkCharacter;
}

public char MarkCharacter {get; set;}

MonoDevelop

V3005 The 'this.WhiteSpaceText' variable is assigned to itself. ICSharpCode.NRefactory.CSharp WhitespaceNode.cs 65


public WhitespaceNode(string whiteSpaceText,
                      TextLocation startLocation)
{
  this.WhiteSpaceText = WhiteSpaceText;
  this.startLocation = startLocation;
}

public string WhiteSpaceText { get; set; }

MonoDevelop

V3005 The 'iconMargin.IsVisible' variable is assigned to itself. MonoDevelop.HexEditor HexEditor.cs 241


void OptionsChanged (object sender, EventArgs e)
{
  gutterMargin.IsVisible = Options.ShowLineNumberMargin;
  iconMargin.IsVisible = iconMargin.IsVisible;
  ....
}

public bool IsVisible { get; set; }

IronPython and IronRuby

V3005 The 'd["latin1"]' variable is assigned to itself. StringOps.cs 1905


private static Dictionary<string, EncodingInfoWrapper>
  MakeCodecsDict() {
  ....
  switch (normalizedName) {
    case "iso_8859_1":
      d["8859"] = d["latin_1"] = d["latin1"] =
      d["iso 8859_1"] = d["iso8859_1"] = d["cp819"] =
      d["819"] = d["latin"] = d["latin1"] = d["l1"] =
      encs[i];
      break;
  ....
}

.NET Compiler Platform ("Roslyn")

V3005 The 'Name' variable is assigned to itself. AsynchronousOperationListener.DiagnosticAsyncToken.cs 32


public DiagnosticAsyncToken(
  AsynchronousOperationListener listener,
  string name,
  object tag,
  string filePath,
  int lineNumber)
  : base(listener)
{
  Name = Name;
  Tag = tag;
  FilePath = filePath;
  LineNumber = lineNumber;
  StackTrace = PortableShim.StackTrace.GetString();
}

Sony ATF

V3005 The 'ProgressError' variable is assigned to itself. Atf.Gui.Wpf.vs2010 StatusService.cs 24


public ProgressCompleteEventArgs(Exception progressError,
                                 object progressResult,
                                 bool cancelled)
{
  ProgressError = ProgressError;
  ProgressResult = progressResult;
  Cancelled = cancelled;
}

Sony ATF

V3005 The 'window.Left' variable is assigned to itself. Atf.Gui.Wpf.vs2010 DockPanel.cs 706


public double Left { get; set; }

public void ApplyLayout(XmlReader reader)
{
  ....
  FloatingWindow window = new FloatingWindow(
                                this, reader.ReadSubtree());
  ....
  window.Left = window.Left;
  window.Top = window.Top;
  ....
}

Sony ATF

V3005 The 'window.Top' variable is assigned to itself. Atf.Gui.Wpf.vs2010 DockPanel.cs 707


public double Top  { get; set; }

public void ApplyLayout(XmlReader reader)
{
  ....
  FloatingWindow window = new FloatingWindow(
                                this, reader.ReadSubtree());
  ....
  window.Left = window.Left;
  window.Top = window.Top;
  ....
}

Xenko

V3005 The 'hashCode' variable is assigned to itself. SiliconStudio.Xenko ParameterKeys.cs 346


public ParameterComposedKey(ParameterKey key,
                            string name,
                            int indexer)
{
  Key = key;
  Name = name;
  Indexer = indexer;

  unchecked
  {
    hashCode = hashCode = Key.GetHashCode();
    hashCode = (hashCode * 397) ^ Name.GetHashCode();
    hashCode = (hashCode * 397) ^ Indexer;
  }
}

WPF samples by Microsoft

V3005 The 'clipboardInfo.Text' variable is assigned to itself. MainWindow.cs 204


private void DumpAllClipboardContentsInternal()
{
  ....
  if (dataObject == null)
  {
    clipboardInfo.Text =
      clipboardInfo.Text =
        "Can't access clipboard now!
          \n\nPlease click Dump All Clipboard
              Contents button again.";
  }
  else
  {
     ....
}

Old NASA World Wind (C#)

V3005 The 'num1' variable is assigned to itself. PlaceFinder.cs 2011


public static bool SearchForAddress(....)
{
  double num1;
  long2 = num1 = 0;
  long1 = num1 = num1;  // <=
  lat2  = num1 = num1;  // <=
  lat1 = num1;
  ....
}

Similar errors can be found in some other places:

  • V3005 The 'num1' variable is assigned to itself. PlaceFinder.cs 2012

MSBuild

V3005 The '_nextProjectId' variable is assigned to itself. LoggingService.cs 325


public int NextProjectId
{
  get
  {
    lock (_lockObject)
    {
      _nextProjectId = _nextProjectId += MaxCPUCount + 2;  // <=
      return _nextProjectId;
    }
  }
}

PascalABC.NET

V3005 The 'miGenerateRealization.Visible' variable is assigned to itself. VisualPascalABCNET OptionsManager.cs 342


public void UpdateUserOptions()
{
  ....
  tsViewIntellisensePanel.Visible =
  .... =
  miGenerateRealization.Visible =
  miGenerateRealization.Visible =
  ....;
}

Similar errors can be found in some other places:

  • V3005 The 'visitNode' variable is assigned to itself. SyntaxVisitors SimplePrettyPrinterVisitor.cs 106

PascalABC.NET

V3005 The 'e' variable is assigned to itself. generics.cs 430


public static type_node determine_type(....)
{
  ....
  try
  {
    return ....;
  }
  catch(Exception e)
  {
    e = e;
  }
  ....
}

SubtitleEdit

V3005 The 'positionInfo' variable is assigned to itself. WebVTT.cs 79


internal static string GetPositionInfoFromAssTag(Paragraph p)
{
  ....
  if (!string.IsNullOrEmpty(line))
  {
    if (positionInfo == null)
      positionInfo = " line:" + line;
    else
      positionInfo = positionInfo += " line:" + line;
  }
  ....
}

Azure PowerShell

V3005 The 'this.VM.OSProfile.WindowsConfiguration.ProvisionVMAgent' variable is assigned to itself. SetAzureVMOperatingSystemCommand.cs 298


public override void ExecuteCmdlet()
{
  ....
  // OS Profile
  this.VM.OSProfile.WindowsConfiguration.ProvisionVMAgent =
    this.VM.OSProfile.WindowsConfiguration.ProvisionVMAgent;
  ....
}

[JsonProperty(PropertyName = "provisionVMAgent")]
public bool? ProvisionVMAgent { get; set; }

Azure PowerShell

V3005 The 'this.LastHeartbeat' variable is assigned to itself. PSFabricDetails.cs 804


public ASRInMageAzureV2SpecificRPIDetails(
  InMageAzureV2ReplicationDetails details)
{
  this.LastHeartbeat = this.LastHeartbeat;  // <=
  this.RecoveryAvailabilitySetId = details.RecoveryAvailabilitySetId;
  this.AgentVersion = details.AgentVersion;
  this.DiscoveryType = details.DiscoveryType;
  ....
}

public DateTime? LastHeartbeat { get; set; }

public class InMageAzureV2ReplicationDetails :
  ReplicationProviderSpecificSettings
{
  ....
  [JsonProperty(PropertyName = "lastHeartbeat")]
  public DateTime? LastHeartbeat { get; set; }
  ....
}

Similar errors can be found in some other places:

  • V3005 The 'this.ResourceGroupName' variable is assigned to itself. RemoveAzureRmExpressRouteConnectionCommand.cs 84
  • V3005 The 'this.ExpressRouteGatewayName' variable is assigned to itself. RemoveAzureRmExpressRouteConnectionCommand.cs 85
  • V3005 The 'this.Name' variable is assigned to itself. RemoveAzureRmExpressRouteConnectionCommand.cs 86

OpenCvSharp

V3005 The 'optimumChannels[PixelFormats.Indexed1]' variable is assigned to itself. WriteableBitmapConverter.cs 22


static WriteableBitmapConverter()
{
  optimumChannels = new Dictionary
                    <PixelFormat, int>();
  optimumChannels[PixelFormats.Indexed1] =         // <=
  optimumChannels[PixelFormats.Indexed8] =         // <=
  optimumChannels[PixelFormats.Gray2] =
  optimumChannels[PixelFormats.Gray4] =
  optimumChannels[PixelFormats.Gray8] =
  optimumChannels[PixelFormats.Gray16] =
  optimumChannels[PixelFormats.Gray32Float] =
  optimumChannels[PixelFormats.Indexed1] =         // <=
  optimumChannels[PixelFormats.Indexed2] =
  optimumChannels[PixelFormats.Indexed4] =
  optimumChannels[PixelFormats.Indexed8] =         // <=
  ....
  optimumTypes = new Dictionary
                 <PixelFormat, MatType>();
  optimumTypes[PixelFormats.Indexed1] =            // <=
  optimumTypes[PixelFormats.Indexed8] =            // <=
  optimumTypes[PixelFormats.Gray2] =
  optimumTypes[PixelFormats.Gray4] =
  optimumTypes[PixelFormats.Gray8] =
  optimumTypes[PixelFormats.Indexed1] =            // <=
  optimumTypes[PixelFormats.Indexed2] =
  optimumTypes[PixelFormats.Indexed4] =
  optimumTypes[PixelFormats.Indexed8] =            // <=
  optimumTypes[PixelFormats.BlackWhite] =
  ....
}
....
public static class PixelFormats
{
  ....
  public static PixelFormat Indexed8 { get; }
  ....
  public static PixelFormat Indexed1 { get; }
  ....
}

Similar errors can be found in some other places:

  • V3005 The 'optimumChannels[PixelFormats.Indexed8]' variable is assigned to itself. WriteableBitmapConverter.cs 23
  • V3005 The 'optimumTypes[PixelFormats.Indexed1]' variable is assigned to itself. WriteableBitmapConverter.cs 50
  • V3005 The 'optimumTypes[PixelFormats.Indexed8]' variable is assigned to itself. WriteableBitmapConverter.cs 51

Emby

V3005 The '_validProviderIds' variable is assigned to itself. BaseNfoParser.cs 77


private Dictionary<string, string> _validProviderIds;
....
public void Fetch(....)
{
  ....
  _validProviderIds = _validProviderIds = new Dictionary<....>(....);
  ....
}

Chocolatey

V3005 The 'Provider' variable is assigned to itself. CrytpoHashProviderSpecs.cs 38


public abstract class CrytpoHashProviderSpecsBase : TinySpec
{
  ....
  protected CryptoHashProvider Provider;
  ....
  public override void Context()
  {
    Provider = Provider = new CryptoHashProvider(FileSystem.Object);
  }
}

QuantConnect Lean

V3005 The '_factory' variable is assigned to itself. ZipEntryNameSubscriptionDataSourceReader.cs 50


private readonly SubscriptionDataConfig _config;
private readonly DateTime _date;
private readonly bool _isLiveMode;
private readonly BaseData _factory;

public ZipEntryNameSubscriptionDataSourceReader(
    SubscriptionDataConfig config,
    DateTime date,
    bool isLiveMode)
{
  _config = config;
  _date = date;
  _isLiveMode = isLiveMode;
  _factory = _factory = config.GetBaseDataInstance(); // <=
}

DotNetNuke

V3005 The 'comp.Value.Description' variable is assigned to itself. SitemapBuilder.cs 231


private static void LoadProviders()
{
  ....
  foreach (KeyValuePair<string, SitemapProvider> comp in
             ComponentFactory.GetComponents<SitemapProvider>())
  {
    comp.Value.Name = comp.Key;
    comp.Value.Description = comp.Value.Description;
    _providers.Add(comp.Value);
  }
  ....
}

DotNetNuke

V3005 The 'this.SuppressTokenReplace' variable is assigned to itself. SendTokenizedBulkEmail.cs 109


public SendTokenizedBulkEmail(List<string> addressedRoles,
                              List<UserInfo> addressedUsers,
                              bool removeDuplicates,
                              string subject,
                              string body)
{
  this.ReportRecipients = true;
  this.AddressMethod = AddressMethods.Send_TO;
  this.BodyFormat = MailFormat.Text;
  this.Priority = MailPriority.Normal;
  this._addressedRoles = addressedRoles;
  this._addressedUsers = addressedUsers;
  this.RemoveDuplicates = removeDuplicates;
  this.Subject = subject;
  this.Body = body;
  this.SuppressTokenReplace = this.SuppressTokenReplace; // <=
  this.Initialize();
}

Barotrauma

V3005 The 'arrowIcon.PressedColor' variable is assigned to itself. ChatBox.cs 164


public ChatBox(GUIComponent parent, bool isSinglePlayer)
{
  ....
  arrowIcon = new GUIImage(....)
  {
    Color = new Color(51, 59, 46)
  };
  arrowIcon.HoverColor = arrowIcon.PressedColor =
  arrowIcon.PressedColor = arrowIcon.Color;
  ....
}

Barotrauma

V3005 The 'Penetration' variable is assigned to itself. Attack.cs 324


public Attack(float damage,
              float bleedingDamage,
              float burnDamage,
              float structureDamage,
              float itemDamage,
              float range = 0.0f,
              float penetration = 0f)
{
   ....
   Range = range;
   DamageRange = range;
   StructureDamage = LevelWallDamage = structureDamage;
   ItemDamage = itemDamage;
   Penetration = Penetration;                // <=
}

AvalonStudio

V3005 The 'RightMargin' variable is assigned to itself. VirtualTerminalController.cs 1446


public void SetCursorPosition(int column, int row)
{
  ....
  if (LeftAndRightMarginEnabled)
  {
    if (CursorState.OriginMode && CursorState.CurrentColumn < LeftMargin)
      CursorState.CurrentColumn = LeftMargin;
    if (CursorState.CurrentColumn >= RightMargin)
      RightMargin = RightMargin;                   // <=
  }
  ....
}

Discord.NET

V3005 The 'After' variable is assigned to itself. ThreadUpdateAuditLogData.cs 18


public class ThreadUpdateAuditLogData : IAuditLogData
{
  private ThreadUpdateAuditLogData(IThreadChannel thread,
                                   ThreadType type,
                                   ThreadInfo before,
                                   ThreadInfo after)
  {
    Thread = thread;
    ThreadType = type;
    Before = before;
    After = After;
  }
  ....
}

GrandNode

V3005 The 'model.MetaKeywords' variable is assigned to itself. GetLessonHandler.cs 37


public async Task<LessonModel> Handle(....)
{
  var model = new LessonModel();
  var modelCourse = request.Course.ToModel(request.Language);

  model.Id = request.Lesson.Id;
  model.CourseId = modelCourse.Id;
  model.CourseDescription = modelCourse.Description;
  model.CourseName = modelCourse.Name;
  model.CourseSeName = modelCourse.SeName;
  model.MetaDescription = modelCourse.MetaDescription;
  model.MetaKeywords = model.MetaKeywords;                   // <=
  model.MetaTitle = model.MetaTitle;                         // <=
  model.Name = request.Lesson.Name;
  model.ShortDescription = request.Lesson.ShortDescription;
  model.Description = request.Lesson.Description;
  model.UserFields = request.Lesson.UserFields;
  ....
}

nopCommerce

V3005 The 'priceModel.OldPriceValue' variable is assigned to itself. ProductModelFactory.cs 503


protected virtual async Task
            PrepareSimpleProductOverviewPriceModelAsync(Product product,
                                                        .... priceModel)
{
  ....

  if (product.IsRental)
  {
    //rental product
    priceModel.OldPrice = await _priceFormatter
                                  .FormatRentalProductPeriodAsync(....);

    priceModel.OldPriceValue = priceModel.OldPriceValue;

    priceModel.Price = await _priceFormatter
                               .FormatRentalProductPeriodAsync(....);

    priceModel.PriceValue = priceModel.PriceValue;
  }

  ....
}

Similar errors can be found in some other places:

  • V3005 The 'priceModel.PriceValue' variable is assigned to itself. ProductModelFactory.cs 505

TowerDefense-GameFramework-Demo

V3005 The 'transform.localPosition' variable is assigned to itself. Item.cs 150


public void OnRecycle()
{
  transform.SetParent(initRoot, false);
  transform.localPosition = transform.localPosition;
  transform.eulerAngles = initRotation;
  transform.localScale = initScale;
  ....
}

Unity C# reference source code

V3005 The 'this.defaultHasBeenPrevented' variable is assigned to itself. EventDebuggerTrace.cs 42


public bool propagationHasStopped { get; }
public bool immediatePropagationHasStopped { get; }
public bool defaultHasBeenPrevented { get; }

public EventDebuggerCallTrace(IPanel panel, EventBase evt,
                              int cbHashCode, string cbName,
                              bool propagationHasStopped,
                              bool immediatePropagationHasStopped,
                              long duration,
                              IEventHandler mouseCapture): base(....)
{
  this.callbackHashCode = cbHashCode;
  this.callbackName = cbName;
  this.propagationHasStopped = propagationHasStopped;
  this.immediatePropagationHasStopped = immediatePropagationHasStopped;
  this.defaultHasBeenPrevented = defaultHasBeenPrevented;
}

close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

Шаг 2
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности
close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS‑Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок:

  • Промоакции
  • Оповещения
  • Спам