public SyntaxCheckerWorkItem(SledProjectFilesFileType file, SledSyntaxCheckerVerbosity verbosity, object userData, SledUtil.BoolWrapper shouldCancel)
 {
     m_file         = file;
     m_verbosity    = verbosity;
     m_userData     = userData;
     m_shouldCancel = shouldCancel;
     Errors         = new List <SledSyntaxCheckerEntry>();
 }
예제 #2
0
        private static IEnumerable<SledSyntaxCheckerEntry> CheckString(string value, SledSyntaxCheckerVerbosity verbosity, object userData)
        {
            var errors = new List<SledSyntaxCheckerEntry>();

            try
            {
                using (var syntaxChecker = SledLuaSyntaxCheckerFactory.Create())
                {
                    try
                    {
                        var success = syntaxChecker.CheckBuffer(value);
                        if (!success)
                        {
                            var errorString = syntaxChecker.Error;
                            if (!string.IsNullOrEmpty(errorString))
                            {
                                var plugin = ((SledLuaSyntaxCheckerService)userData).m_luaLanguagePlugin;

                                // Fix up error string
                                var colon = errorString.IndexOf(':');
                                if (colon != -1)
                                {
                                    colon = errorString.IndexOf(':', colon + 1);
                                    if (colon != -1)
                                        errorString = errorString.Substring(colon + 1).Trim();
                                }

                                var errorEntry = new SledSyntaxCheckerEntry(plugin, null, 1, errorString);
                                errors.Add(errorEntry);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        if (verbosity > SledSyntaxCheckerVerbosity.None)
                        {
                            SledOutDevice.OutLine(
                                SledMessageType.Error,
                                "{0}: Exception syntax checking string \"{1}\": {2}",
                                typeof(SledLuaSyntaxCheckerService), value, ex.Message);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                SledOutDevice.OutLine(
                    SledMessageType.Error,
                    "{0}: Exception creating syntax checker: {1}",
                    typeof(SledLuaSyntaxCheckerService), ex.Message);
            }

            return errors;
        }
예제 #3
0
        private static IEnumerable<SledSyntaxCheckerEntry> CheckFiles(IEnumerable<SledProjectFilesFileType> files, SledSyntaxCheckerVerbosity verbosity, object userData, SledUtil.BoolWrapper shouldCancel)
        {
            SledHiPerfTimer timer = null;

            var enumeratedFiles = new List<SledProjectFilesFileType>(files);
            
            var errors = new List<SledSyntaxCheckerEntry>();
            var fileCount = enumeratedFiles.Count;

            try
            {
                if (verbosity > SledSyntaxCheckerVerbosity.None)
                {
                    timer = new SledHiPerfTimer();
                    timer.Start();
                }
                
                var allWorkItems = new SyntaxCheckerWorkItem[fileCount];

                for (var i = 0; i < fileCount; ++i)
                    allWorkItems[i] = new SyntaxCheckerWorkItem(enumeratedFiles[i], verbosity, userData, shouldCancel);

                var workerCount = Math.Min(ProducerConsumerQueue.WorkerCount, fileCount);
                using (var pcQueue = new ProducerConsumerQueue(workerCount, shouldCancel))
                {
                    pcQueue.EnqueueWorkItems(allWorkItems);
                }

                if (shouldCancel.Value)
                    return EmptyEnumerable<SledSyntaxCheckerEntry>.Instance;

                // gather all results from all work items
                foreach (var workItem in allWorkItems)
                    errors.AddRange(workItem.Errors);
            }
            catch (Exception ex)
            {
                SledOutDevice.OutLine(
                    SledMessageType.Error,
                    "{0}: Exception syntax checking files: {1}",
                    typeof(SledLuaSyntaxCheckerService), ex.Message);
            }
            finally
            {
                if ((timer != null) && (!shouldCancel.Value))
                {
                    SledOutDevice.OutLine(
                        SledMessageType.Info,
                        "[Lua] Syntax checked {0} files in {1} seconds",
                        fileCount, timer.Elapsed);
                }
            }

            return errors;
        }
예제 #4
0
 public SyntaxCheckerWorkItem(SledProjectFilesFileType file, SledSyntaxCheckerVerbosity verbosity, object userData, SledUtil.BoolWrapper shouldCancel)
 {
     m_file = file;
     m_verbosity = verbosity;
     m_userData = userData;
     m_shouldCancel = shouldCancel;
     Errors = new List<SledSyntaxCheckerEntry>();
 }
        private static IEnumerable <SledSyntaxCheckerEntry> CheckFiles(IEnumerable <SledProjectFilesFileType> files, SledSyntaxCheckerVerbosity verbosity, object userData, SledUtil.BoolWrapper shouldCancel)
        {
            SledHiPerfTimer timer = null;

            var enumeratedFiles = new List <SledProjectFilesFileType>(files);

            var errors    = new List <SledSyntaxCheckerEntry>();
            var fileCount = enumeratedFiles.Count;

            try
            {
                if (verbosity > SledSyntaxCheckerVerbosity.None)
                {
                    timer = new SledHiPerfTimer();
                    timer.Start();
                }

                var allWorkItems = new SyntaxCheckerWorkItem[fileCount];

                for (var i = 0; i < fileCount; ++i)
                {
                    allWorkItems[i] = new SyntaxCheckerWorkItem(enumeratedFiles[i], verbosity, userData, shouldCancel);
                }

                var workerCount = Math.Min(ProducerConsumerQueue.WorkerCount, fileCount);
                using (var pcQueue = new ProducerConsumerQueue(workerCount, shouldCancel))
                {
                    pcQueue.EnqueueWorkItems(allWorkItems);
                }

                if (shouldCancel.Value)
                {
                    return(EmptyEnumerable <SledSyntaxCheckerEntry> .Instance);
                }

                // gather all results from all work items
                foreach (var workItem in allWorkItems)
                {
                    errors.AddRange(workItem.Errors);
                }
            }
            catch (Exception ex)
            {
                SledOutDevice.OutLine(
                    SledMessageType.Error,
                    "{0}: Exception syntax checking files: {1}",
                    typeof(SledLuaSyntaxCheckerService), ex.Message);
            }
            finally
            {
                if ((timer != null) && (!shouldCancel.Value))
                {
                    SledOutDevice.OutLine(
                        SledMessageType.Info,
                        "[Lua] Syntax checked {0} files in {1} seconds",
                        fileCount, timer.Elapsed);
                }
            }

            return(errors);
        }
        private static IEnumerable <SledSyntaxCheckerEntry> CheckString(string value, SledSyntaxCheckerVerbosity verbosity, object userData)
        {
            var errors = new List <SledSyntaxCheckerEntry>();

            try
            {
                using (var syntaxChecker = SledLuaSyntaxCheckerFactory.Create())
                {
                    try
                    {
                        var success = syntaxChecker.CheckBuffer(value);
                        if (!success)
                        {
                            var errorString = syntaxChecker.Error;
                            if (!string.IsNullOrEmpty(errorString))
                            {
                                var plugin = ((SledLuaSyntaxCheckerService)userData).m_luaLanguagePlugin;

                                // Fix up error string
                                var colon = errorString.IndexOf(':');
                                if (colon != -1)
                                {
                                    colon = errorString.IndexOf(':', colon + 1);
                                    if (colon != -1)
                                    {
                                        errorString = errorString.Substring(colon + 1).Trim();
                                    }
                                }

                                var errorEntry = new SledSyntaxCheckerEntry(plugin, null, 1, errorString);
                                errors.Add(errorEntry);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        if (verbosity > SledSyntaxCheckerVerbosity.None)
                        {
                            SledOutDevice.OutLine(
                                SledMessageType.Error,
                                "{0}: Exception syntax checking string \"{1}\": {2}",
                                typeof(SledLuaSyntaxCheckerService), value, ex.Message);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                SledOutDevice.OutLine(
                    SledMessageType.Error,
                    "{0}: Exception creating syntax checker: {1}",
                    typeof(SledLuaSyntaxCheckerService), ex.Message);
            }

            return(errors);
        }