/// <summary>
        /// Configures the Output for the ResourceStaticAnalysis.
        /// </summary>
        /// <param name="outputFile">The file to write output to</param>
        public void ConfigureOutput(string outputFile)
        {
            OutputWriterConfig outputCfg = new OutputWriterConfig();

            outputCfg.SetDataSourceProvider <XMLDOMOutputWriter>();
            outputCfg.Schema = "ResourceStaticAnalysisOutput.xsd";

            // Configure where the log file is created.
            string outputDirectory = Path.GetDirectoryName(outputFile);

            if (!Directory.Exists(outputDirectory))
            {
                try
                {
                    Directory.CreateDirectory(outputDirectory);
                }
                catch (Exception ex)
                {
                    throw new IOException(ex.ToString());
                }
            }

            outputCfg.Path = outputFile;
            // Add properties to include in output
            outputCfg.AddPropertyToIncludeInOutput("SourceString");
            outputCfg.AddPropertyToIncludeInOutput("ResourceId");
            outputCfg.AddPropertyToIncludeInOutput("Comments");

            this.EngineConfiguration.OutputConfigs.Add(outputCfg);
        }
 /// <summary>
 /// Adds configuration for an output writer.
 /// </summary>
 /// <param name="config">Configuration object.</param>
 public void AddOutputConfig(OutputWriterConfig config)
 {
     if (OutputConfigs == null)
     {
         OutputConfigs = new List <OutputWriterConfig>();
     }
     OutputConfigs.Add(config);
 }
Example #3
0
 void IOutputWriter.Initialize(OutputWriterConfig owc)
 {
     _myConfig = owc;
     //Override default if available
     _fileName           = Environment.ExpandEnvironmentVariables((_myConfig.Path.Length > 0) ? _myConfig.Path : Resources.DefaultOutputFileName);
     _pathToOutputSchema = owc.Schema;
     if (!Object.ReferenceEquals(owc.PropertiesToInclude, null) && owc.PropertiesToInclude.Count > 0)
     {
         _propertiesToWrite = owc.PropertiesToInclude;
     }
     _outputDoc = new XDocument(
         new XDeclaration("1.0", "UTF-8", "yes"),
         new XElement(Resources.ProductShortName, new XAttribute("version", Resources.ProductVersion),
                      new XAttribute("start", DateTime.Now.ToString())));
 }
Example #4
0
        /// <summary>
        /// Creates a sample Engine configuration
        /// </summary>
        /// <param name="testContext">VS Test Context</param>
        /// <param name="testRuleFileName">Rule to be used (.dll or .cs)</param>
        /// <param name="numberOfResources">Number of Resources to generate (in increments of 6)</param>
        /// <returns></returns>
        internal static EngineConfig CreateSampleConfig(TestContext testContext, string testRuleFileName, int numberOfResources)
        {
            testRuleFileName = Path.Combine(testContext.DeploymentDirectory, testRuleFileName);

            var configuration = new EngineConfig();

            #region DataSourceProviderTypes
            configuration.AddDataSourceProvider(typeof(SampleDataSource));
            #endregion

            #region PropertyAdapterTypes
            configuration.AddPropertyAdapter <SamplePropertyAdapter>();
            configuration.AddPropertyAdapter <SampleClassificationObjectSelfPropertyAdapter>();
            #endregion

            #region COAdatpers
            configuration.AddCOAdapter(typeof(SampleDataAdapter));
            #endregion

            #region COTypes
            configuration.AddClassificationObject <SampleClassificationObjectType>();
            #endregion

            #region DataSourcePackages
            var package = new DataSourcePackage(); // This package will contain 2 data sources
            package.SetCOType <SampleClassificationObjectType>();

            var dataSource = new DataSourceInfo();
            dataSource.SetSourceType <SampleResourceCollection>();

            List <Tuple <string, string, string> > sampleResources = GenerateLargeNumberOfResources(numberOfResources);
            dataSource.SetSourceLocation(sampleResources);
            package.AddDataSource(dataSource);

            configuration.AddDataSourcePackage(package);
            #endregion

            #region Add rules
            RuleContainerType rct = new RuleContainerType();
            if (testRuleFileName.EndsWith(".cs"))
            {
                rct = RuleContainerType.Source;
            }
            else
            {
                rct = RuleContainerType.Module;
            }

            configuration.AddRule(new RuleContainer(testRuleFileName, rct));
            #endregion

            #region And some configuration for dynamic compiler
            configuration.AddBinaryReference("System.Core.dll");
            configuration.AddBinaryReference("mscorlib.dll");
            configuration.AddBinaryReference("System.dll");
            configuration.AddBinaryReference("Microsoft.ResourceStaticAnalysis.Core.dll");
            configuration.AddBinaryReference("UnitTests.dll");
            #endregion

            #region Configure output behavior
            var outputCfg = new OutputWriterConfig();
            outputCfg.SetDataSourceProvider <XMLDOMOutputWriter>();
            outputCfg.Schema = "ResourceStaticAnalysisOutput.xsd";
            outputCfg.Path   = testContext.TestRunDirectory;
            outputCfg.AddPropertyToIncludeInOutput("ResourceId");
            outputCfg.AddPropertyToIncludeInOutput("SourceString");
            outputCfg.AddPropertyToIncludeInOutput("Comments");
            configuration.OutputConfigs.Add(outputCfg);
            #endregion

            return(configuration);
        }