示例#1
0
        private string GetTidyParameters(ClangTidyOptionsView aTidyOptions, ClangTidyPredefinedChecksOptionsView aTidyChecks, ClangTidyCustomChecksOptionsView aTidyCustomChecks)
        {
            string parameters = string.Empty;

            if (0 == string.Compare(ComboBoxConstants.kTidyFile, ClangTidyUseChecksFromConvertor.ToString(aTidyOptions.UseChecksFrom)))
            {
                parameters   = ScriptConstants.kTidyFile;
                mUseTidyFile = true;
            }
            else if (0 == string.Compare(ComboBoxConstants.kCustomChecks, ClangTidyUseChecksFromConvertor.ToString(aTidyOptions.UseChecksFrom)))
            {
                if (false == string.IsNullOrWhiteSpace(aTidyCustomChecks.TidyChecks))
                {
                    parameters = $",{aTidyCustomChecks.TidyChecks.Replace(';', ',')}";
                }
            }
            else if (0 == string.Compare(ComboBoxConstants.kPredefinedChecks, ClangTidyUseChecksFromConvertor.ToString(aTidyOptions.UseChecksFrom)))
            {
                foreach (PropertyInfo prop in aTidyChecks.GetType().GetProperties())
                {
                    object[] propAttrs          = prop.GetCustomAttributes(false);
                    object   clangCheckAttr     = propAttrs.FirstOrDefault(attr => typeof(ClangCheckAttribute) == attr.GetType());
                    object   displayNameAttrObj = propAttrs.FirstOrDefault(attr => typeof(DisplayNameAttribute) == attr.GetType());

                    if (null == clangCheckAttr || null == displayNameAttrObj)
                    {
                        continue;
                    }

                    DisplayNameAttribute displayNameAttr = (DisplayNameAttribute)displayNameAttrObj;
                    var value = prop.GetValue(aTidyChecks, null);
                    if (Boolean.TrueString != value.ToString())
                    {
                        continue;
                    }
                    parameters = $"{parameters},{displayNameAttr.DisplayName}";
                }
            }

            if (string.Empty != parameters)
            {
                parameters = string.Format("{0} ''{1}{2}''",
                                           (true == aTidyOptions.Fix ? ScriptConstants.kTidyFix : ScriptConstants.kTidy),
                                           (mUseTidyFile ? "" : "-*"),
                                           parameters);
            }

            if (null != aTidyOptions.HeaderFilter && false == string.IsNullOrWhiteSpace(aTidyOptions.HeaderFilter.HeaderFilters))
            {
                parameters = string.Format("{0} {1} ''{2}''",
                                           parameters, ScriptConstants.kHeaderFilter,
                                           true == string.IsNullOrWhiteSpace(ClangTidyHeaderFiltersConvertor.ScriptEncode(aTidyOptions.HeaderFilter.HeaderFilters)) ?
                                           aTidyOptions.HeaderFilter.HeaderFilters : ClangTidyHeaderFiltersConvertor.ScriptEncode(aTidyOptions.HeaderFilter.HeaderFilters));
            }

            return(parameters);
        }
示例#2
0
        /// <summary>
        /// Get the parameters from the Tidy related option page
        /// </summary>
        /// <returns></returns>
        private string GetTidyParameters()
        {
            // Get the clang tidy parameters depending on the tidy mode
            var clangTidyParametersFactory = new ClangTidyModeParametersFactory(mTidyCustomChecks, mTidyChecks);
            var parameters = clangTidyParametersFactory.Create(
                ClangTidyUseChecksFromConvertor.ToString(mTidyOptions.UseChecksFrom), ref mUseClangTidyConfigFile);

            // 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 != mTidyOptions.HeaderFilter && !string.IsNullOrWhiteSpace(mTidyOptions.HeaderFilter.HeaderFilters))
            {
                parameters += $" {GetHeaderFilters()}";
            }

            return(parameters);
        }