private void FindDuplicateIndexes(object sender, EventArgs e)
        {
            try
            {
                CallWrapper();
                var task = new System.Threading.Tasks.Task(() =>
                {
                    OutputPane.WriteMessageAndActivatePane("Finding Duplicate Indexes...");
                    var finder = new DuplicateIndexFinder();
                    finder.ShowDuplicateIndexes();
                    OutputPane.WriteMessageAndActivatePane("Finding Duplicate Indexes...done");
                });

                task.Start();

                if (task.Exception != null)
                {
                    throw task.Exception;
                }
            }
            catch (Exception ex)
            {
                OutputPane.WriteMessage("Error finding duplicate indexes: {0}", ex.Message);
            }
        }
Esempio n. 2
0
 private void ClearConnection(object sender, RoutedEventArgs e)
 {
     try
     {
         _connectionString = String.Empty;
     }
     catch (Exception ex)
     {
         OutputPane.WriteMessageAndActivatePane("SSDTDevPack: CodeCoverage: Exception calling ClearConnection: {0}", ex);
     }
 }
Esempio n. 3
0
 private void DiscardResults(object sender, RoutedEventArgs e)
 {
     try
     {
         var store = CodeCoverageStore.Get;
         store.ClearStatements();
         ShowCodeMap(sender, e);
     }
     catch (Exception ex)
     {
         OutputPane.WriteMessageAndActivatePane("SSDTDevPack: CodeCoverage: Exception calling Discard: {0}", ex);
     }
 }
 private void QuickDeployClearConnection(object sender, EventArgs e)
 {
     try
     {
         QuickDeployer.ClearConnectionString();
         OutputPane.WriteMessageAndActivatePane("Quick Deploy Connection String has been cleared.");
     }
     catch (Exception ex)
     {
         OutputPane.WriteMessage("QuickDeployClearConnection error: {0}", ex.Message);
         Log.WriteInfo("QuickDeployClearConnection error: {0}", ex.Message);
     }
 }
        public void Start()
        {
            try
            {
                _continue = true;
                _gateway  = new DatabaseGateway(_connectionString).Get();

                _gateway.StartTrace();
            }
            catch (Exception e)
            {
                OutputPane.WriteMessageAndActivatePane("CodeCoverage, error starting the trace: {0}", e);
            }
        }
        public void Stop()
        {
            try
            {
                _gateway.StopTrace();

                foreach (var item in _gateway.GetStatements(ObjectNameCache))
                {
                    CoveredStatements.Enqueue(item);
                }
            }
            catch (Exception e)
            {
                OutputPane.WriteMessageAndActivatePane("CodeCoverage, error stopping the trace: {0}", e);
            }
        }
Esempio n. 7
0
        private void Stop(object sender, RoutedEventArgs e)
        {
            try
            {
                _reader.Stop();
                var count = _reader.CoveredStatements.Count;

                CodeCoverageStore.Get.AddStatements(_reader.CoveredStatements, _reader.ObjectNameCache);

                StartButton.IsEnabled = true;
                StopButton.IsEnabled  = false;
                Status.Text           = "Added " + count + " statements to code coverage";

                ShowCodeMap(sender, e);
            }
            catch (Exception ex)
            {
                OutputPane.WriteMessageAndActivatePane("SSDTDevPack: CodeCoverage: Exception calling Stop: {0}", ex);
            }
        }
Esempio n. 8
0
        private void Start(object sender, RoutedEventArgs e)
        {
            try
            {
                if (String.IsNullOrEmpty(_connectionString))
                {
                    var dialog = new ConnectDialog();
                    dialog.ShowDialog();
                    _connectionString = dialog.ConnectionString;

                    if (String.IsNullOrEmpty(_connectionString))
                    {
                        return;
                    }
                }

                Task.Run(() =>
                {
                    try
                    {
                        _reader = new ExtendedEventDataDataReader(_connectionString);
                        _reader.Start();
                    }
                    catch (Exception ex)
                    {
                        OutputPane.WriteMessageAndActivatePane("SSDTDevPack: CodeCoverage: Exception calling Start (Worker Thread): {0}", ex);
                    }
                });


                StartButton.IsEnabled = false;
                StopButton.IsEnabled  = true;
            }
            catch (Exception ex)
            {
                OutputPane.WriteMessageAndActivatePane("SSDTDevPack: CodeCoverage: Exception calling Start (UI Thread): {0}", ex);
            }
        }
        private void CorrectCaseTableNames(object sender, EventArgs e)
        {
            try
            {
                var task = new System.Threading.Tasks.Task(() =>
                {
                    OutputPane.WriteMessageAndActivatePane("Correcting the case of table names...");
                    var finder = new CorrectCaseTableFinder();
                    finder.CorrectCaseAllTableNames();
                    OutputPane.WriteMessageAndActivatePane("Correcting the case of table names...done");
                });

                task.Start();

                if (task.Exception != null)
                {
                    throw task.Exception;
                }
            }
            catch (Exception ex)
            {
                OutputPane.WriteMessage("Error correcting table name case: {0}", ex.Message);
            }
        }
Esempio n. 10
0
        private void ShowCodeMap(object sender, RoutedEventArgs e)
        {
            try
            {
                CodeMap.Items.Clear();

                var store = CodeCoverageStore.Get;

                var projects = new ProjectEnumerator().Get(ProjectType.SSDT);
                foreach (var p in projects)
                {
                    var newItem = new TreeViewItem();
                    //newItem.Header = p.Name;

                    var statements = new StatementEnumerator().GetStatements(p);
                    var fileMap    = new Dictionary <string, List <CodeStatement <TSqlStatement> > >();


                    foreach (var statement in statements)
                    {
                        if (!fileMap.ContainsKey(statement.FileName))
                        {
                            fileMap[statement.FileName] = new List <CodeStatement <TSqlStatement> >();
                        }

                        fileMap[statement.FileName].Add(statement);
                    }

                    double parentStatements        = 0;
                    double parentCoveredStatements = 0;

                    foreach (var file in fileMap.Keys.OrderBy(pp => pp))
                    {
                        var map = fileMap[file];

                        var    child                  = new TreeViewItem();
                        double childStatements        = 0;
                        double childCoveredStatements = 0;



                        foreach (var sqlModule in map.Where(o => o.Statement.GetType() == typeof(CreateProcedureStatement)))
                        {
                            var name = (sqlModule.Statement as CreateProcedureStatement)?.ProcedureReference.Name.ToNameString();
                            parentStatements = AddChildItems(name, sqlModule, store, parentStatements, file, child, ref parentCoveredStatements, ref childStatements, ref childCoveredStatements);
                            store.AddStatementFileMap(name, sqlModule.FileName);
                        }


                        foreach (var sqlModule in map.Where(o => o.Statement.GetType() == typeof(CreateFunctionStatement)))
                        {
                            var name = (sqlModule.Statement as CreateFunctionStatement)?.Name.ToNameString();
                            parentStatements = AddChildItems(name, sqlModule, store, parentStatements, file, child, ref parentCoveredStatements, ref childStatements, ref childCoveredStatements);
                            store.AddStatementFileMap(name, sqlModule.FileName);
                        }


                        var childCoveragePercent = ((double)childCoveredStatements / (double)childStatements) * 100;
                        var childLabel           = new LabelWithProgressIndicator(string.Format("{0} - {1}% ({2} / {3})", new FileInfo(file).Name, childCoveragePercent, childCoveredStatements, childStatements), childCoveragePercent, file);
                        childLabel.Configure();
                        child.Header = childLabel;


                        if (child.Items.Count > 0)
                        {
                            newItem.Items.Add(child);
                        }
                    }

                    var parentLabel = new LabelWithProgressIndicator(string.Format("{0} - ({1} / {2})", p.Name, parentCoveredStatements, parentStatements), (parentCoveredStatements / parentStatements) * 100.0);
                    parentLabel.Configure();
                    newItem.Header = parentLabel;

                    CodeMap.Items.Add(newItem);
                }
            }
            catch (Exception ex)
            {
                OutputPane.WriteMessageAndActivatePane("SSDTDevPack: Exception calling ShowCodeMap: {0}", ex);
            }
        }