/// <summary>Checks type members.</summary> /// <param name="member">Member being checked.</param> /// <returns>A collection of problems found in <paramref name="member"/> or null.</returns> public override ProblemCollection Check(Member member) { Method method = member as Method; if (method == null) { return(null); } methodUnderCheck = method; const string RequestUriName = "Microsoft.OData.Service.RequestUriProcessor.ProcessRequestUri(System.String,Microsoft.OData.Service.IDataService)"; const string CheckResourceRightsName = "Microsoft.OData.Service.DataServiceConfiguration.CheckResourceRights(Microsoft.OData.Service.Providers.ResourceContainer,Microsoft.OData.Service.EntitySetRights)"; const string CheckResourceRightsForReadName = "Microsoft.OData.Service.DataServiceConfiguration.CheckResourceRightsForRead(Microsoft.OData.Service.Providers.ResourceContainer,System.Boolean)"; MethodCallFinder finder = new MethodCallFinder(RequestUriName, CheckResourceRightsName, CheckResourceRightsForReadName); finder.Visit(method); if (finder.Found(RequestUriName) && (!finder.Found(CheckResourceRightsForReadName) && !finder.Found(CheckResourceRightsName))) { this.Problems.Add(new Problem(GetResolution(method.FullName))); } return(Problems.Count > 0 ? Problems : null); }
/// <summary>Checks type members.</summary> /// <param name="member">Member being checked.</param> /// <returns>A collection of problems found in <paramref name="member"/> or null.</returns> public override ProblemCollection Check(Member member) { Method method = member as Method; if (method == null) { return(null); } methodUnderCheck = method; MethodCallFinder finder = new MethodCallFinder(MethodsNotAllowedOutsideMetadataPath.ToArray()); finder.Visit(method); if (!IsMethodSafeToEnumerateTypes(method.FullName)) { foreach (string metadataOnlyMethod in MethodsNotAllowedOutsideMetadataPath) { if (finder.Found(metadataOnlyMethod)) { this.Problems.Add(new Problem(GetResolution(method.FullName, metadataOnlyMethod))); } } } return(Problems.Count > 0 ? Problems : null); }
public override void VisitCatch(Microsoft.FxCop.Sdk.CatchNode catchNode) { if (catchNode.Type == FrameworkTypes.Exception) { string[] doNotHandleMethods = new string[] { "Microsoft.OData.Service.CommonUtil.IsCatchableExceptionType(System.Exception)", "Microsoft.OData.Client.CommonUtil.IsCatchableExceptionType(System.Exception)", "Microsoft.OData.Core.ExceptionUtils.IsCatchableExceptionType(System.Exception)", "Microsoft.Spatial.Util.IsCatchableExceptionType(System.Exception)", }; MethodCallFinder finder = new MethodCallFinder(true, doNotHandleMethods); finder.Visit(catchNode.Block); if(!doNotHandleMethods.Any(m => finder.Found(m))) { Problems.Add(new Problem(GetResolution(methodUnderCheck.FullName), catchNode)); } } base.VisitCatch(catchNode); }
public override void VisitCatch(Microsoft.FxCop.Sdk.CatchNode catchNode) { if (catchNode.Type == FrameworkTypes.Exception) { string[] doNotHandleMethods = new string[] { "Microsoft.OData.Service.CommonUtil.IsCatchableExceptionType(System.Exception)", "Microsoft.OData.Client.CommonUtil.IsCatchableExceptionType(System.Exception)", "Microsoft.OData.Core.ExceptionUtils.IsCatchableExceptionType(System.Exception)", "Microsoft.Spatial.Util.IsCatchableExceptionType(System.Exception)", }; MethodCallFinder finder = new MethodCallFinder(true, doNotHandleMethods); finder.Visit(catchNode.Block); if (!doNotHandleMethods.Any(m => finder.Found(m))) { Problems.Add(new Problem(GetResolution(methodUnderCheck.FullName), catchNode)); } } base.VisitCatch(catchNode); }
/// <summary>Checks type members.</summary> /// <param name="member">Member being checked.</param> /// <returns>A collection of problems found in <paramref name="member"/> or null.</returns> public override ProblemCollection Check(Member member) { Method method = member as Method; if (method == null) { return null; } methodUnderCheck = method; const string RequestUriName = "Microsoft.OData.Service.RequestUriProcessor.ProcessRequestUri(System.String,Microsoft.OData.Service.IDataService)"; const string CheckResourceRightsName = "Microsoft.OData.Service.DataServiceConfiguration.CheckResourceRights(Microsoft.OData.Service.Providers.ResourceContainer,Microsoft.OData.Service.EntitySetRights)"; const string CheckResourceRightsForReadName = "Microsoft.OData.Service.DataServiceConfiguration.CheckResourceRightsForRead(Microsoft.OData.Service.Providers.ResourceContainer,System.Boolean)"; MethodCallFinder finder = new MethodCallFinder(RequestUriName, CheckResourceRightsName, CheckResourceRightsForReadName); finder.Visit(method); if (finder.Found(RequestUriName) && (!finder.Found(CheckResourceRightsForReadName) && !finder.Found(CheckResourceRightsName))) { this.Problems.Add(new Problem(GetResolution(method.FullName))); } return Problems.Count > 0 ? Problems : null; }
/// <summary>Checks type members.</summary> /// <param name="member">Member being checked.</param> /// <returns>A collection of problems found in <paramref name="member"/> or null.</returns> public override ProblemCollection Check(Member member) { Method method = member as Method; if (method == null) { return null; } methodUnderCheck = method; MethodCallFinder finder = new MethodCallFinder(MethodsNotAllowedOutsideMetadataPath.ToArray()); finder.Visit(method); if (!IsMethodSafeToEnumerateTypes(method.FullName)) { foreach (string metadataOnlyMethod in MethodsNotAllowedOutsideMetadataPath) { if (finder.Found(metadataOnlyMethod)) { this.Problems.Add(new Problem(GetResolution(method.FullName, metadataOnlyMethod))); } } } return Problems.Count > 0 ? Problems : null; }