I have a little issue when doing the CQLinq query.
I'm trying to get the method that is obsolete with specified fullnames, which means that I want to specify specifically what methods are obsolete by FullName.
The result should pop out 5 matches which means the callMe() method which is obsolete should be included:
However, callMe() is not included when I do this query!
// <Name>Don't use obsolete types, methods or fields</Name>
warnif count > 0
let oConcreteM = new String[] {"usageAssembly.Class1.callMe()"}
let obsoleteTypes = Types.Where(t => t.IsObsolete)
let obsoleteMethods = Methods.Where(m => m.IsObsolete
&& oConcreteM.Contains(m.FullName)).ToHashSet() //TODO HERE!! (Specify callMe())
from m in JustMyCode.Methods.UsingAny(obsoleteTypes).Union(
JustMyCode.Methods.UsingAny(obsoleteMethods)).Union(
JustMyCode.Methods.UsingAny(obsoleteFields))
let obsoleteTypesUsed = obsoleteTypes.UsedBy(m)
// Optimization: MethodsCalled + Intersect() is faster than using obsoleteMethods.UsedBy()
let obsoleteMethodsUsed = m.MethodsCalled.Intersect(obsoleteMethods)
let obsoleteFieldsUsed = obsoleteFields.UsedBy(m)
select new { m,obsoleteTypesUsed, obsoleteMethodsUsed, obsoleteFieldsUsed }
With the above query, callMe() is gone, but to get 5 matches, we have to remove "&& oConcreteM.Contains(m.FullName)" code but I don't want to, what I want is to check if the name matches in the Methods Fullname in oConcreteM. Here is what the output gives me:
I hope you guys out there can help me :)