public void PredefinedChecks_ChangeValue_CompareViewToFile()
        {
            var settingsHandler  = new SettingsHandler();
            var settingsProvider = new SettingsProvider();

            var tidyChecks           = new TidyChecks();
            var tidyPredefinedChecks = new List <TidyCheckModel>(tidyChecks.Checks);
            var checks = new StringBuilder();

            tidyPredefinedChecks[0].IsChecked = true;
            foreach (TidyCheckModel item in tidyPredefinedChecks)
            {
                if (item.IsChecked)
                {
                    checks.Append(item.Name).Append(";");
                }
            }

            var tidySettingsModel = new TidySettingsModel
            {
                PredefinedChecks = checks.ToString()
            };

            settingsProvider.SetTidySettingsModel(tidySettingsModel);
            settingsHandler.SaveSettings();
            settingsHandler.ResetSettings();
            settingsHandler.LoadSettings();

            Assert.Equal(tidySettingsModel.PredefinedChecks, settingsProvider.GetTidySettingsModel().PredefinedChecks);
        }
        /// <summary>
        /// Get the header filter option from the Clang Tidy Option page
        /// </summary>
        /// <returns>Header filter option</returns>
        private string GetHeaderFilters()
        {
            TidySettingsModel tidySettings = settingsProvider.GetTidySettingsModel();

            return(string.Format("{0} ''{1}''", ScriptConstants.kHeaderFilter,
                                 string.IsNullOrWhiteSpace(ClangTidyHeaderFiltersConvertor.ScriptEncode(tidySettings.HeaderFilter)) ?
                                 tidySettings.HeaderFilter :
                                 ClangTidyHeaderFiltersConvertor.ScriptEncode(tidySettings.HeaderFilter)));
        }
        public void CustomExecutable_ChangeValue_CompareViewToFile()
        {
            var settingsHandler   = new SettingsHandler();
            var settingsProvider  = new SettingsProvider();
            var tidySettingsModel = new TidySettingsModel
            {
                CustomExecutable = @"D:\Test.exe"
            };

            settingsProvider.SetTidySettingsModel(tidySettingsModel);
            settingsHandler.SaveSettings();
            settingsHandler.ResetSettings();
            settingsHandler.LoadSettings();

            Assert.Equal(tidySettingsModel.CustomExecutable, settingsProvider.GetTidySettingsModel().CustomExecutable);
        }
        public void ChecksFrom_ChangeValue_CompareViewToFile()
        {
            var settingsHandler   = new SettingsHandler();
            var settingsProvider  = new SettingsProvider();
            var tidySettingsModel = new TidySettingsModel
            {
                UseChecksFrom = ClangTidyUseChecksFrom.TidyFile
            };

            settingsProvider.SetTidySettingsModel(tidySettingsModel);
            settingsHandler.SaveSettings();
            settingsHandler.ResetSettings();
            settingsHandler.LoadSettings();

            Assert.Equal(tidySettingsModel.UseChecksFrom, settingsProvider.GetTidySettingsModel().UseChecksFrom);
        }
        public void HeaderFilter_ChangeValue_CompareViewToFile()
        {
            var settingsHandler   = new SettingsHandler();
            var settingsProvider  = new SettingsProvider();
            var tidySettingsModel = new TidySettingsModel
            {
                HeaderFilter = "test"
            };

            settingsProvider.SetTidySettingsModel(tidySettingsModel);
            settingsHandler.SaveSettings();
            settingsHandler.ResetSettings();
            settingsHandler.LoadSettings();

            Assert.Equal(tidySettingsModel.HeaderFilter, settingsProvider.GetTidySettingsModel().HeaderFilter);
        }
        public void ClangTidyOnSave_ChangeValue_CompareViewToFile()
        {
            var settingsHandler   = new SettingsHandler();
            var settingsProvider  = new SettingsProvider();
            var tidySettingsModel = new TidySettingsModel
            {
                TidyOnSave = true
            };

            settingsProvider.SetTidySettingsModel(tidySettingsModel);
            settingsHandler.SaveSettings();
            settingsHandler.ResetSettings();
            settingsHandler.LoadSettings();

            Assert.Equal(tidySettingsModel.TidyOnSave, settingsProvider.GetTidySettingsModel().TidyOnSave);
        }
        public void FormatAfterTidy_ChangeValue_CompareViewToFile()
        {
            var settingsHandler   = new SettingsHandler();
            var settingsProvider  = new SettingsProvider();
            var tidySettingsModel = new TidySettingsModel
            {
                FormatAfterTidy = true
            };

            settingsProvider.SetTidySettingsModel(tidySettingsModel);
            settingsHandler.SaveSettings();
            settingsHandler.ResetSettings();
            settingsHandler.LoadSettings();

            Assert.Equal(tidySettingsModel.FormatAfterTidy, settingsProvider.GetTidySettingsModel().FormatAfterTidy);
        }
        public void CustomChecks_ChangeValue_CompareViewToFile()
        {
            var settingsHandler   = new SettingsHandler();
            var settingsProvider  = new SettingsProvider();
            var tidySettingsModel = new TidySettingsModel
            {
                CustomChecks = "test-check"
            };

            settingsProvider.SetTidySettingsModel(tidySettingsModel);
            settingsHandler.SaveSettings();
            settingsHandler.ResetSettings();
            settingsHandler.LoadSettings();

            Assert.Equal(tidySettingsModel.CustomChecks, settingsProvider.GetTidySettingsModel().CustomChecks);
        }
        private string GetTidyChecks(TidySettingsModel tidyModel)
        {
            ClangTidyUseChecksFrom useChecksFrom = tidyModel.UseChecksFrom;

            if (useChecksFrom == ClangTidyUseChecksFrom.CustomChecks)
            {
                return(ScriptConstants.kTidyCheckFirstElement + tidyModel.CustomChecks.Replace(';', ',').TrimEnd(','));
            }
            else if (useChecksFrom == ClangTidyUseChecksFrom.PredefinedChecks)
            {
                return(ScriptConstants.kTidyCheckFirstElement + tidyModel.PredefinedChecks.Replace(';', ',').TrimEnd(','));
            }
            else
            {
                return(ScriptConstants.kTidyFile);
            }
        }
Exemplo n.º 10
0
        public async Task RunClangTidyAsync(int aCommandId, CommandUILocation commandUILocation)
        {
            await PrepareCommmandAsync(commandUILocation);

            await Task.Run(() =>
            {
                try
                {
                    using (var silentFileController = new SilentFileChangerController())
                    {
                        using (var fileChangerWatcher = new FileChangerWatcher())
                        {
                            SettingsProvider settingsProvider = new SettingsProvider();
                            TidySettingsModel tidySettings    = settingsProvider.GetTidySettingsModel();

                            if (CommandIds.kTidyFixId == aCommandId || tidySettings.TidyOnSave)
                            {
                                fileChangerWatcher.OnChanged += FileOpener.Open;

                                var dte2 = VsServiceProvider.GetService(typeof(DTE)) as DTE2;
                                string solutionFolderPath = SolutionInfo.IsOpenFolderModeActive() ?
                                                            dte2.Solution.FullName : dte2.Solution.FullName
                                                            .Substring(0, dte2.Solution.FullName.LastIndexOf('\\'));

                                fileChangerWatcher.Run(solutionFolderPath);

                                FilePathCollector fileCollector = new FilePathCollector();
                                var filesPath = fileCollector.Collect(mItemsCollector.Items).ToList();

                                silentFileController.SilentFiles(filesPath);
                                silentFileController.SilentFiles(dte2.Documents);
                            }
                            RunScript(aCommandId);
                        }
                    }
                }
                catch (Exception exception)
                {
                    VsShellUtilities.ShowMessageBox(AsyncPackage, exception.Message, "Error",
                                                    OLEMSGICON.OLEMSGICON_CRITICAL, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST);
                }
            });
        }
        /// <summary>
        /// Get the parameters from the Tidy related option page
        /// </summary>
        /// <returns></returns>
        private string GetTidyParameters()
        {
            TidySettingsModel tidySettings = settingsProvider.GetTidySettingsModel();

            // Get the clang tidy parameters depending on the tidy mode
            var parameters = GetTidyChecks(tidySettings);


            // Append the clang tidy type(tidy / tidy-fix) with / without clang tidy config file option attached
            if (!string.IsNullOrWhiteSpace(parameters))
            {
                parameters = AppendClangTidyType(parameters);
            }

            // Get the header filter option
            if (null != tidySettings.HeaderFilter && !string.IsNullOrWhiteSpace(tidySettings.HeaderFilter))
            {
                parameters += $" {GetHeaderFilters()}";
            }

            return(parameters);
        }
        /// <summary>
        /// Create the generic script by gathering all the generic parameters from the environment and settings components
        /// </summary>
        public void Build()
        {
            // Append the General parameters and Tidy parameters from option pages
            mScript = $"{GetGeneralParameters()} {(CommandIds.kTidyId == mCommandId || CommandIds.kTidyFixId == mCommandId ? GetTidyParameters() : ScriptConstants.kParallel)}";

            FormatSettingsModel formatSettings = settingsProvider.GetFormatSettingsModel();
            TidySettingsModel   tidySettings   = settingsProvider.GetTidySettingsModel();

            // Append the clang-format style
            if (null != formatSettings && null != tidySettings && CommandIds.kTidyFixId == mCommandId && tidySettings.FormatAfterTidy)
            {
                mScript += $" {ScriptConstants.kClangFormatStyle} {formatSettings.Style}";
            }

            // Append the Visual Studio Version and Edition
            mScript += $" {ScriptConstants.kVsVersion} {mVsVersion} {ScriptConstants.kVsEdition} {mVsEdition}";

            // Append the solution path
            if (VsServiceProvider.TryGetService(typeof(DTE), out object dte))
            {
                mScript += $" {ScriptConstants.kDirectory} ''{(dte as DTE2).Solution.FullName}''";
            }
        }
Exemplo n.º 13
0
 public void SetTidySettingsModel(TidySettingsModel model)
 {
     tidySettingsModel = model;
 }