AnalyzerSettingsProvider.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using UnityEditor;
  2. using UnityEngine;
  3. using System.Collections.Generic;
  4. namespace IntelligentProjectAnalyzer.Editor
  5. {
  6. // This class registers the settings provider, which is what makes the settings
  7. // appear in the Project Settings window.
  8. internal static class AnalyzerSettingsProvider
  9. {
  10. private static SerializedObject _mSettings;
  11. [SettingsProvider]
  12. public static SettingsProvider CreateAnalyzerSettingsProvider()
  13. {
  14. var provider = new SettingsProvider("Project/Analyzer Settings", SettingsScope.Project)
  15. {
  16. label = "Analyzer Settings",
  17. guiHandler = GuiDraw,
  18. keywords = new HashSet<string>(new[] { "Analyzer", "Dependency", "Roslyn", "System", "Types" })
  19. };
  20. return provider;
  21. }
  22. private static void GuiDraw(string _)
  23. {
  24. _mSettings ??= new SerializedObject(AnalyzerSettingsCrud.GetOrCreateSettings());
  25. EditorGUILayout.LabelField("Default System Types", EditorStyles.boldLabel);
  26. EditorGUI.BeginDisabledGroup(true);
  27. EditorGUILayout.TextField("System");
  28. EditorGUILayout.TextField("UnityEngine");
  29. EditorGUILayout.TextField("UnityEditor");
  30. EditorGUI.EndDisabledGroup();
  31. EditorGUILayout.Space();
  32. EditorGUILayout.LabelField("Custom System Types", EditorStyles.boldLabel);
  33. EditorGUILayout.HelpBox("Add additional namespace prefixes to be ignored by the analyzer (e.g., 'MyCompany.CoreLib').", MessageType.Info);
  34. EditorGUILayout.PropertyField(_mSettings.FindProperty("mCustomSystemTypes"), new GUIContent("Ignored Namespaces"), true);
  35. if (_mSettings.hasModifiedProperties)
  36. {
  37. _mSettings.ApplyModifiedProperties();
  38. }
  39. }
  40. }
  41. }