рдпрд╣ PVS-Studio рдЯреАрдо рдореЗрдВ рдирд╡ рдирд┐рдпреЛрдЬрд┐рдд рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рдВрдкрд░рд╛ рдмрди рдЧрдИ рд╣реИ, рдЬреЛ рдХреБрдЫ рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ рдкрд╛рдП рдЧрдП рдмрдЧреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдХрд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред UWP рдХреЗ рд▓рд┐рдП Telerik UI рдЖрдЬ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реА, рд╕реА ++, рд╕реА #, рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдмрдЧ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред
PVS-Studio рдХреЛ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдпрд╛ рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбреАрдИрдП рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ;
- рд╕реЛрдирд╛рд░рдХреНрдпреВрдм рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХрд░рдХреЗ: рдирд┐рд░рдВрддрд░ рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдордВрдЪ;
- рдПрдХ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдЖрд╡реЗрджрди рдХреЗ рд░реВрдк рдореЗрдВ;
- рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрдХрд▓рди рдирд┐рдЧрд░рд╛рдиреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ;
- Azure DevOps, Jenkins, TeamCity, Travis CI рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХрд░рдХреЗ;
- рдЖрджрд┐
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рддрд╣рдд рдкрд░рд┐рдпреЛрдЬрдирд╛
UWP рдХреЗ рд▓рд┐рдП Telerik UI рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рд╡рд┐рдВрдбреЛрдЬ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо (UWP) рдХреЗ рд▓рд┐рдП UI рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╕реЛрд░реНрд╕ рдХреЛрдб
Github рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред рд╕реЗрдЯ рдореЗрдВ 20 рд╕реЗ рдЕрдзрд┐рдХ рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЪрд╛рд░реНрдЯ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ, рд╕реВрдЪрд┐рдпрд╛рдВ рдФрд░ рдЯреЗрдмрд▓ рдмрдирд╛рдиреЗ рдФрд░ рднреМрдЧреЛрд▓рд┐рдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП рджрд┐рд▓рдЪрд╕реНрдк рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯреНрд╕
PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: 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 , рдПрдХ рд╣реА рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдПрдХ рдмрдЧ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпрд╛рдБ рдПрдХ рд╣реА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИрдВ,
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); }
RaiseMinimumPropertyChangedEvent рдореЗрдердб рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЛ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐
RaiseMaximumPropertyChangedEvent рдореЗрдердб рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐
OnMaxValuePropertyChanged рд╡рд┐рдзрд┐ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ ... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдерд╛:
private static void OnMaxValuePropertyChanged( DependencyObject sender, DependencyPropertyChangedEventArgs args) { .... peer.RaiseMaximumPropertyChangedEvent((double)args.OldValue, (double)args.NewValue); .... }
рд▓реЗрдХрд┐рди рдЗрд╕ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рднреА, рдХреЛрдб рдХрдИ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рддрддреНрд╡реЛрдВ рдХреЗ рдХрд╛рд░рдг рд╕рд╛рдл рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рдкрдврд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрдиреЗрдВ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреА рд╣реИрдВ, рдЬреЛ рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЛ рдПрдХ рдХрдард┐рди рдХрд╛рдо рдмрдирд╛рддреА рд╣реИред рд╕реНрдЯреЗрдЯрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдг, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)ред
рдЗрд╕ рдЦрдВрдб рдФрд░ рдЕрдЧрд▓реЗ рдПрдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЗрдЦрдХ рд╣рд░ рдЕрдм рдФрд░ рдлрд┐рд░ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдореЗрдВ рд▓рд┐рдкреНрдд рд╣реИрдВред рдЦреИрд░, рд╣рдо рд╕рдм рдХрд░рддреЗ рд╣реИрдВ ... :)
PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: V3001 рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ 'рддрддреНрд╡ рд╣реИрдВ ред.RenderSize ==' рдмрд╛рдИрдВ рдУрд░ рдФрд░ 'рджрд╛рдИрдВ рдУрд░' рдХреЛ 'рдЦрд╛рд▓реА рдХрд░реЗрдВ' рдСрдкрд░реЗрдЯрд░ред 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- рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: 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; } .... }
рдкрд╛рда рдмреЙрдХреНрд╕ рдлрд╝реАрд▓реНрдб рдореЗрдВ рджрд░реНрдЬ рдкрд╛рда рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдкрд╣рд▓реЗ рдЪрд░рд┐рддреНрд░ рдХреА рддреБрд▓рдирд╛ '' - '' рдЕрдХреНрд╖рд░ рд╕реЗ рджреЛ рдмрд╛рд░ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рд╕рд╣реА рдирд╣реАрдВ рд▓рдЧрддрд╛ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рдкрд╛рда рд╕рддреНрдпрд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: 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 рдХрд╛ рдХреЛрдИ рдореВрд▓реНрдп рд╣реЛред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдмрдЧ рд╕рдмрдПрдХреНрд╕рдкреНрд░реЗрд╕ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рд╣рдЯрд╛рдХрд░ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрджрд┐ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдиреА рдереА) рддреЛ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдЗрд╕ рдХреЛрдб рдХреЗ рд▓реЗрдЦрдХ рд╣реА рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: V3125 'рдХрд░рдВрдЯрдЕрдЯрд▓реИрдХреНрдбрдореЗрдиреВ' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм рдЗрд╕реЗ рд╢реВрдиреНрдп рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 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 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдПрдХ рдЕрдкрд╡рд╛рдж рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЯрд╛рдЗрдкреЛ рд╣реИ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдкрд░реАрдд рдСрдкрд░реЗрд╢рди рдХрд╛ рдорддрд▓рдм рд╣реИ, '! =', рдмрд▓реНрдХрд┐ рдЕрд╢рдХреНрдд рдЪреЗрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ,
рддреЛ рдЕрдЧрд░ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрдЧреА рдпрджрд┐
CurrentAttachedMenable рдЪрд░ рд╣реИ
рдЕрд╢рдХреНрдд рдХреЗ рдмрд░рд╛рдмрд░ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА
37 рдФрд░ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рдереАрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрдЧ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЫреЛрдбрд╝ рджреВрдБрдЧрд╛ред
PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: 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 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рд╢реВрдиреНрдп рдЬрд╛рдВрдЪ рдХреЗ рдмрд┐рдирд╛ рдЖрдЧреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: 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; } .... }
рджреЛ рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рдПрдХ рд╣реА рдЪрд░
рджрд┐рдЦрд╛рддреА рд╣реИрдВ IndicicatorWhenNoData ред рджреВрд╕рд░рд╛ рдЪреЗрдХ рдирд┐рд░рд░реНрдердХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдмрдПрдХреНрд╕рдкреНрд░реЗрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреБрдЫ рдФрд░ рд╣реЛред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: 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 рд╡рд┐рдзрд┐ рдХрд╛
рд╕реВрдЪрдХрд╛рдВрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЙрдкрдпреЛрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рдореИрд╕реЗрдЬ: 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); } } }
NullReferenceException рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдЬреЛрдЦрд┐рдо рдореЗрдВ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рддрдм рд╣реЛрдЧрд╛ рдпрджрд┐ рдЗрд╡реЗрдВрдЯ рдореЗрдВ рдХреЛрдИ рд╕рджрд╕реНрдп рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЪреЗрдХ рдХреЗ рдмреАрдЪ рдореЗрдВ рдирд╣реАрдВ рдмрдЪрд╛ рд╣реИ рдФрд░ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдХреЙрд▓ рд╣реИред
рд░рд┐рдкреЛрд░реНрдЯ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА
49 рдФрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреА рд╣реИред рд╡реЗ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЖрдЦрд┐рд░рдХрд╛рд░, рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓реЗрдЦрдХ рдЙрдиреНрд╣реЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЪрд▓реЛ рдЕрдЧрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдЫреЛрдбрд╝ рджреЗрдВред
PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: V3145 рдПрдХ WeakReference рд▓рдХреНрд╖реНрдп рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд
рдбреАрд░реЗрдВрд╕ , info.Target рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдСрдмреНрдЬреЗрдХреНрдЯ 'IsAlive' рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдФрд░ 'рд▓рдХреНрд╖реНрдп' рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рдмреАрдЪ рдХрдЪрд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред FadeAnimation.cs 84
public class RadFadeAnimation : RadAnimation { .... protected internal override void ApplyAnimationValues(PlayAnimationInfo info) { .... if (info.Target.Opacity != opacity)
рдПрдХ
NullReferenceException рдХреЛ рдЙрдард╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм
info.Target.Opacity рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛
рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, рд╣рдореЗрдВ
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; } } .... }
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдЗрд╕ рдХреЛрдб рдореЗрдВ рдЬрд┐рддрдиреА рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЦреБрджрд╛рдИ рдХрд░рддреЗ рд╣реИрдВ, рдЙрддрдиреЗ рд╣реА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рд┐рдд рдореБрджреНрджреЗ рд╕рд╛рдордиреЗ рдЖрддреЗ рд╣реИрдВред рдЖрдЗрдП рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдПрдХ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ - рд╡рд╣ рдЬреЛ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдирд┐рд╖реНрдкрд╛рджрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреА
рдЕрдиреНрдп рд╢рд╛рдЦрд╛ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ, рддреЛ рднреА рдпрд╣ рдЧреИрд░-рд╢реВрдиреНрдп рд╕рдВрджрд░реНрдн рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╣рдо рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рди рд░рдЦ рд░рд╣реЗ рд╣реЛрдВ (рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) ред
рдпрд╣ рдХреИрд╕реЗ рд╕рдВрднрд╡ рд╣реИ? рдЖрдк рджреЗрдЦреЗрдВ, рдпрджрд┐
WeakReference рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ
IsAlive рдЪреЗрдХ рдФрд░
рдЯрд╛рд░рдЧреЗрдЯ рдХреЛ рдХреЙрд▓ рдХреЗ рдмреАрдЪ рдХрдЪрд░рд╛-рд╕рдВрдЧреНрд░рд╣ рд╣реИ,
рддреЛ рдпрд╣.
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
рдЪрд▓рд┐рдП рдЕрдЧрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: 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);
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐
рдкреБрд░рд╛рдиреЗ рдкреБрд░рд╛рдиреЗ рдФрд░
newItem рдХреЛ рдирд┐рдореНрди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рд╕реНрд╡реИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
return new NotifyCollectionChangedEventArgs( action, oldItem, newItem, changeIndex);
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЙрди рдЪрд░ рд╣реИрдВ рдЬреЛ рд╡рд┐рдкрд░реАрдд рдХреНрд░рдо рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред рдЖрдк рдХреЗрд╡рд▓ рдЖрд╢реНрдЪрд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВред
PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: V3102 рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕реНрдерд┐рд░ рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ 'x' рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрддреНрд╡ рддрдХ рд╕рдВрджрд┐рдЧреНрдз рдкрд╣реБрдВрдЪред 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- рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: 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 рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдкрд░
рдСрд░реНрдбрд░рдмреА рд╡рд┐рдзрд┐ рдХреЗ рдЖрд╡рд░реНрддреА рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИред рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдкрд╣рд▓реЗ рд╕реНрддрдВрднреЛрдВ рдФрд░ рдлрд┐рд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкрд╣рд▓реА рддрд░рд╣ рдХрд╛ рдкрд░рд┐рдгрд╛рдо - рдХреЙрд▓рдо рджреНрд╡рд╛рд░рд╛ - рдХрд╣реАрдВ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдЦреЛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рдХреЙрд▓рдо-рд╡рд╛рд░ рд╕реЙрд░реНрдЯ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХрдИ-рдорд╛рдкрджрдВрдб рд╕реЙрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ
ThenBy рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
this.MergeCellSelectionRegions(selectedItemsInView .OrderBy(c => c.Column.ItemInfo.LayoutInfo.Line) .ThenBy(c => c.RowItemInfo.LayoutInfo.Line));
PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: 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;
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдпрд╣ рдЕрдЬреАрдм рдкрд╛рдпрд╛ рдХрд┐ рдЗрди рджреЛрдиреЛрдВ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯреЛрдВ рдХреЗ рдмреАрдЪ рдХрд╣реАрдВ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди
рдХрд░рдВрдЯ рдлреЙрд░реНрдореВрд▓рд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╕реНрдерд┐рддрд┐, рдЪрд░ рдЕрдВрдд рдореЗрдВ
рд╢реВрдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдХреЛрдб рджреЛрд╖рдкреВрд░реНрдг рдпрд╛ рдирд┐рд░рд░реНрдердХ рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢: 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; } } }
рдмреНрд░реЗрдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ
рдЗрдл рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣
рдЬреЛрдбрд╝реЗ рдореЗрдВ рдХреНрдпрд╛ рдореВрд▓реНрдп рд╣реИ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред
Ssrorozen , рдЗрд╕рд▓рд┐рдП
foreach рдкрд╛рд╢ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░реЗрдЧрд╛ред
рдЯреЗрд▓рд░рд┐рдХ рдореЗрдВ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдмрдЧ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдм рд╣реИред рд╣рдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рдореБрдлреНрдд рдЕрд╕реНрдерд╛рдпреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рдЕрдзрд┐рдХ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХреЗрдВ рдФрд░ рджреЛрд╖реЛрдВ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХреЗрдВред рд╡реЗ рдУрдкрди-рд╕реЛрд░реНрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз
рдореБрдлреНрдд рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд▓рд╛рдЗрд╕реЗрдВрд╕рд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рд╛рд▓рд╛рдВрдХрд┐ UWP рдХреЗ рд▓рд┐рдП Telerik UI рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдлрд┐рд░ рднреА рд╡реЗ рдХрдИ рдЯрд╛рдЗрдкреЛ рд░реЗрдВрдЧрдиреЗ рджреЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ :)ред рдЙрди рд╕рднреА рдмрдЧреЛрдВ рдХреЛ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрдХрдбрд╝рд╛ рдФрд░ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рд░рдЦрдиреЗ рд╡рд╛рд▓реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ
рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдФрд░ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред