Esempio n. 1
0
            public override void VisitAssignmentExpression(AssignmentExpressionSyntax node)
            {
                if (node.Left != null)
                {
                    var walker = new EventArgsRowWalker(_semanticModel, _pxContext);
                    node.Left.Accept(walker);
                    bool found = walker.Success;

                    if (!found)
                    {
                        _variableMemberAccessWalker.Reset();
                        node.Left.Accept(_variableMemberAccessWalker);
                        found = _variableMemberAccessWalker.Success;
                    }

                    if (found && _analysisMode == RowChangesAnalysisMode.ChangesForbiddenForRowFromEventArgs)
                    {
                        _context.ReportDiagnostic(Diagnostic.Create(Descriptors.PX1047_RowChangesInEventHandlersForbiddenForArgs,
                                                                    node.GetLocation(), _messageArgs));
                    }
                    else if (!found && _analysisMode == RowChangesAnalysisMode.ChangesAllowedOnlyForRowFromEventArgs)
                    {
                        _dacInstanceAccessWalker.Reset();
                        node.Left.Accept(_dacInstanceAccessWalker);

                        if (_dacInstanceAccessWalker.Success)
                        {
                            _context.ReportDiagnostic(Diagnostic.Create(Descriptors.PX1048_RowChangesInEventHandlersAllowedForArgsOnly,
                                                                        node.GetLocation(), _messageArgs));
                        }
                    }
                }
            }
Esempio n. 2
0
            public override void VisitAssignmentExpression(AssignmentExpressionSyntax node)
            {
                if (node.Left != null)
                {
                    var walker = new EventArgsRowWalker(_semanticModel, _pxContext);
                    node.Left.Accept(walker);
                    bool found = walker.Success;

                    if (!found)
                    {
                        _variableMemberAccessWalker.Reset();
                        node.Left.Accept(_variableMemberAccessWalker);
                        found = _variableMemberAccessWalker.Success;
                    }

                    if (found)
                    {
                        _context.ReportDiagnostic(Diagnostic.Create(Descriptors.PX1047_RowChangesInEventHandlers,
                                                                    node.GetLocation(), _messageArgs));
                    }
                }
            }