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); }
public void TestCreateConfigurationFromArgsWithIgnoreCases() { XmlDocument doc = Program.CreateConfigurationFromArgs(new string[] { "c:\\code", "/ignorecases" }); ConfigurationFile config = new ConfigurationFile(doc); Assert.AreEqual(ParserSwitchBehavior.IgnoreCases, config.SwitchStatementBehavior); }
public void TestCreateConfigUsingThresholdArgument() { XmlDocument doc = Program.CreateConfigurationFromArgs(new string[] { "c:\\code", "/threshold=10" }); ConfigurationFile config = new ConfigurationFile(doc); Assert.AreEqual(10, config.Threshold); }
public void TestCreateNumMetricsFromArgs() { XmlDocument doc = Program.CreateConfigurationFromArgs(new string[] { "c:\\code", "/nummetrics=15" }); ConfigurationFile config = new ConfigurationFile(doc); Assert.AreEqual(15, config.NumMetrics); }
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]); }
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]); }
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]); }
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; }
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(); } }
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")); }
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]); }
public Driver(ConfigurationFile configFile) { this.configFile = configFile; Init(); }
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; }
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]); }
public Driver() { // added for testability purposes, should not be instansiated outside of test framework this.configFile = new ConfigurationFile(new XmlDocument()); Init(); }
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); }
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]); }
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); }
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); }
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); }
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); }
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]); }
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]); }
public void TestThrowsIfOutputToXmlElementIsAvailable() { string config = "<ccm>" + " <outputXML>No</outputXML>" + "</ccm>"; XmlDocument doc = new XmlDocument(); doc.LoadXml(config); ConfigurationFile file = new ConfigurationFile(doc); }
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); }
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); }
private bool IsCandidateForComplexityAnalysis(ProjectItem item, ConfigurationFile config) { return IsCandidateForComplexityAnalysis(item.Name, config); }
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); }