示例#1
0
        private static void SetupInvocationTracker(InvocationTracker <SyntaxKind> tracker, TrackerInput input)
        {
            const int parameterCount = 2;

            tracker.Track(input,
                          tracker.MatchMethod(new MemberDescriptor(KnownType.System_Collections_Generic_IDictionary_TKey_TValue, "Add")),
                          tracker.MethodHasParameters(parameterCount),
                          c => IsFirstArgumentAccessControlAllowOrigin((InvocationExpressionSyntax)c.Node, c.SemanticModel) &&
                          IsSecondArgumentStarString((InvocationExpressionSyntax)c.Node, c.SemanticModel),
                          tracker.IsIHeadersDictionary());

            tracker.Track(input,
                          tracker.MatchMethod(new MemberDescriptor(KnownType.Microsoft_AspNetCore_Http_HeaderDictionaryExtensions, "Append"),
                                              new MemberDescriptor(KnownType.System_Web_HttpResponse, "AppendHeader"),
                                              new MemberDescriptor(KnownType.System_Web_HttpResponseBase, "AddHeader"),
                                              new MemberDescriptor(KnownType.System_Collections_Specialized_NameValueCollection, "Add"),
                                              new MemberDescriptor(KnownType.System_Net_Http_Headers_HttpHeaders, "Add")),
                          tracker.MethodHasParameters(parameterCount),
                          c => IsFirstArgumentAccessControlAllowOrigin((InvocationExpressionSyntax)c.Node, c.SemanticModel) &&
                          IsSecondArgumentStarString((InvocationExpressionSyntax)c.Node, c.SemanticModel));

            tracker.Track(input,
                          tracker.MatchMethod(new MemberDescriptor(KnownType.Microsoft_AspNetCore_Cors_Infrastructure_CorsPolicyBuilder, "WithOrigins")),
                          c => ContainsStar(((InvocationExpressionSyntax)c.Node).ArgumentList.Arguments.Select(a => a.Expression), c.SemanticModel));

            tracker.Track(input, tracker.MatchMethod(new MemberDescriptor(KnownType.Microsoft_AspNetCore_Cors_Infrastructure_CorsPolicyBuilder, "AllowAnyOrigin")));
        }
        protected override void Initialize(SonarAnalysisContext context)
        {
            InvocationTracker.Track(context,
                                    InvocationTracker.MatchMethod(new MemberDescriptor(KnownType.System_Diagnostics_Process, "Start")),
                                    Conditions.ExceptWhen(
                                        InvocationTracker.ArgumentAtIndexIs(0, KnownType.System_Diagnostics_ProcessStartInfo)),
                                    InvocationTracker.MethodHasParameters());

            PropertyAccessTracker.Track(context,
                                        PropertyAccessTracker.MatchProperty(
                                            new MemberDescriptor(KnownType.System_Diagnostics_ProcessStartInfo, "FileName")),
                                        PropertyAccessTracker.MatchSetter());

            ObjectCreationTracker.Track(context,
                                        ObjectCreationTracker.MatchConstructor(KnownType.System_Diagnostics_ProcessStartInfo),
                                        ObjectCreationTracker.ArgumentAtIndexIs(0, KnownType.System_String));
        }