Ejemplo n.º 1
0
        private void Initialize(string configFileName)
        {
            try
            {
                var    config         = Config.Load(configFileName);
                string validationText = config.ValidateErrors();

                if (validationText == null)
                {
                    m_currentConfig      = config;
                    competitionCode.Text = config.CompetitionCode;

                    m_db             = new Database(m_currentConfig);
                    m_scoresRepo     = new QualificationScoresRepo(m_db);
                    m_tournamentRepo = new TournamentRepo(m_db);
                    m_Writer         = WriterFactory.GetWriter(m_currentConfig);

                    GenerateNow.Enabled     = true;
                    startPublishing.Enabled = true;
                }
                else
                {
                    MessageBox.Show($"Config file validation failed.\r\n{validationText}");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Unable to open file.\n\r{ex.ToString()}");
            }
        }
Ejemplo n.º 2
0
Archivo: Program.cs Proyecto: slrzz/CW
        static void Main(string[] args)
        {
            var writerName = System.Configuration.ConfigurationManager.AppSettings.Get("writer");
            var writer     = WriterFactory.GetWriter(writerName);

            writer.Write();
            System.Console.ReadLine();
        }
Ejemplo n.º 3
0
        public void GetWriterTest()
        {
            var expectedType = WriterType.CONSOLE;
            var factory      = new WriterFactory();
            var writer       = factory.GetWriter(expectedType);
            var actualType   = writer.Type;

            Assert.AreEqual(expectedType, actualType);
            Assert.True(writer is ConsoleWriter);
        }
Ejemplo n.º 4
0
        public void ConsoleWriterWritesWOException()
        {
            var writer = WriterFactory.GetWriter("CW.API.ConsoleWriter,CW.API");

            try
            {
                writer.Write("test");
            }
            catch (Exception ex)
            {
                Assert.Fail("Expected no exception, but got: " + ex.Message);
            }
        }
Ejemplo n.º 5
0
        private bool SelectWriter()
        {
            try
            {
                string newWriterSelection;
                if (radioButtonHugoWriter.Checked)
                {
                    newWriterSelection = "Hugo";
                }
                else
                {
                    newWriterSelection = "Log";
                }

                if (newWriterSelection != m_writerSelection)
                {
                    if (m_writer != null)
                    {
                        m_writer.OnInfo          -= new LoggingEventHandler(Utilities_OnInfo);
                        m_writer.OnError         -= new LoggingEventHandler(Utilities_OnError);
                        m_writer.OnWriterStopped -= new ServiceStoppedEventHandler(ReportListenerLib_OnWriterStopped);
                    }

                    m_writer          = WriterFactory.GetWriter(newWriterSelection);
                    m_writerSelection = newWriterSelection;

                    if (m_writer != null)
                    {
                        m_writer.OnInfo          += new LoggingEventHandler(Utilities_OnInfo);
                        m_writer.OnError         += new LoggingEventHandler(Utilities_OnError);
                        m_writer.OnWriterStopped += new ServiceStoppedEventHandler(ReportListenerLib_OnWriterStopped);
                    }
                }
            }
            catch (Exception ex)
            {
                DisplayErrorMessage("Unable to initialize writer", ex);
            }
            return(m_writer != null);
        }
Ejemplo n.º 6
0
 private bool SelectWriter(string writer)
 {
     try
     {
         m_writer = WriterFactory.GetWriter(writer);
         if (m_writer == null)
         {
             OnInfo(String.Format("Unable to instantiate corporate actions writer {0}", writer));
             return(false);
         }
         else
         {
             m_writer.OnInfo  += new EventHandler <LoggingEventArgs>(CorporateActionsLib_OnInfo);
             m_writer.OnError += new EventHandler <LoggingEventArgs>(CorporateActionsLib_OnError);
             return(true);
         }
     }
     catch (Exception ex)
     {
         OnError("Unable to instantiate report writer", ex);
         return(false);
     }
 }
Ejemplo n.º 7
0
 private bool SelectWriter(string writer)
 {
     try
     {
         m_writer = WriterFactory.GetWriter(writer);
         if (m_writer == null)
         {
             LogInfoMessage(String.Format("Unable to instantiate report writer {0}", writer), true);
             return(false);
         }
         else
         {
             m_writer.OnInfo          += new LoggingEventHandler(Utilities_OnInfo);
             m_writer.OnError         += new LoggingEventHandler(Utilities_OnError);
             m_writer.OnWriterStopped += new ServiceStoppedEventHandler(ReportListenerLib_OnWriterStopped);
             return(true);
         }
     }
     catch (Exception ex)
     {
         LogErrorMessage("Unable to instantiate report writer", ex, true);
         return(false);
     }
 }
Ejemplo n.º 8
0
        public int RunFileEntries(IEnumerable <FileEntry> fileListing, StreamWriter?outputStreamWriter = null)
        {
            Verifier?verifier = null;

            if (_rulespath.Length > 0)
            {
                // Setup the rules
                verifier = new Verifier(_rulespath);
                if (!verifier.Verify())
                {
                    return((int)ExitCode.CriticalError);
                }

                if (verifier.CompiledRuleset.Count() == 0 && _ignoreDefaultRules)
                {
                    Debug.WriteLine("Error: No rules were loaded. ");
                    return((int)ExitCode.CriticalError);
                }
            }

            RuleSet rules = new RuleSet();

            if (verifier != null)
            {
                rules = verifier.CompiledRuleset;
            }

            if (!_ignoreDefaultRules)
            {
                Assembly?assembly = Assembly.GetAssembly(typeof(Boundary));
                string   filePath = "Microsoft.DevSkim.Resources.devskim-rules.json";
                Stream?  resource = assembly?.GetManifestResourceStream(filePath);
                if (resource is Stream)
                {
                    using (StreamReader file = new StreamReader(resource))
                    {
                        var rulesString = file.ReadToEnd();
                        rules.AddString(rulesString, filePath, null);
                    }
                }
            }

            // Initialize the processor
            RuleProcessor processor = new RuleProcessor(rules);

            processor.EnableSuppressions = !_disableSuppression;

            if (_severities.Count() > 0)
            {
                processor.SeverityLevel = 0;
                foreach (string severityText in _severities)
                {
                    Severity severity;
                    if (ParseSeverity(severityText, out severity))
                    {
                        processor.SeverityLevel |= severity;
                    }
                    else
                    {
                        Debug.WriteLine("Invalid severity: {0}", severityText);
                        return((int)ExitCode.CriticalError);
                    }
                }
            }

            Writer outputWriter = WriterFactory.GetWriter(string.IsNullOrEmpty(_fileFormat) ? string.IsNullOrEmpty(_outputFile) ? "_dummy" : "text" : _fileFormat,
                                                          _outputFormat,
                                                          (outputStreamWriter is null)?(string.IsNullOrEmpty(_outputFile) ? Console.Out : File.CreateText(_outputFile)):outputStreamWriter,
                                                          (outputStreamWriter is null)?_outputFile:null);

            int filesAnalyzed = 0;
            int filesSkipped  = 0;
            int filesAffected = 0;
            int issuesCount   = 0;

            void parseFileEntry(FileEntry fileEntry)
            {
                string language = Language.FromFileName(fileEntry.FullPath);

                // Skip files written in unknown language
                if (string.IsNullOrEmpty(language))
                {
                    Interlocked.Increment(ref filesSkipped);
                }
                else
                {
                    string fileText = string.Empty;

                    try
                    {
                        using (StreamReader reader = new StreamReader(fileEntry.Content))
                        {
                            fileText = reader.ReadToEnd();
                        }
                        Interlocked.Increment(ref filesAnalyzed);
                    }
                    catch (Exception)
                    {
                        // Skip files we can't parse
                        Interlocked.Increment(ref filesSkipped);
                        return;
                    }

                    Issue[] issues = processor.Analyze(fileText, language);

                    bool issuesFound = issues.Any(iss => !iss.IsSuppressionInfo) || _disableSuppression && issues.Any();

                    if (issuesFound)
                    {
                        Interlocked.Increment(ref filesAffected);
                        Debug.WriteLine("file:{0}", fileEntry.FullPath);

                        // Iterate through each issue
                        foreach (Issue issue in issues)
                        {
                            if (!issue.IsSuppressionInfo || _disableSuppression)
                            {
                                Interlocked.Increment(ref issuesCount);
                                Debug.WriteLine("\tregion:{0},{1},{2},{3} - {4} [{5}] - {6}",
                                                issue.StartLocation.Line,
                                                issue.StartLocation.Column,
                                                issue.EndLocation.Line,
                                                issue.EndLocation.Column,
                                                issue.Rule.Id,
                                                issue.Rule.Severity,
                                                issue.Rule.Name);

                                IssueRecord record = new IssueRecord(
                                    Filename: fileEntry.FullPath,
                                    Filesize: fileText.Length,
                                    TextSample: fileText.Substring(issue.Boundary.Index, issue.Boundary.Length),
                                    Issue: issue,
                                    Language: language);

                                outputWriter.WriteIssue(record);
                            }
                        }
                    }
                }
            }

            //Iterate through all files
            if (_disableParallel)
            {
                foreach (var fileEntry in fileListing)
                {
                    parseFileEntry(fileEntry);
                }
            }
            else
            {
                Parallel.ForEach(fileListing, parseFileEntry);
            }

            outputWriter.FlushAndClose();

            Debug.WriteLine("Issues found: {0} in {1} files", issuesCount, filesAffected);
            Debug.WriteLine("Files analyzed: {0}", filesAnalyzed);
            Debug.WriteLine("Files skipped: {0}", filesSkipped);

            return((int)ExitCode.NoIssues);
        }
Ejemplo n.º 9
0
        public int Run()
        {
            if (!Directory.Exists(_path) && !File.Exists(_path))
            {
                Console.Error.WriteLine("Error: Not a valid file or directory {0}", _path);

                return((int)ExitCode.CriticalError);
            }

            Verifier verifier = null;

            if (_rulespath.Count() > 0)
            {
                // Setup the rules
                verifier = new Verifier(_rulespath);
                if (!verifier.Verify())
                {
                    return((int)ExitCode.CriticalError);
                }

                if (verifier.CompiledRuleset.Count() == 0 && _ignoreDefaultRules)
                {
                    Console.Error.WriteLine("Error: No rules were loaded. ");
                    return((int)ExitCode.CriticalError);
                }
            }

            RuleSet rules = new RuleSet();

            if (verifier != null)
            {
                rules = verifier.CompiledRuleset;
            }

            if (!_ignoreDefaultRules)
            {
                Assembly assembly = Assembly.GetExecutingAssembly();
                string   filePath = "Microsoft.DevSkim.CLI.Resources.devskim-rules.json";
                Stream   resource = assembly.GetManifestResourceStream(filePath);
                using (StreamReader file = new StreamReader(resource))
                {
                    rules.AddString(file.ReadToEnd(), filePath, null);
                }
            }

            // Initialize the processor
            RuleProcessor processor = new RuleProcessor(rules);

            if (_severities.Count() > 0)
            {
                processor.SeverityLevel = 0;
                foreach (string severityText in _severities)
                {
                    Severity severity;
                    if (ParseSeverity(severityText, out severity))
                    {
                        processor.SeverityLevel |= severity;
                    }
                    else
                    {
                        Console.Error.WriteLine("Invalid severity: {0}", severityText);
                        return((int)ExitCode.CriticalError);
                    }
                }
            }

            Writer outputWriter = WriterFactory.GetWriter(_fileFormat,
                                                          (string.IsNullOrEmpty(_outputFile)) ? null : "text",
                                                          _outputFormat);

            if (string.IsNullOrEmpty(_outputFile))
            {
                outputWriter.TextWriter = Console.Out;
            }
            else
            {
                outputWriter.TextWriter = File.CreateText(_outputFile);
            }

            int filesAnalyzed = 0;
            int filesSkipped  = 0;
            int filesAffected = 0;
            int issuesCount   = 0;

            // Iterate through all files
            foreach (string filename in Directory.EnumerateFiles(_path, "*.*", SearchOption.AllDirectories))
            {
                string language = Language.FromFileName(filename);

                // Skip files written in unknown language
                if (string.IsNullOrEmpty(language))
                {
                    filesSkipped++;
                    continue;
                }

                filesAnalyzed++;
                string  fileText = File.ReadAllText(filename);
                Issue[] issues   = processor.Analyze(fileText, language);

                if (issues.Count() > 0)
                {
                    filesAffected++;
                    issuesCount += issues.Count();
                    Console.Error.WriteLine("file:{0}", filename);

                    // Iterate through each issue
                    foreach (Issue issue in issues)
                    {
                        Console.Error.WriteLine("\tregion:{0},{1},{2},{3} - {4} [{5}] - {6}",
                                                issue.StartLocation.Line,
                                                issue.StartLocation.Column,
                                                issue.EndLocation.Line,
                                                issue.EndLocation.Column,
                                                issue.Rule.Id,
                                                issue.Rule.Severity,
                                                issue.Rule.Name);

                        IssueRecord record = new IssueRecord()
                        {
                            Filename   = filename,
                            Filesize   = fileText.Length,
                            TextSample = fileText.Substring(issue.Boundary.Index, issue.Boundary.Length),
                            Issue      = issue
                        };

                        outputWriter.WriteIssue(record);
                    }

                    Console.Error.WriteLine();
                }
            }

            outputWriter.FlushAndClose();

            Console.Error.WriteLine("Issues found: {0} in {1} files", issuesCount, filesAffected);
            Console.Error.WriteLine("Files analyzed: {0}", filesAnalyzed);
            Console.Error.WriteLine("Files skipped: {0}", filesSkipped);

            return((int)ExitCode.NoIssues);
        }
Ejemplo n.º 10
0
        public void WriterFactoryReturnsCorrectWriter()
        {
            var writer = WriterFactory.GetWriter("CW.API.ConsoleWriter,CW.API");

            Assert.IsInstanceOfType(writer, typeof(IWriter));
        }
Ejemplo n.º 11
0
 public void WrongClassThrowsException()
 {
     var writer = WriterFactory.GetWriter("Test");
 }
Ejemplo n.º 12
0
        public void ValidDBWriter()
        {
            WriterFactory w = new WriterFactory("DB");

            Assert.IsInstanceOfType(w.GetWriter(), typeof(Writers.DBWriter));
        }
Ejemplo n.º 13
0
        public void ValidFileWriter()
        {
            WriterFactory w = new WriterFactory("File");

            Assert.IsInstanceOfType(w.GetWriter(), typeof(Writers.FileWriter));
        }
Ejemplo n.º 14
0
        public int Run()
        {
            if (_suppressError)
            {
                Console.SetError(StreamWriter.Null);
            }

            if (!Directory.Exists(_path) && !File.Exists(_path))
            {
                Console.Error.WriteLine("Error: Not a valid file or directory {0}", _path);

                return((int)ExitCode.CriticalError);
            }

            Verifier?verifier = null;

            if (_rulespath.Count() > 0)
            {
                // Setup the rules
                verifier = new Verifier(_rulespath);
                if (!verifier.Verify())
                {
                    return((int)ExitCode.CriticalError);
                }

                if (verifier.CompiledRuleset.Count() == 0 && _ignoreDefaultRules)
                {
                    Console.Error.WriteLine("Error: No rules were loaded. ");
                    return((int)ExitCode.CriticalError);
                }
            }

            RuleSet rules = new RuleSet();

            if (verifier != null)
            {
                rules = verifier.CompiledRuleset;
            }

            if (!_ignoreDefaultRules)
            {
                Assembly?assembly = Assembly.GetAssembly(typeof(Boundary));
                string   filePath = "Microsoft.DevSkim.Resources.devskim-rules.json";
                Stream?  resource = assembly?.GetManifestResourceStream(filePath);
                if (resource is Stream)
                {
                    using (StreamReader file = new StreamReader(resource))
                    {
                        rules.AddString(file.ReadToEnd(), filePath, null);
                    }
                }
            }

            // Initialize the processor
            RuleProcessor processor = new RuleProcessor(rules);

            processor.EnableSuppressions = !_disableSuppression;

            if (_severities.Count() > 0)
            {
                processor.SeverityLevel = 0;
                foreach (string severityText in _severities)
                {
                    Severity severity;
                    if (ParseSeverity(severityText, out severity))
                    {
                        processor.SeverityLevel |= severity;
                    }
                    else
                    {
                        Console.Error.WriteLine("Invalid severity: {0}", severityText);
                        return((int)ExitCode.CriticalError);
                    }
                }
            }

            Writer outputWriter = WriterFactory.GetWriter(string.IsNullOrEmpty(_fileFormat) ? string.IsNullOrEmpty(_outputFile) ? "_dummy" : "text" : _fileFormat,
                                                          _outputFormat,
                                                          (string.IsNullOrEmpty(_outputFile) ? Console.Out : File.CreateText(_outputFile)),
                                                          _outputFile);

            int filesAnalyzed = 0;
            int filesSkipped  = 0;
            int filesAffected = 0;
            int issuesCount   = 0;

            // We can pass either a file or a directory; if it's a file, make an IEnumerable out of it.
            IEnumerable <FileEntry> fileListing;
            var extractor = new Extractor(new ExtractorOptions()
            {
                ExtractSelfOnFail = false
            });

            if (!Directory.Exists(_path))
            {
                fileListing = extractor.ExtractFile(_path);
            }
            else
            {
                fileListing = Directory.EnumerateFiles(_path, "*.*", SearchOption.AllDirectories).SelectMany(x => _crawlArchives ? extractor.ExtractFile(x) : FilenameToFileEntryArray(x));
            }

            // Iterate through all files
            foreach (FileEntry fileEntry in fileListing)
            {
                string language = Language.FromFileName(fileEntry.FullPath);

                // Skip files written in unknown language
                if (string.IsNullOrEmpty(language))
                {
                    filesSkipped++;
                    continue;
                }

                string fileText = string.Empty;

                try
                {
                    using (StreamReader reader = new StreamReader(fileEntry.Content))
                    {
                        fileText = reader.ReadToEnd();
                    }
                    filesAnalyzed++;
                }
                catch (Exception)
                {
                    // Skip files we can't parse
                    filesSkipped++;
                    continue;
                }

                Issue[] issues = processor.Analyze(fileText, language);

                bool issuesFound = issues.Any(iss => iss.IsSuppressionInfo == false) || _disableSuppression && issues.Count() > 0;

                if (issuesFound)
                {
                    filesAffected++;
                    Console.Error.WriteLine("file:{0}", fileEntry.FullPath);

                    // Iterate through each issue
                    foreach (Issue issue in issues)
                    {
                        if (!issue.IsSuppressionInfo || _disableSuppression)
                        {
                            issuesCount++;
                            Console.Error.WriteLine("\tregion:{0},{1},{2},{3} - {4} [{5}] - {6}",
                                                    issue.StartLocation.Line,
                                                    issue.StartLocation.Column,
                                                    issue.EndLocation.Line,
                                                    issue.EndLocation.Column,
                                                    issue.Rule.Id,
                                                    issue.Rule.Severity,
                                                    issue.Rule.Name);

                            IssueRecord record = new IssueRecord(
                                Filename: fileEntry.FullPath,
                                Filesize: fileText.Length,
                                TextSample: fileText.Substring(issue.Boundary.Index, issue.Boundary.Length),
                                Issue: issue,
                                Language: language);

                            outputWriter.WriteIssue(record);
                        }
                    }

                    Console.Error.WriteLine();
                }
            }

            outputWriter.FlushAndClose();

            Console.Error.WriteLine("Issues found: {0} in {1} files", issuesCount, filesAffected);
            Console.Error.WriteLine("Files analyzed: {0}", filesAnalyzed);
            Console.Error.WriteLine("Files skipped: {0}", filesSkipped);

            return((int)ExitCode.NoIssues);
        }