Exemple #1
0
        public void ExcludedFunctionIsExcluded()
        {
            string config = "<ccm>" +
                      "  <exclude>" +
                      "    <function>Foo2</function> " +
                      "    <function>Bar2</function> " +
                      "  </exclude>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);

              string code1 = "void Foo() {}";
              string code2 = "void Bar() {}";
              string code3 = "void Foo2() {}";
              string code4 = "void Bar2() {}";

              Driver driver = new Driver(file);

              driver.StartAnalyze(TestUtil.GetTextStream(code1), "file1.h");
              driver.StartAnalyze(TestUtil.GetTextStream(code2), "file2.h");
              driver.StartAnalyze(TestUtil.GetTextStream(code3), "file3.h");
              driver.StartAnalyze(TestUtil.GetTextStream(code4), "file4.h");
              driver.WaitForWorkThreadsToFinish();

              DriverTests.AssertMetric(driver.Metrics, "Foo()", 1, "file1.h");
              DriverTests.AssertMetric(driver.Metrics, "Bar()", 1, "file2.h");

              Assert.AreEqual(2, driver.Metrics.Count);
        }
Exemple #2
0
        public void TestCreateConfigurationFromArgsWithIgnoreCases()
        {
            XmlDocument doc = Program.CreateConfigurationFromArgs(new string[] { "c:\\code", "/ignorecases" });

            ConfigurationFile config = new ConfigurationFile(doc);

            Assert.AreEqual(ParserSwitchBehavior.IgnoreCases, config.SwitchStatementBehavior);
        }
Exemple #3
0
        public void TestCreateConfigUsingThresholdArgument()
        {
            XmlDocument doc = Program.CreateConfigurationFromArgs(new string[] { "c:\\code", "/threshold=10" });

            ConfigurationFile config = new ConfigurationFile(doc);

            Assert.AreEqual(10, config.Threshold);
        }
Exemple #4
0
        public void TestCreateNumMetricsFromArgs()
        {
            XmlDocument doc = Program.CreateConfigurationFromArgs(new string[] { "c:\\code", "/nummetrics=15" });

            ConfigurationFile config = new ConfigurationFile(doc);

            Assert.AreEqual(15, config.NumMetrics);
        }
Exemple #5
0
        public void TestCreateConfigurationFromArgsPassingOnlyPathOutputDoesNotOutputAsXML()
        {
            XmlDocument doc = Program.CreateConfigurationFromArgs(new string[] { "c:\\code" });

            ConfigurationFile config = new ConfigurationFile(doc);

            Assert.AreEqual(CCMOutputter.TextOutputType, config.OutputType);
            Assert.AreEqual("c:\\code", config.AnalyzeFolders[0]);
        }
Exemple #6
0
        public void TestCreateConfigurationFromArgsWithXMLSwitchOutputAsXML()
        {
            XmlDocument doc = Program.CreateConfigurationFromArgs(new string[] { "c:\\code", "/xml" });

            ConfigurationFile config = new ConfigurationFile(doc);

            Assert.AreEqual(CCMOutputter.XmlOutputType, config.OutputType);
            Assert.AreEqual("c:\\code", config.AnalyzeFolders[0]);
        }
Exemple #7
0
        public void TestFolderArgumentCreatesDefaultSettings()
        {
            XmlDocument doc =
             Program.LoadConfiguration(new string[] { "folder_to_analyze" });

            ConfigurationFile config = new ConfigurationFile(doc);
            Assert.AreEqual("folder_to_analyze", config.AnalyzeFolders[0]);
            Assert.AreEqual(30, config.NumMetrics);
            Assert.AreEqual(CCMOutputter.TextOutputType, config.OutputType);
        }
        public void ClassExclude()
        {
            string config = "<ccm>" +
                      "  <exclude>" +
                      "    <class>CMyClass</class> " +
                      "  </exclude>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);

              Assert.AreEqual("CMyClass", file.ExcludeClasses[0]);
        }
        public void AnalyzeFolder()
        {
            string config = "<ccm>" +
                      " <analyze>" +
                      "  <folder>folderA</folder> " +
                      "  <folder>folderB</folder> " +
                      " </analyze>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);

              Assert.AreEqual("folderA", file.AnalyzeFolders[0]);
              Assert.AreEqual("folderB", file.AnalyzeFolders[1]);
        }
Exemple #10
0
        private static bool IsCandidateForComplexityAnalysis(string fileName, ConfigurationFile config)
        {
            FileInfo file = new FileInfo(fileName);

              if (!file.Exists || string.IsNullOrEmpty(file.Extension))
            return false;

              string lower = fileName.ToLower();
              string extension = lower.Substring(lower.LastIndexOf('.'));

              if (null != config)
            return config.SupportedExtensions.Contains(extension);

              if (CCMEngine.ConfigurationFile.GetDefaultSupportedFileExtensions().Contains(extension))
            return true;

              return false;
        }
Exemple #11
0
        static void Main(string[] args)
        {
            try
              {
            Program.ValidateArgs(args);

            XmlDocument doc = Program.LoadConfiguration(args);
            ConfigurationFile config = new ConfigurationFile(doc);

            Driver driver = new Driver(config);
            driver.Drive();

            OutputterFactory(config.OutputType).Output(driver.Metrics, driver.Errors, true);
              }
              catch (Exception e)
              {
            Console.WriteLine(e.Message);
            PrintUsage();
              }
        }
Exemple #12
0
        public void ExcludedFolderOnlyExcludesWhereNameOfFolderIsExactMatch()
        {
            string config = "<ccm>" +
                      "  <exclude>" +
                      "    <folder>Foo</folder> " +
                      "    <folder>Bar</folder> " +
                      "  </exclude>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);
              Driver driver = new Driver(file);

              Assert.IsTrue(driver.PathShouldBeExcluded("c:\\code\\Foo\\file.cpp"));
              Assert.IsTrue(driver.PathShouldBeExcluded("c:\\code\\bar\\file.cpp"));
              Assert.IsFalse(driver.PathShouldBeExcluded("c:\\code\\FooBar\\fileB.cs"));
              Assert.IsFalse(driver.PathShouldBeExcluded("c:\\code\\BarA\\fileB.cs"));
        }
Exemple #13
0
        public void Combined()
        {
            string config = "<ccm>" +
                      " <exclude>" +
                      "  <folder>Dir1</folder> " +
                      "  <class>CFoo</class> " +
                      "  <class>CBar</class> " +
                      "  <file>file.txt</file> " +
                      " </exclude>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);

              Assert.AreEqual("Dir1", file.ExcludeFolders[0]);
              Assert.AreEqual("CFoo", file.ExcludeClasses[0]);
              Assert.AreEqual("CBar", file.ExcludeClasses[1]);
              Assert.AreEqual("file.txt", file.ExcludeFiles[0]);
        }
Exemple #14
0
 public Driver(ConfigurationFile configFile)
 {
     this.configFile = configFile;
       Init();
 }
Exemple #15
0
        private static ConfigurationFile GetConfigurationFile()
        {
            ConfigurationFile config = null;
              FileInfo configFileInfo = new FileInfo(
            Path.Combine(
              new FileInfo(Assembly.GetExecutingAssembly().Location).Directory.FullName,
            "ccm.config"));

              if (configFileInfo.Exists)
              {
            XmlDocument configDoc = new XmlDocument();
            configDoc.Load(configFileInfo.FullName);

            config = new ConfigurationFile(configDoc);
              }

              return config;
        }
Exemple #16
0
        public void TestConfigFileThatAddsHppExtensionIsRecognizedAsSupported()
        {
            string config = "<ccm>" +
                      "<fileExtensions>" +
                      "<fileExtension>.hpp</fileExtension>" +
                      "<fileExtension>.cxx</fileExtension>" +
                      "</fileExtensions>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);

              Assert.AreEqual(10, file.SupportedExtensions.Count);
              Assert.AreEqual(".hpp", file.SupportedExtensions[8]);
              Assert.AreEqual(".cxx", file.SupportedExtensions[9]);
        }
Exemple #17
0
 public Driver()
 {
     // added for testability purposes, should not be instansiated outside of test framework
       this.configFile = new ConfigurationFile(new XmlDocument());
       Init();
 }
Exemple #18
0
        public void TestConfigFileWithEmptySuppressMethodSignatureElementDoesNotSuppress()
        {
            string config = "<ccm>" +
                      "<suppressMethodSignatures />"+
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);
              Assert.AreEqual(false, file.SuppressMethodSignatures);
        }
Exemple #19
0
        public void TestConfigFileThatHasNoFileExtensionGetsDefaultCsAndCpp()
        {
            string config = "<ccm>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);

              Assert.AreEqual(8, file.SupportedExtensions.Count);
              Assert.AreEqual(".cpp", file.SupportedExtensions[0]);
              Assert.AreEqual(".cs", file.SupportedExtensions[1]);
              Assert.AreEqual(".h", file.SupportedExtensions[2]);
              Assert.AreEqual(".hpp", file.SupportedExtensions[3]);
              Assert.AreEqual(".c", file.SupportedExtensions[4]);
              Assert.AreEqual(".js", file.SupportedExtensions[5]);
              Assert.AreEqual(".ts", file.SupportedExtensions[6]);
              Assert.AreEqual(".cxx", file.SupportedExtensions[7]);
        }
Exemple #20
0
        public void TestDefaultSwitchBehaviorIsTraditional()
        {
            string config = "<ccm> " +
                      " <exclude>" +
                      "   <file>file1.ext</file> " +
                      " </exclude>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);

              Assert.AreEqual(ParserSwitchBehavior.TraditionalInclude, file.SwitchStatementBehavior);
        }
Exemple #21
0
        public void XmlStyleSheet()
        {
            string config = "<ccm>" +
                      " <stylesheet>mysheet.xsl</stylesheet>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);

              Assert.AreEqual("mysheet.xsl", file.XmlStyleSheet);
        }
Exemple #22
0
        public void TestSwitchBehaviorIgnoreCaseCanbeRead()
        {
            string config = "<ccm> " +
                      " <switchStatementBehavior>IgnoreCases</switchStatementBehavior> " +
                      " <exclude>" +
                      "   <file>file1.ext</file> " +
                      " </exclude>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);

              Assert.AreEqual(ParserSwitchBehavior.IgnoreCases, file.SwitchStatementBehavior);
        }
Exemple #23
0
        public void TestNoSuppressElementReturnShouldNotSuppressMethodNames()
        {
            string config = "<ccm>" +
                      " <exclude>" +
                      " </exclude>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);
              Assert.AreEqual(false, file.SuppressMethodSignatures);
        }
Exemple #24
0
        public void FileExclude()
        {
            string config = "<ccm> " +
                      " <exclude>" +
                      "   <file>file1.ext</file> " +
                      " </exclude>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);

              Assert.AreEqual("file1.ext", file.ExcludeFiles[0]);
        }
Exemple #25
0
        public void ExcludeFunctions()
        {
            string config = "<ccm>" +
                      "  <exclude>" +
                      "    <function>Foo::Bar</function> " +
                      "    <function>CreateInstance</function> " +
                      "  </exclude>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);

              Assert.AreEqual("Foo::Bar", file.ExcludeFunctions[0]);
              Assert.AreEqual("CreateInstance", file.ExcludeFunctions[1]);
        }
Exemple #26
0
        public void TestThrowsIfOutputToXmlElementIsAvailable()
        {
            string config = "<ccm>" +
                      " <outputXML>No</outputXML>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);
        }
Exemple #27
0
        private void AnalyzeFolder(string folder, ConfigurationFile configFile)
        {
            string[] files = System.IO.Directory.GetFiles(folder);

              foreach (string path in files)
              {
            if (IsCandidateForComplexityAnalysis(path, configFile))
              AnalyzeFile(path);
              }

              string[] folders = System.IO.Directory.GetDirectories(folder);

              foreach (string f in folders)
            AnalyzeFolder(f, configFile);
        }
Exemple #28
0
        public void TestConfigFileWithSuppressYesElementDoesSuppress()
        {
            string config = "<ccm>" +
                      "<suppressMethodSignatures>Yes</suppressMethodSignatures>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);
              Assert.AreEqual(true, file.SuppressMethodSignatures);
        }
Exemple #29
0
 private bool IsCandidateForComplexityAnalysis(ProjectItem item, ConfigurationFile config)
 {
     return IsCandidateForComplexityAnalysis(item.Name, config);
 }
Exemple #30
0
        public void TestThrowsOnIllegalSwitchStatementBehavior()
        {
            string config = "<ccm> " +
                      " <switchStatementBehavior>Merge</switchStatementBehavior> " +
                      " <exclude>" +
                      "   <file>file1.ext</file> " +
                      " </exclude>" +
                      "</ccm>";

              XmlDocument doc = new XmlDocument();
              doc.LoadXml(config);

              ConfigurationFile file = new ConfigurationFile(doc);
        }