2013-07-19 1 views
1

J'ai ce peu de CQL:Pourquoi NDepend affiche-t-il des erreurs CQL lorsqu'il est exécuté sur la ligne de commande mais pas à partir de l'interface graphique?

// <Name>A stateless class or structure might be turned into a static type</Name> 
warnif count > 0 (from t in Application.Types where 
    t.SizeOfInst ==0 && 

    // For accuracy, this constraint doesn't take 
    // account of types that implement some interfaces. 
    // and classes that have a base class and don't 
    // derive directly from System.Object, or classes 
    // that have sub-classes children. 
    t.NbInterfacesImplemented == 0 &&       
    ((t.IsClass && t.DepthOfInheritance == 1 
      && t.NbChildren == 0)   
    || t.IsStructure) &&     
    !t.IsStatic && 
    !t.DeriveFrom("System.Attribute") && 
    !t.IsAttributeClass && 
    !t.IsGeneric && t.Name!="Program" && !(t.IsGeneratedByCompiler || t.HasAttribute(@"NDepend.CQL.NDependIgnoreAttribute") || t.HasAttribute("System.Runtime.CompilerServices.CompilerGeneratedAttribute".AllowNoMatch())) 
select new { t, t.SizeOfInst, t.NbInterfacesImplemented, 
      t.DepthOfInheritance, t.NbChildren }).Take(10) 
    // this rule indicates stateless types that might 
    // eventually be turned into static classes. 
    // See the definition of the SizeOfInst metric here 
    // http://www.ndepend.com/Metrics.aspx#SizeOfInst 

Il est bien dans l'interface graphique, mais je reçois ce message dans le rapport de sortie quand je le lance à partir de la ligne de commande:

1 query syntax error: Not a valid type name {"System.Attribute"} 

Tous idée pourquoi?

+0

Steven, est-ce que ma réponse a aidé à résoudre le problème que vous avez mentionné? S'il s'agit d'un bug dans notre produit, nous aimerions le corriger, mais jusqu'à présent nous ne pouvons pas le reprocher. Merci –

+0

Salut @PatrickfromNDependteam. Merci pour la réponse (j'ai mis à jour lorsque vous avez posté), mais je n'ai pas encore eu l'occasion de le vérifier. Quand je le ferai, je vous le ferai savoir. Merci pour le suivi, très apprécié. –

Répondre

1

Il doit provenir du fait que mscorlib, l'assembly qui contient System.Attribute, n'est pas résolu au moment de l'analyse. Exécutez-vous des versions d'interface graphique et de ligne de commande sur la même machine? Pour voir la résolution de l'assemblage, aller à Propriétés du projet NDepend> Code à analyser et voir d'où mscorlib est résolu en dépliant le panneau de dossiers.

Questions connexes