public static IRuleDeclaration RuleDeclarationMapper(ICategoryDeclaration parentDeclaration, Model.RuleDeclaration ruleDeclaration)
        {
            IRuleDeclaration rule = null;

            try
            {
                rule = ConfigurationComponentFactory().ConfigurationFactory <IRuleDeclaration>(typeof(IRuleDeclaration));
            }
            catch (Exception e)
            {
                throw new DataAccessComponentException(null, -1, "Configuration proxy factory failure - unable to create an instance of " + typeof(IRuleDeclaration) + "?", e);
            }


            try
            {
                rule.Id                = ruleDeclaration.Id;
                rule.Name              = ruleDeclaration.Name;
                rule.Description       = ruleDeclaration.Description;
                rule.Expression        = ruleDeclaration.Expression;
                rule.Severity          = RuleSeverityMapper.Int2RuleSeverity(ruleDeclaration.Severity);
                rule.ParentDeclaration = parentDeclaration;

                foreach (var language in ruleDeclaration.LanguageDeclaration)
                {
                    rule.Languages.Add(language.Id, LanguageDeclarationMapper(language));
                }
            }
            catch (Exception e)
            {
                throw new DataAccessComponentException(null, -1, "Mapping process failure?", e);
            }
            return(rule);
        }
        public static ICategoryDeclaration CategoryDeclarationMapper(Model.CategoryDeclaration categoryDeclaration)
        {
            ICategoryDeclaration category = null;

            try
            {
                category = ConfigurationComponentFactory().ConfigurationFactory <ICategoryDeclaration>(typeof(ICategoryDeclaration));
            }
            catch (Exception e)
            {
                throw new DataAccessComponentException(null, -1, "Configuration proxy factory failure - unable to create an instance of " + typeof(ICategoryDeclaration) + "?", e);
            }


            try
            {
                category.Id          = categoryDeclaration.Id;
                category.Name        = categoryDeclaration.Name;
                category.Description = categoryDeclaration.Description;

                foreach (var rule in categoryDeclaration.Rules)
                {
                    category.Rules.Add(rule.Id, RuleDeclarationMapper(category, rule));
                }
            }
            catch (Exception e)
            {
                throw new DataAccessComponentException(null, -1, "Mapping process failure?", e);
            }
            return(category);
        }
示例#3
0
 public static Model.CategoryDeclaration CategoryDeclarationMapper(ICategoryDeclaration declaration, CodeAnalyzerContainer context)
 {
     Model.CategoryDeclaration categoryDeclaration = context.CategoryDeclaration.SingleOrDefault(c => c.Id == declaration.Id);
     if (categoryDeclaration == null)
         return new Model.CategoryDeclaration
         {
             Name        = declaration.Name,
             Description = declaration.Description,
         };
     return categoryDeclaration;
 }
示例#4
0
        public Dictionary <int, IRuleDeclaration> RuleDeclarationsFromCategoryId(int categoryId)
        {
            lock (ManagerLock)
            {
                Dictionary <int, ICategoryDeclaration> categories = CategoryDeclarations();
                if (!categories.ContainsKey(categoryId))
                {
                    throw new ConfigurationComponentException(string.Format("Unable to find category declaration from 'categoryId'='{0}'", categoryId));
                }

                ICategoryDeclaration category = categories[categoryId];
                return(category.Rules);
            }
        }
 public static Model.CategoryDeclaration CategoryDeclarationMapper(ICategoryDeclaration declaration, CodeAnalyzerContainer context)
 {
     Model.CategoryDeclaration categoryDeclaration = context.CategoryDeclaration.SingleOrDefault(c => c.Id == declaration.Id);
     if (categoryDeclaration == null)
     {
         return new Model.CategoryDeclaration
                {
                    Name        = declaration.Name,
                    Description = declaration.Description,
                }
     }
     ;
     return(categoryDeclaration);
 }
        public bool IsCategoryDeclared(string referenceName, int referenceId)
        {
            if (!Categories.ContainsKey(referenceId))
            {
                return(false);
            }

            ICategoryDeclaration declaration = Categories[referenceId];

            if (string.Compare(referenceName, declaration.Name, StringComparison.OrdinalIgnoreCase) != 0)
            {
                return(false);
            }
            return(true);
        }
示例#7
0
        public IEnumerable <ICategoryDeclaration> LoadCategoryDeclarations()
        {
            using (CodeAnalyzerContainer context = new CodeAnalyzerContainer())
            {
                var result = from categoryDeclarations in context.CategoryDeclaration
                             select categoryDeclarations;


                List <ICategoryDeclaration> domainCategoryDeclarations = new List <ICategoryDeclaration>();
                foreach (CategoryDeclaration categoryDeclaration in result)
                {
                    ICategoryDeclaration c = ToDomainModelMapper.CategoryDeclarationMapper(categoryDeclaration);

                    domainCategoryDeclarations.Add(c);
                }
                return(domainCategoryDeclarations);
            }
        }
示例#8
0
        public static XmlNode CreateCategoryDeclarationXmlNode(XmlDocument doc, ICategoryDeclaration declaration)
        {
            // <CategoryDeclaration Name="Static constructions" Id="{867FDD48-C061-4C1A-9ADF-FD56CFB27BF0}">
              //   <Description><CDATA ELEMENT></Description>
              // </CategoryDeclaration>
              XmlNode      declarationNode = doc.CreateNode(XmlNodeType.Element, "CategoryDeclaration", null);
              XmlNode      descriptionNode = doc.CreateNode(XmlNodeType.Element, "Description",         null);
              XmlAttribute nameAttrib      = doc.CreateAttribute("Name");
              XmlAttribute idAttrib        = doc.CreateAttribute("Id");

              idAttrib.Value   = declaration.Id.ToString();
              nameAttrib.Value = declaration.Name;
              declarationNode.Attributes.Append(idAttrib);
              declarationNode.Attributes.Append(nameAttrib);

              XmlCDataSection cdataNameNode = doc.CreateCDataSection(declaration.Description);
              descriptionNode.AppendChild(cdataNameNode);

              declarationNode.AppendChild(descriptionNode);
              return declarationNode;
        }
示例#9
0
        public static XmlNode CreateCategoryDeclarationXmlNode(XmlDocument doc, ICategoryDeclaration declaration)
        {
            // <CategoryDeclaration Name="Static constructions" Id="{867FDD48-C061-4C1A-9ADF-FD56CFB27BF0}">
            //   <Description><CDATA ELEMENT></Description>
            // </CategoryDeclaration>
            XmlNode      declarationNode = doc.CreateNode(XmlNodeType.Element, "CategoryDeclaration", null);
            XmlNode      descriptionNode = doc.CreateNode(XmlNodeType.Element, "Description", null);
            XmlAttribute nameAttrib      = doc.CreateAttribute("Name");
            XmlAttribute idAttrib        = doc.CreateAttribute("Id");

            idAttrib.Value   = declaration.Id.ToString();
            nameAttrib.Value = declaration.Name;
            declarationNode.Attributes.Append(idAttrib);
            declarationNode.Attributes.Append(nameAttrib);

            XmlCDataSection cdataNameNode = doc.CreateCDataSection(declaration.Description);

            descriptionNode.AppendChild(cdataNameNode);

            declarationNode.AppendChild(descriptionNode);
            return(declarationNode);
        }
示例#10
0
        public static XmlNode CreateMatchXmlNode(XmlDocument doc, int id, IMatch match)
        {
            //throw new NotImplementedException();

            // <Match Id="" Name="" Open="">
            //   <File />
            //   <LineNumber />
            //   <RegExpName><CDATA ELEMENT></RegExpName>
            //   <RegExpDescription><CDATA ELEMENT></RegExpDescription>
            //   <RegExpExpression><CDATA ELEMENT></RegExpExpression>
            //   <RegExpSummary><CDATA ELEMENT></RegExpSummary>
            //   <Severity Value="">Fatal|Critical|Warning|Info</Severity>
            // </Match>

            XmlNode matchNode           = doc.CreateNode(XmlNodeType.Element, "Match", null);
            XmlNode projectNode         = doc.CreateNode(XmlNodeType.Element, "Project", null);
            XmlNode categoryNode        = doc.CreateNode(XmlNodeType.Element, "Category", null);
            XmlNode rootDirectoryNode   = doc.CreateNode(XmlNodeType.Element, "RootDirectory", null);
            XmlNode filenameNode        = doc.CreateNode(XmlNodeType.Element, "FileName", null);
            XmlNode lineNumberNode      = doc.CreateNode(XmlNodeType.Element, "LineNumber", null);
            XmlNode ruleNameNode        = doc.CreateNode(XmlNodeType.Element, "RuleName", null);
            XmlNode ruleDescriptionNode = doc.CreateNode(XmlNodeType.Element, "RuleDescription", null);
            XmlNode ruleExpressionNode  = doc.CreateNode(XmlNodeType.Element, "RuleExpression", null);
            XmlNode codeExtractNode     = doc.CreateNode(XmlNodeType.Element, "CodeExtract", null);
            XmlNode severityNode        = doc.CreateNode(XmlNodeType.Element, "Severity", null);

            IConfigurationProxy cfgProxy = ProxyHome.Instance.RetrieveConfigurationProxy(OutputKeyKeeper.Instance.AccessKey);

            // Match node...
            XmlAttribute idAttrib   = doc.CreateAttribute("Id");
            XmlAttribute nameAttrib = doc.CreateAttribute("Name");
            XmlAttribute openAttrib = doc.CreateAttribute("Open");

            idAttrib.Value   = id + "";
            nameAttrib.Value = match.Filename;
            openAttrib.Value = "false";

            matchNode.Attributes.Append(idAttrib);
            matchNode.Attributes.Append(nameAttrib);
            matchNode.Attributes.Append(openAttrib);


            IProjectDefinition   projectDefinition   = cfgProxy.Project(match.ProjectDefinitionRef.Id);
            ICategoryDeclaration categoryDeclaration = cfgProxy.CategoryDeclaration(match.RuleDeclarationRef.ParentDeclaration.Id);
            IRuleDeclaration     ruleDeclaration     = cfgProxy.RuleDeclarationFromRuleId(match.RuleDeclarationRef.Id);


            // File node and Line number node...
            projectNode.InnerText       = projectDefinition.Name;
            categoryNode.InnerText      = categoryDeclaration.Name;
            rootDirectoryNode.InnerText = match.RootDirectoryPath;
            filenameNode.InnerText      = match.Filename;
            lineNumberNode.InnerText    = match.LineNumber + "";


            // RegExpName node...
            XmlCDataSection cdataRegExpNameNode = doc.CreateCDataSection(ruleDeclaration.Name);

            ruleNameNode.AppendChild(cdataRegExpNameNode);

            // RegExpDescription node...
            XmlCDataSection cdataRegExpDescriptionNode = doc.CreateCDataSection(ruleDeclaration.Description);

            ruleDescriptionNode.AppendChild(cdataRegExpDescriptionNode);

            // RegExpExpression node...
            XmlCDataSection cdataRegExpExpression = doc.CreateCDataSection(ruleDeclaration.Expression);

            ruleExpressionNode.AppendChild(cdataRegExpExpression);

            // RegExpSummary node...
            XmlCDataSection cdataRegExpSummary = doc.CreateCDataSection(match.CodeExtract);

            codeExtractNode.AppendChild(cdataRegExpSummary);

            // Severity node...
            XmlAttribute severityValueAttrib = doc.CreateAttribute("Value");

            severityValueAttrib.Value = (int)match.Severity + "";
            severityNode.InnerText    = match.Severity.ToString();
            severityNode.Attributes.Append(severityValueAttrib);

            // Add all nodes to the 'node' given in the arguments.
            matchNode.AppendChild(projectNode);
            matchNode.AppendChild(categoryNode);
            matchNode.AppendChild(ruleNameNode);
            matchNode.AppendChild(ruleDescriptionNode);
            matchNode.AppendChild(ruleExpressionNode);
            matchNode.AppendChild(rootDirectoryNode);
            matchNode.AppendChild(filenameNode);
            matchNode.AppendChild(lineNumberNode);
            matchNode.AppendChild(codeExtractNode);
            matchNode.AppendChild(severityNode);
            return(matchNode);
        }
示例#11
0
        public static IRuleDeclaration RuleDeclarationMapper(ICategoryDeclaration parentDeclaration, Model.RuleDeclaration ruleDeclaration)
        {
            IRuleDeclaration rule = null;
              try
              {
            rule = ConfigurationComponentFactory().ConfigurationFactory<IRuleDeclaration>(typeof(IRuleDeclaration));
              }
              catch (Exception e)
              {
            throw new DataAccessComponentException(null, -1, "Configuration proxy factory failure - unable to create an instance of " + typeof(IRuleDeclaration) + "?", e);
              }

              try
              {
            rule.Id                = ruleDeclaration.Id;
            rule.Name              = ruleDeclaration.Name;
            rule.Description       = ruleDeclaration.Description;
            rule.Expression        = ruleDeclaration.Expression;
            rule.Severity          = RuleSeverityMapper.Int2RuleSeverity(ruleDeclaration.Severity);
            rule.ParentDeclaration = parentDeclaration;

            foreach (var language in ruleDeclaration.LanguageDeclaration) { rule.Languages.Add(language.Id, LanguageDeclarationMapper(language)); }
              }
              catch (Exception e)
              {
            throw new DataAccessComponentException(null, -1, "Mapping process failure?", e);
              }
              return rule;
        }