in src/dotnet/PowerToys.CyclomaticComplexity/Options/ComplexityAnalysisOptionPage.cs [42:71]
public ComplexityAnalysisOptionPage(
Lifetime lifetime,
OptionsPageContext optionsPageContext,
OptionsSettingsSmartContext optionsSettingsSmartContext,
ILanguages languages,
ILanguageManager languageManager)
: base(lifetime, optionsPageContext, optionsSettingsSmartContext)
{
AddText("Specify cyclomatic complexity thresholds:");
var thresholds = OptionsSettingsSmartContext.Schema.GetIndexedEntry((CyclomaticComplexityAnalysisSettings s) => s.Thresholds);
var list = new List<LanguageSpecificComplexityProperty>();
foreach (var languageType in languages.All.Where(languageManager.HasService<IControlFlowBuilder>).OrderBy(GetPresentableName))
{
var presentableName = GetPresentableName(languageType);
var thing = new LanguageSpecificComplexityProperty(lifetime, optionsSettingsSmartContext, thresholds, languageType.Name, presentableName, CyclomaticComplexityAnalysisSettings.DefaultThreshold);
list.Add(thing);
}
var treeGrid = list.GetBeList(lifetime,
(l, e, p) => new List<BeControl>
{
e.Name.GetBeLabel(),
e.Threshold.GetBeSpinner(lifetime, min: 1)
},
new TreeConfiguration(new []{"Language,*", "Threshold,auto"}));
AddControl(treeGrid, isStar: true);
}