Cercando di trovare tutti i metodi che non hanno una dipendenza diretta da Microsoft.SharePoint.* O System.Web.Ui.*

StackOverflow https://stackoverflow.com/questions/8400137

Domanda

Sto cercando di scrivere una query CQL in Visual NDEPER per trovare tutti i tipi e i metodi che non dipendono direttamente da alcun tipo da un elenco di spazi dei nomi.

La query che ho costruito finora è questa:

SELECT METHODS
WHERE 
   !IsDirectlyUsing "NAMESPACE:Microsoft.*"
   AND !IsDirectlyUsing "NAMESPACE:System.Web.UI.*"
   AND !FullNameLike ".Test"
   AND !HasAttribute "System.CodeDom.Compiler.GeneratedCodeAttribute"
   AND FullNameLike "OurOwnNameSpaceHere"

Ma questo restituisce ancora metodi che accettano uno SPWeb come parametro, quindi devo perdere qualcosa.

Quindi voglio:

  • Escludi qualsiasi metodo che dipende da qualsiasi tipo all'interno di qualsiasi gruppo referenziato che si trova all'interno di uno spazio dei nomi Microsoft.*.

  • Escludi qualsiasi metodo che dipende da qualsiasi tipo all'interno di qualsiasi gruppo referenziato che si trova all'interno di un sistema.web.ui.* Spazio nomi.

  • escludere qualsiasi metodo/tipo generato

  • Escludi qualsiasi metodo che faccia parte di un progetto che ha test nello spazio dei nomi.

Metodi di esempio che cadono sono:

public void SomeMethod(SPWeb web)
{
    ... // other code here
    SomeOtherMethod(web);
    ...
}
È stato utile?

Soluzione

Puoi provare quanto segue query di codice su LINQ (query CQLINQ):

let dontUseTypes = Namespaces
                   .WithNameWildcardMatchIn("Microsoft.*", "System.Web.UI.*")
                   .ChildTypes()

from m in JustMyCode.Methods.Except(Methods.UsingAny(dontUseTypes))
where !m.ParentAssembly.Name.ToLower().Contains("test")
select m

La condizione escludere qualsiasi metodo/tipo generato è gestito dal fatto che Usiamo JustMyCode.

Quindi, quali metodi o campi di SPWeb vengono ancora utilizzati dal metodo ancora abbinato? NDEpend può rilevare che un metodo utilizza un tipo solo se utilizza un membro del tipo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top