рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкрд░рдВрдкрд░рд╛ рдмрди рдЧрдИ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреАрдо рдХреА рднрд░рдкрд╛рдИ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдХрд░ рдЕрдкрдирд╛ рдХрд╛рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдмрд╛рд░, рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╕рд┐рджреНрдз рдкрд░рд┐рдпреЛрдЬрдирд╛ UWP рдХреЗ рд▓рд┐рдП Telerik UI рд╣реЛрдЧреАред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реА, рд╕реА ++, рд╕реА # рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
- рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдорд╢реАрдиреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдпрд╛ рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбреАрдИрдП рдХреЗ рд╕рд╛рде рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИ;
- SonarQube рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдирд┐рд░рдВрддрд░ рдЧреБрдгрд╡рддреНрддрд╛ рдЖрд╢реНрд╡рд╛рд╕рди рдордВрдЪ;
- рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХреАрдХреГрдд, рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ;
- рд╕рдВрдХрд▓рди рдирд┐рдЧрд░рд╛рдиреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ;
- Azure DevOps, Jenkins, TeamCity, Travis CI рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рд╕рдВрднрд╡ рд╣реИ;
- рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рдЕрдВрдХреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛
UWP рдХреЗ рд▓рд┐рдП Telerik UI рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рд╡рд┐рдВрдбреЛрдЬ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо (UWP) рдХреЗ рд▓рд┐рдП рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдШрдЯрдХреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб
Github рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред рд╕реЗрдЯ рдореЗрдВ 20 рд╕реЗ рдЕрдзрд┐рдХ рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдЧреНрд░рд╛рдлрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ, рд╕реВрдЪреА рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ, рдПрдХ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рдлреНрд░реИрдЧрдореЗрдВрдЯ рдЬреЛ рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╕рдордп рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА :
V3013 рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ 'OnMinValuePropertyChanged' рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╢рд░реАрд░ 'OnMaxValuePropertyChanged' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдХреЗ рд╕рдорддреБрд▓реНрдп рд╣реИред рд░реЗрдбрдЧреЗрдЬ .cs 446
private static void OnMinValuePropertyChanged( DependencyObject sender, DependencyPropertyChangedEventArgs args) { double newVal = (double)args.NewValue; ValidateValue(newVal); RadGauge gauge = sender as RadGauge; if (gauge.panel != null) { gauge.panel.UpdateOnMinMaxValueChange(); } if(AutomationPeer.ListenerExists(AutomationEvents.PropertyChanged)) { var peer = FrameworkElementAutomationPeer.FromElement(gauge) as RadGaugeAutomationPeer; if (peer != null) { peer.RaiseMinimumPropertyChangedEvent((double)args.OldValue, (double)args.NewValue); } } } private static void OnMaxValuePropertyChanged( DependencyObject sender, DependencyPropertyChangedEventArgs args) { double newVal = (double)args.NewValue; ValidateValue(newVal); RadGauge gauge = sender as RadGauge; if (gauge.panel != null) { gauge.panel.UpdateOnMinMaxValueChange(); } if (AutomationPeer.ListenerExists(AutomationEvents.PropertyChanged)) { var peer = FrameworkElementAutomationPeer.FromElement(gauge) as RadGaugeAutomationPeer; if (peer != null) { peer.RaiseMinimumPropertyChangedEvent((double)args.OldValue, (double)args.NewValue); } } }
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рджреЛ рддрд░реАрдХреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛,
OnMinValuePropertyChanged рдФрд░
OnMaxValuePropertyChanged , рдЬреЛ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдкрдХреНрдХрд╛ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐
OnMinValuePropertyChanged рд╡рд┐рдзрд┐ рдФрд░
OnMaxValuePropertyChanged рд╡рд┐рдзрд┐ рджреЛрдиреЛрдВ
RaiseMinimumPropertyChangedEvent рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрд░реЗрдВ ред рдЙрд╕реА рд╕рдордп,
RadGaugeAutomationPeer рд╡рд░реНрдЧ рдореЗрдВ
рдЖрдк "рдиреНрдпреВрдирддрдо" рдФрд░ "рдЕрдзрд┐рдХрддрдо" рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
internal void RaiseMaximumPropertyChangedEvent(double oldValue, double newValue) { this.RaisePropertyChangedEvent( RangeValuePatternIdentifiers.MaximumProperty, oldValue, newValue); } internal void RaiseMinimumPropertyChangedEvent(double oldValue, double newValue) { this.RaisePropertyChangedEvent( RangeValuePatternIdentifiers.MinimumProperty, oldValue, newValue); }
RaiseMaximumPropertyChangedEvent рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдореЗрдВ рдХрднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди
RaiseMinimumPropertyChangedEvent рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЛ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ,
OnMaxValuePropertyChanged рд╡рд┐рдзрд┐ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд╕рд╡рд╛рд▓ рдЙрдард╛рддрд╛ рд╣реИ ... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛:
private static void OnMaxValuePropertyChanged( DependencyObject sender, DependencyPropertyChangedEventArgs args) { .... peer.RaiseMaximumPropertyChangedEvent((double)args.OldValue, (double)args.NewValue); .... }
рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреЗ рдХрд╛рд░рдг рдХреЛрдб рдмрд╣реБрдд рд╕рд╛рдл рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдФрд░ рджреЛрд╣рд░рд╛рдпрд╛ рд▓рд╛рдЗрдиреЛрдВ рдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдг рдРрд╕реЗ рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдмрд┐рдирд╛ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджреЛрд╣рд░рд╛рдпрд╛ рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд┐рдП рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдЙрдкрд░реЛрдХреНрдд рдФрд░ рдирд┐рдореНрди рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╕реЗ, рд╣рдо рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд▓реЗрдЦрдХ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкреАрдЫреЗ рдирд╣реАрдВ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рд╕рднреА рдХреА рддрд░рд╣ ... :)
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА : V3001 рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ 'рддрддреНрд╡ рд╣реИрдВред RenderSize == vacSize' рдХреЛ рдмрд╛рдИрдВ рдФрд░ рджрд╛рдИрдВ рдУрд░ '' || рдСрдкрд░реЗрдЯрд░ред TiltInteractionEffect.cs 181
private static bool IsPointInElementBounds(FrameworkElement element, Point position) { Size emptySize = new Size(0, 0); if (element.RenderSize == emptySize || element.RenderSize == emptySize) { return false; } return new Rect(....).Contains(position); }
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ '' '' рдСрдкрд░реЗрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдФрд░ рдмрд╛рдИрдВ рдУрд░ рд╣реИ рдпрджрд┐
рдХрдерди рдПрдХ рд╣реА рд╕рдмрдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреВрд╕рд░реА рдЙрдкрд╕рдВрдЪрд╛рдИ рдХреЛ рдЕрд▓рдЧ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рд╢рд╛рдпрдж рджреВрд╕рд░реЗ
рд░реЗрдВрдбрд░рд╕рд╛рдЗрдЬрд╝ рдХреЗ рд╕реНрдерд╛рди рдкрд░
рдбрд┐рд╕реНрд╕рд╛рдЗрдбрд╕рд╛рдЗрдЬрд╝ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛ рдлрд┐рд░ рдПрдХ рджреВрд╕рд░рд╛ рдЙрдкрдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╕ рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА :
V3001 рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ 'рдкрд╛рда [0] ==' - '' рдмрд╛рдИрдВ рдУрд░ рдФрд░ рджрд╛рдИрдВ рдУрд░ '' || рдСрдкрд░реЗрдЯрд░ред RadNumericBox.cs 1057
private void ValidateText() { string text = this.textBox.Text; .... if (text.Length == 1 && (text[0] == '-' || text[0] == '-')) { if (this.isNegative) { this.isNegative = false; } else { this.SetText(string.Empty); } return; } .... }
рдпрд╣рд╛рдВ, рдбреЗрд╡рд▓рдкрд░ рдЯреЗрдХреНрд╕реНрдЯ рдмреЙрдХреНрд╕ рдлрд╝реАрд▓реНрдб рдореЗрдВ рджрд░реНрдЬ рдкрд╛рда рдХреЛ рдПрдХ рдЪрд░ рдкрд░ рд▓рд┐рдЦрддрд╛ рд╣реИред рдлрд┐рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдкрд╣рд▓реЗ рдЪрд░рд┐рддреНрд░ рдХреА рддреБрд▓рдирд╛ рдПрдХ рд╣реА рдЪрд░рд┐рддреНрд░ '-' рд╕реЗ рджреЛ рдмрд╛рд░ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдПрдХ рд╕рдВрджрд┐рдЧреНрдз рдирд┐рд░реНрдгрдп рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рда рд╕рддреНрдпрд╛рдкрди рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрдЪреНрдЫрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА : V3001 рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ 'newValue.HasValue' рдмрд╛рдИрдВ рдУрд░ рдФрд░ '&&' рдСрдкрд░реЗрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдУрд░ред DateTimePicker.cs 576
private static void OnValueChanged(object sender, DependencyPropertyChangedEventArgs args) { DateTimePicker picker = sender as DateTimePicker; var newValue = (DateTime?)args.NewValue; if (newValue.HasValue && newValue != null)
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐
newValue.HasValue рд╕рдЪ рд╣реИ рдЕрдЧрд░
newValue рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐
newValue! = Null рдПрдХ рд╣реА рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реИ, рдФрд░ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдПрдХ рд╕рдмрд╕реЗрдХреНрд╕ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реИ рдпрд╛ рдЗрд╕реЗ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рд╣реИ (рдпрджрд┐ рдХреБрдЫ рдФрд░ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП), рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА :
V3125 'CurrentAttachedMenu' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм рдЗрд╕реЗ null рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 98, 96. рдкреЙрдкрдЕрдк рд╕реЗрд╡рд╛
internal static class PopupService { .... private static void Overlay_PointerPressed(....) { if (CurrentAttachedMenu == null || !CurrentAttachedMenu.hitTestService. HitTest(e.GetCurrentPoint(CurrentAttachedMenu).Position).Any()) { CurrentAttachedMenu.IsOpen = false; HideOverlay(); } } }
рдпрджрд┐ рдЪрд░
CurrentAttachedMenu рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ
CurrentAttachedMenu.IsOpen рдПрдХ рдЕрдкрд╡рд╛рдж
рдмрдврд╝рд╛рдПрдЧрд╛ ред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд░рд▓ рдЯрд╛рдЗрдкреЛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм
рд╢реВрдиреНрдп рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд▓рдЯрд╛ рдСрдкрд░реЗрд╢рди - '=!'ред рд▓реЗрдХрд┐рди рддрдм рдЕрдкрд╡рд╛рдж рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдХ
рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╣реЛрдЧрд╛ рдпрджрд┐
CurrentAttachedMenu рдЪрд░
рд╢реВрдиреНрдп рд╣реИ ред
рдЖрдЧреЗ рдХреЛрдб рдореЗрдВ рд╕рдорд╛рди рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ
37 рдереЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдПрдХ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЕрдкреНрд░рд╛рдкреНрдп рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА :
V3019 рд╕рдВрднрд╡рддрдГ рдПрдХ рдЧрд▓рдд рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рддреБрд▓рдирд╛ 'рдХреАрд╡рд░реНрдб' рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рдХреА рдЬрд╛рддреА рд╣реИред рдЪрд░ 'рдбреНрд░реИрдЧрдбреНрд░реЙрдкреНрд▓реАрдореЗрдВрдЯ', 'рдпреВрдЖрдИрдбреНрд░реИрдЧрдбреНрд░реЙрдкреНрд▓реАрдореЗрдВрдЯ' рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред DragDrop.cs 91
internal static void StartDrag(....) { var dragDropElement = sender as IDragDropElement; .... UIElement uiDragDropElement = dragDropElement as UIElement; .... if (dragDropElement == null || !dragDropElement.CanStartDrag(trigger, initializeContext)) { return; } .... }
рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд▓реЗрдЦрдХ рдиреЗ рдЪрд░реЛрдВ рдХреЛ рдорд┐рд▓рд╛рдпрд╛ред
рдЕрд╢рдХреНрдд рдЕрд╕рдорд╛рдирддрд╛ рдХреЛ рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рд▓рд┐рдВрдХ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдореВрд▓ (
рдбреНрд░реИрдЧрдбреНрд░реЙрдкреНрд▓реАрдореЗрдВрдЯ ) рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ,
uiDragDropElement рд▓рд┐рдВрдХ рдХреЛ
рдЬрд╛рдБрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдЕрдиреБрдорд╛рди рдЗрд╕ рддрдереНрдп рд╕реЗ рднреА рдкреБрд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ
рдирд▓ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд┐рдП рдмрд┐рдирд╛
uiDragDropElement рдХрд╛ рдЖрдЧреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА :
V3030 рдЖрд╡рд░реНрддреА рдЬрд╛рдБрдЪред '! ShowIndicatorWhenNoData' рд╕реНрдерд┐рддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЗрди 139 рдореЗрдВ рд╕рддреНрдпрд╛рдкрд┐рдд рдХреА рдЧрдИ рдереАред RadDataBoundListBox.PullToRefresh.cs 141
internal void HandlePullToRefreshItemStateChanged(object item, ItemState state) { .... bool showIndicatorWhenNoData = this.ShowPullToRefreshWhenNoData; if (this.realizedItems.Count == 0 && !showIndicatorWhenNoData) { if (state == ItemState.Recycled && !showIndicatorWhenNoData) { this.StopPullToRefreshLoading(false); this.HidePullToRefreshIndicator(); } return; } .... }
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдорд┐рд▓рд╛, рдЬрд┐рд╕рдореЗрдВ рджреЛ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд, рдПрдХ рд╣реА
рд╢реЛ рдЗрдВрдбрд┐рдХреЗрдЯрд░ WhenNoData рдЪрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдВрдЪрд╛ рдЧрдпрд╛ред рд╢рд╛рдпрдж рдЪреЗрдХ рдХреЗрд╡рд▓ рдмреЗрдорд╛рдиреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдмрдПрдХреНрд╕рдкреНрд░реЗрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдмрд┐рд▓реНрдХреБрд▓ рдЕрд▓рдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА :
V3031 рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рдЬрд╛рдБрдЪ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред '' '' рдСрдкрд░реЗрдЯрд░ рд╡рд┐рдкрд░реАрдд рднрд╛рд╡реЛрдВ рд╕реЗ рдШрд┐рд░рд╛ рд╣реБрдЖ рд╣реИред рдЪрдпрдирд┐рдд рдЗрдЯреЗрдордХреЛрд▓реЗрдХреНрд╢рди .cs 77
internal class SelectedItemCollection : ObservableCollection<object> { .... private bool CanInsertItem(object item) { return this.suspendLevel == 0 && this.AllowSelect && ((!this.AllowMultipleSelect && this.Count == 0) || this.AllowMultipleSelect); } }
рдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЧрд▓рдд рдирд╣реАрдВ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣рд╛рд▓рдд рдореЗрдВ рдХреБрдЫ рдХреЛрдб рдЕрддрд┐рд░реЗрдХ рдкрд░ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХрднреА-рдХрднреА рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдПрдХ рдЪрд░ рдХреЗ рдмрдЬрд╛рдп рджреВрд╕рд░реЗ рдХреЛ рдХрдИ рдмрд╛рд░ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдк рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдереЛрдбрд╝рд╛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
internal class SelectedItemCollection : ObservableCollection<object> { .... private bool CanInsertItem(object item) { return this.suspendLevel == 0 && this.AllowSelect && (this.AllowMultipleSelect || this.Count == 0); } }
рдЕрдиреНрдп рд╕рдорд╛рди рд╕рдВрджреЗрд╢:
- V3031 рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рдЬрд╛рдВрдЪ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред '' '' рдСрдкрд░реЗрдЯрд░ рд╡рд┐рдкрд░реАрдд рднрд╛рд╡реЛрдВ рд╕реЗ рдШрд┐рд░рд╛ рд╣реБрдЖ рд╣реИред рдЪреБрдирд╛ рдЧрдпрд╛
- V3031 рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рдЬрд╛рдВрдЪ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред '' '' рдСрдкрд░реЗрдЯрд░ рд╡рд┐рдкрд░реАрдд рднрд╛рд╡реЛрдВ рд╕реЗ рдШрд┐рд░рд╛ рд╣реБрдЖ рд╣реИред StackVirtualizationStrategy.cs 49
- V3031 рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рдЬрд╛рдВрдЪ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред '' '' рдСрдкрд░реЗрдЯрд░ рд╡рд┐рдкрд░реАрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ 'рд░рд╛рдЬреНрдп == null' рдФрд░ 'State! = null' рд╕реЗ рдШрд┐рд░рд╛ рд╣реЛрддрд╛ рд╣реИред LocalFieldDeslassProviderBase.cs 24
рдХреЛрдб рдХреЗ рдПрдХ рдФрд░ рдЯреБрдХрдбрд╝реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рд▓реМрдЯрд╛рдпрд╛:
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА :
- V3137 'leftMargin' рдЪрд░ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рддрдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред DragDrop.cs 87
- V3137 'topMargin' рдЪрд░ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рддрдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред DragDrop.cs 88
internal static class DragDrop { .... double leftMargin = 0d; double topMargin = 0d; if (frameworkElementSource != null) { leftMargin = frameworkElementSource.Margin.Left;
рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐
рд▓реЗрдлреНрдЯрдорд╛рд░реНрдЬрд┐рди рдФрд░
рдЯреЙрдкрдореИрд░рд┐рди рдЪрд░ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рдж рдЗрди рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрдд рддрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╢рд╛рдпрдж рдХреЛрдИ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреЛрдб рд╕рдВрджрд┐рдЧреНрдз рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЯрд╛рдЗрдкреЛ рдпрд╛ рдЕрд╕рдлрд▓ рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╣реАрдВ рдФрд░ рдкрд╛рдИ рдЧрдИ: V3137 'currentColumnLength' рдЪрд░ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рддрдХ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред WrapLayout.cs 824
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА :
V3061 рдкреИрд░рд╛рдореАрдЯрд░ 'рдЗрдВрдбреЗрдХреНрд╕' рд╣рдореЗрд╢рд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рдзрд┐ рдирд┐рдХрд╛рдп рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред DataEngine.cs 1443
private static Tuple<Group, int> FindGroupAndItemIndex(.... int index, ....) { if (exhaustiveSearch) { .... } else { var aggregateRowGroup = rowRootGroup; var rowGroupNames = valueProvider.GetRowGroupNames(item); foreach (var groupName in rowGroupNames) { Group group; if (aggregateRowGroup.TryGetGroup(groupName, out group)) { aggregateRowGroup = group; } } index = aggregateRowGroup.IndexOf(item,
FindGroupAndItemIndex рд╡рд┐рдзрд┐
рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА :
V3083 рдЗрд╡реЗрдВрдЯ 'рдкреВрд░реНрдг' рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрдордВрддреНрд░рдг, NullReferenceException рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдШрдЯрдирд╛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред ActionBase.cs 32
internal abstract class ActionBase { .... protected virtual void OnCompleted() { this.IsCompleted = true; if (this.Completed != null) { this.Completed(this, EventArgs.Empty); } } }
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЙрд▓ рдХреА рдЕрдиреБрдорддрд┐ рджреА, рдЬрд┐рд╕рд╕реЗ
NullReetException рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдкрд╡рд╛рдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЕрдкрд╡рд╛рдж рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдмрд╢рд░реНрддреЗ рдХрд┐
рдирд▓ рдЪреЗрдХ рдФрд░ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЗ рдХреЙрд▓ рдХреЗ рдмреАрдЪ, рдпрд╣ рдИрд╡реЗрдВрдЯ рдирд╣реАрдВ рд░рд╣рддрд╛ рд╣реИред
рдХреЛрдб рдореЗрдВ рдЕрдиреНрдп
49 рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЙрди рд╕рднреА рдХреЛ рджреЗрдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рд▓реЗрдЦрдХ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗред
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА :
V3145 рдПрдХ WeakReference рд▓рдХреНрд╖реНрдп рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд dereference, info.Totget рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдСрдмреНрдЬреЗрдХреНрдЯ 'IsAlive' рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдФрд░ 'рд▓рдХреНрд╖реНрдп' рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рдмреАрдЪ рдХрдЪрд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред FadeAnimation.cs 84
public class RadFadeAnimation : RadAnimation { .... protected internal override void ApplyAnimationValues(PlayAnimationInfo info) { .... if (info.Target.Opacity != opacity)
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ
InfoTarget.Opacity рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп
NullReferenceException рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рдЦрддрд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рд░ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
PlayAnimationInfo рд╡рд░реНрдЧ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ,
рд▓рдХреНрд╖реНрдп рд╕рдВрдкрддреНрддрд┐ред
public class PlayAnimationInfo { .... private WeakReference target; .... public PlayAnimationInfo(Storyboard storyboard, RadAnimation animation, UIElement target) { .... this.target = new WeakReference(target); .... } .... public UIElement Target { get { if (this.target.IsAlive) { return this.target.Target as UIElement; } return null; } } .... }
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдЦреЛрджреЗрдВрдЧреЗ, рдЙрддрдиреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖрдкрдХреЛ рдЗрд╕рдореЗрдВ рдорд┐рд▓реЗрдВрдЧреАред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдПрдХ - рдПрдХ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХреА рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рднрд▓реЗ рд╣реА рдирд┐рд╖реНрдкрд╛рджрди,
рдпрджрд┐ рдХрдерди рдХреА рддрддреНрдХрд╛рд▓реАрди рд╢рд╛рдЦрд╛ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рд╕рдВрджрд░реНрдн рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рддрдЪреАрдд рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣рд╛рдВ рд╣рдо рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдХрд╛рд░рдг рд╕рдм рдХреБрдЫ рдЕрдиреБрдореЗрдп рдорд╛рдирддреЗ рд╣реИрдВред
рдпрд╣ рдХреИрд╕реЗ рд╕рдВрднрд╡ рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐
IsAlive рдЪреЗрдХ рдФрд░
рдЯрд╛рд░рдЧреЗрдЯ рдХреЙрд▓ рдХреЗ рдмреАрдЪ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рддрд╣рдд
WeakReference рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ
рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ ,
рддреЛ рдпрд╣.
target.Target рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣реА рд╣реИ,
IsAlive рдЪреЗрдХ
рдпрд╣ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓реА рдмрд╛рд░
рд▓рдХреНрд╖реНрдп рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрднреА рднреА рдЙрдкрд▓рдмреНрдз рд╣реИред
рд╡реИрд╕реЗ, рд╕реНрдерд┐рддрд┐
рд╡рд╛рдкрд╕реА рд╢реВрдиреНрдп рд╣реИ; рдПрдХ рдФрд░ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдирд┐рдпрдо рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ: V3080 рд╕рдВрднрд╡ рдЕрд╢рд╛рдВрддрд┐ред 'Info.Target' рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред FadeAnimation.cs 84
рдХреЛрдб рдореЗрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдХрдИ рдмрд╛рд░ рд╣реБрдИрдВ:
- V3145 рдПрдХ рдХрдордЬреЛрд░ рд╕рдВрджрд░реНрдн рд▓рдХреНрд╖реНрдп рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣рд╕реНрддрдХреНрд╖реЗрдк, рдирд┐рд░реАрдХреНрд╖рдг рд▓рдХреНрд╖реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред 'рдЯрд╛рд░рдЧреЗрдЯ' рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдПрдХреНрд╕реЗрд╕ рд╕реЗ рдкрд╣рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХрдЪрд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред MoveXAnimation.cs 80
- V3145 рдПрдХ рдХрдордЬреЛрд░ рд╕рдВрджрд░реНрдн рд▓рдХреНрд╖реНрдп рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣рд╕реНрддрдХреНрд╖реЗрдк, рдирд┐рд░реАрдХреНрд╖рдг рд▓рдХреНрд╖реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред 'рдЯрд╛рд░рдЧреЗрдЯ' рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдПрдХреНрд╕реЗрд╕ рд╕реЗ рдкрд╣рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХрдЪрд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред MoveYAnimation.cs 80
- V3145 рдПрдХ WeakReference рд▓рдХреНрд╖реНрдп рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд dereference, info.Target рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред 'рдЯрд╛рд░рдЧреЗрдЯ' рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдПрдХреНрд╕реЗрд╕ рд╕реЗ рдкрд╣рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХрдЪрд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред рдкреНрд▓реЗрдирдкреНрд░реЛрдПрдЬ рдПрдирд┐рдореАрд╢рдиред 244
- V3145 рдПрдХ рдХрдордЬреЛрд░ рд╕рдВрджрд░реНрдн рд▓рдХреНрд╖реНрдп рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдирд┐рд╡рд╛рд░рдгред рдСрдмреНрдЬреЗрдХреНрдЯ 'IsAlive' рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдФрд░ 'рд▓рдХреНрд╖реНрдп' рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рдмреАрдЪ рдХрдЪрд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред WeakEventHandler.cs 109
рдЪрд▓рд┐рдП рдЕрдЧрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рдЪреЗрддрд╛рд╡рдиреА PVS-Studio :
V3066 рд╕рдВрднрд╛рд╡рд┐рдд рдЧрд▓рдд рдЖрджреЗрд╢ 'NotifyCollectionChangedEventArgs' рдирд┐рд░реНрдорд╛рддрд╛: 'oldItem' рдФрд░ 'newItem' рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред CheckedItemsCollection.cs 470
public class CheckedItemsCollection<T> : IList<T>, INotifyCollectionChanged { .... private NotifyCollectionChangedEventArgs GenerateArgs(....) { switch (action) { case NotifyCollectionChangedAction.Add: .... case NotifyCollectionChangedAction.Remove: .... case NotifyCollectionChangedAction.Replace: return new NotifyCollectionChangedEventArgs( action, oldItem, newItem, changeIndex);
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдпрд╣
NotifyCollectionChangedEventArgs рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░
рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИ:
public NotifyCollectionChangedEventArgs( NotifyCollectionChangedAction action, object newItem, object oldItem, int index);
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ
return new NotifyCollectionChangedEventArgs( action, oldItem, newItem, changeIndex);
рдЪрд░реЛрдВ
рдкреБрд░рд╛рдиреЗ рдФрд░
рдирдП itemem ред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЕрд▓рдЧ рдХреНрд░рдо рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╣реЛрд╢рдкреВрд░реНрд╡рдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВ, рдХреЛрдИ рдХреЗрд╡рд▓ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА : рдПрдХ рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдирд┐рд░рдВрддрд░ рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ 'x' рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрддреНрд╡ рддрдХ
V3102 рд╕рдВрджрд┐рдЧреНрдз рдкрд╣реБрдВрдЪред DataEngine.cs 1718
private class ObjectArrayComparer : IEqualityComparer<object[]> { public bool Equals(object[] x, object[] y) { .... for (int i = 0; i < x.Length; i++) { if (!object.Equals(x[0], y[0]))
рд▓реВрдк рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░
x [0] рдФрд░
y [0] рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓реВрдк рдЗрд╕ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рддрддреНрд╡реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рддрддреНрд╡реЛрдВ рдХреА рддреБрд▓рдирд╛ рд╣реИред рдлрд┐рд░ рд╕рд╣реА рдХреЛрдб рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:
for (int i = 0; i < x.Length; i++) { if (!object.Equals(x[i], y[i])) { return false; } }
рдЪреЗрддрд╛рд╡рдиреА PVS-Studio :
V3123 рд╢рд╛рдпрдж '?:' рдСрдкрд░реЗрдЯрд░ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдиреНрдп рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реЗ рдХрдо рд╣реИред EditRowHostPanel.cs 35
protected override Size MeasureOverride(Size availableSize) { .... bool shouldUpdateRowHeight = editorLine == 0 || displayedElement == null ? false : displayedElement.ContainerType != typeof(DataGridGroupHeader); .... }
рдПрдХ рдЪреЗрддрд╛рд╡рдиреА '?:' рд╕рдВрдЪрд╛рд▓рдХ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИред рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ
! =, ||, ==ред рдЗрд╕рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдХ рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реИ рдФрд░ рдХреЛрдб рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдФрд░ рдХреЛрдИ рднреА рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛рдПред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдХреБрдЫ рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ :) рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реИ - рдХреЛрд╖реНрдардХ рдпрд╛
рдпрджрд┐ рдХрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА :
V3078 'рд╕реЙрд░реНрдЯрдмрд╛рдп' рдкрджреНрдзрддрд┐ рдХреЗ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдореВрд▓ рдЫрдБрдЯрд╛рдИ рдХреНрд░рдо рдЦреЛ рдЬрд╛рдПрдЧрд╛ред рдореВрд▓ рдЫрдВрдЯрд╛рдИ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 'рддрдм' рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред GridModel.Selection.cs 107
internal partial class GridModel { private void BuildCellSelectionRegions(....) { .... this.MergeCellSelectionRegions(selectedItemsInView .OrderBy(c => c.Column.ItemInfo.LayoutInfo.Line) .OrderBy(c => c.RowItemInfo.LayoutInfo.Line)); } }
рддреНрд░реБрдЯрд┐
IOrderedEnumerable рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП
рдСрд░реНрдбрд░рдмрд╛рдп рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдпрд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдкрд╣рд▓реЗ рдХреЙрд▓рдо, рдлрд┐рд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрдВрдХреНрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЫрдБрдЯрд╛рдИ рдХреЗ рд╕рдордп, рд╕реНрддрдВрднреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд┐рдЫрд▓реА рдЫрдБрдЯрд╛рдИ рдХреЛ рдХрд╣реАрдВ рднреА рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрддрдВрднреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЫрдВрдЯрд╛рдИ рди рдХрд░рдиреЗ рдФрд░ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдХрдИ рдорд╛рдирджрдВрдбреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддрдм рддрдм рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрд░реЗрдВ :
this.MergeCellSelectionRegions(selectedItemsInView .OrderBy(c => c.Column.ItemInfo.LayoutInfo.Line) .ThenBy(c => c.RowItemInfo.LayoutInfo.Line));
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА :
V3008 'currentColumnLength' рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 791, 785. WrapLayout.cs 791
private void OnAvailableLengthChanged(double oldValue, double newValue) { .... if (....) { if (currentColumnLength > 0) { var paddingValue = Math.Max(0, newValue - currentColumnLength); this.paddingRenderInfo.Add(paddingValue); currentColumnLength = 0;
рдпрд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд┐рдЧреНрдз рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐
CurrentColumnLength рдЪрд░ рдХреЛ рджреЛ рдмрд╛рд░ рдПрдХ рдореВрд▓реНрдп рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛ред рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рдмреАрдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд░реНрдд рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣ рдЪрд░ рдЕрдВрддрддрдГ рд╢реВрдиреНрдп рд╣реЛрдЧрд╛ред рдпрд╣ рдХреЛрдб рдЧрд▓рдд рдпрд╛ рдирд┐рд░рд░реНрдердХ рд╣реИред
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА :
V3127 рджреЛ рд╕рдорд╛рди рдХреЛрдб рдЕрдВрд╢ рдкрд╛рдП рдЧрдПред рд╢рд╛рдпрдж, рдпрд╣ рдПрдХ рдЯрд╛рдЗрдкреЛ рд╣реИ рдФрд░ 'рднрд░рд╛рдИрдХреЛрдиреНрдЯреЗрдХрд░' рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ 'рднрд░реЗрдЖрдИрдХреЛрдирдЯреЗрдирд░' рд░реЗрдбрд░реИрдЯрдЗрдореЗрдЯреНрд╕ рдХреЗ рдмрдЬрд╛рдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред 240
public class RadRatingItem : RadContentControl { .... protected override void OnApplyTemplate() { .... this.filledIconContainer = this.GetTemplateChild( "FilledIconContainer") as Border; if (this.filledIconContainer == null)
рдЯрд╛рдЗрдкреЛ рдХреЗ рдХрд╛рд░рдг, рдХреЛрдб рдореЗрдВ рджреЛ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреАрдВред рдЙрддреНрдкрдиреНрди рдЕрдкрд╡рд╛рдж рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рджреВрд╕рд░реА рд╕реНрдерд┐рддрд┐ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП:
if (this.emptyIconContainer == null) { throw new MissingTemplatePartException( "EmptyIconContainer", typeof(Border)); }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА :
V3020 рдПрдХ рд▓реВрдк рдХреЗ рднреАрддрд░ рдмрд┐рдирд╛ рд╢рд░реНрдд 'рдмреНрд░реЗрдХ'ред 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; } } }
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдпрд╣рд╛рдБ
рдмреНрд░реЗрдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ
рдЗрдл рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред
рдЬреЛрдбрд╝реА рдХреЗ рдореВрд▓реНрдп рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛
рдмреНрд░реЗрдХ рдХреЛ рдЕрдВрдЬрд╛рдо рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдлрд╝реЙрд░реНрдЬрд╝реЗрди рдФрд░ рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ
рдлрд╝реЙрд░реЗрд╕реНрдЯ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред рддрд╛рдХрд┐ Telerik Developers рдПрдХ рдЕрдзрд┐рдХ рдЧрд╣рди рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рджреЛрд╖реЛрдВ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХреЗрдВ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рдХрд▓реНрдк рдХреЗ
рдореБрдлреНрдд рдЙрдкрдпреЛрдЧ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рд╛рд▓рд╛рдВрдХрд┐ UWP рдХреЗ рд▓рд┐рдП Telerik UI рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛, рдпрд╣ рдмрд┐рдирд╛ рдЯрд╛рдЗрдкреЛрд╕ рдХреЗ рдирд╣реАрдВ рдерд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИ :)ред рдЗрди рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдПрдХ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛
рд╕рд╣реА рдФрд░ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдПрдХрд╛рддреЗрд░рд┐рдирд╛ рдирд┐рдХрд┐рдлреЛрд░реЛрд╡рд╛ред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рдХреЗ рд▓рд┐рдП рдЯреЗрд▓рд┐рдХ рдпреВрдЖрдИ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ ред