コード例 #1
0
        public void RecursiveSearchMatch()
        {
            var config = ScriptableObject.CreateInstance <ProjectAuditorConfig>();

            config.AnalyzeEditorCode = false;

            var projectAuditor = new Unity.ProjectAuditor.Editor.ProjectAuditor(config);

            var projectReport = projectAuditor.Audit();
            var issues        = projectReport.GetIssues(IssueCategory.Code);
            var stringFilter  = new TextFilter
            {
                matchCase          = true,
                searchDependencies = false,
                searchText         = "WrapperClass"
            };
            var filteredIssues = issues.Where(i => stringFilter.Match(i));

            Assert.AreEqual(0, filteredIssues.Count());

            // try again looking into dependencies too
            stringFilter.searchDependencies = true;

            filteredIssues = issues.Where(i => stringFilter.Match(i));
            Assert.AreEqual(1, filteredIssues.Count());
        }
コード例 #2
0
        public void CaseSensitiveMatch()
        {
            var projectAuditor = new Unity.ProjectAuditor.Editor.ProjectAuditor();

            // disabling stripEngineCode will be reported as an issue
            PlayerSettings.stripEngineCode = false;

            var projectReport = projectAuditor.Audit();
            var issues        = projectReport.GetIssues(IssueCategory.ProjectSettings);
            var stringFilter  = new TextFilter
            {
                matchCase          = true,
                searchDependencies = false,
                searchText         = "Engine Code Stripping"
            };
            var filteredIssues = issues.Where(i => stringFilter.Match(i));

            Assert.AreEqual(1, filteredIssues.Count());

            stringFilter.searchText = "engine code stripping";

            filteredIssues = issues.Where(i => stringFilter.Match(i));

            Assert.AreEqual(0, filteredIssues.Count());
        }
コード例 #3
0
        public bool Match(ProjectIssue issue)
        {
            // return false if the issue does not match one of these criteria:
            // - assembly name, if applicable
            // - area
            // - is not muted, if enabled
            // - critical context, if enabled/applicable

            Profiler.BeginSample("MatchAssembly");
            var matchAssembly = !activeView.desc.showAssemblySelection ||
                                m_AssemblySelection != null &&
                                (m_AssemblySelection.Contains(issue.GetCustomProperty((int)CodeProperty.Assembly)) ||
                                 m_AssemblySelection.ContainsGroup("All"));

            Profiler.EndSample();
            if (!matchAssembly)
            {
                return(false);
            }

            Profiler.BeginSample("MatchArea");
            var matchArea = !activeView.desc.showAreaSelection ||
                            m_AreaSelection.ContainsAny(issue.descriptor.area.Split('|')) ||
                            m_AreaSelection.ContainsGroup("All");

            Profiler.EndSample();
            if (!matchArea)
            {
                return(false);
            }

            if (!m_Preferences.mutedIssues && activeView.desc.showMuteOptions)
            {
                Profiler.BeginSample("IsMuted");
                var muted = m_ProjectAuditor.config.GetAction(issue.descriptor, issue.GetCallingMethod()) ==
                            Rule.Severity.None;
                Profiler.EndSample();
                if (muted)
                {
                    return(false);
                }
            }

            if (activeView.desc.showCritical &&
                m_Preferences.onlyCriticalIssues &&
                !issue.isPerfCriticalContext)
            {
                return(false);
            }

            return(m_TextFilter.Match(issue));
        }
コード例 #4
0
        private void ApplyFunctionFilter()
        {
            if (_activeFunctions == null)
            {
                return;
            }

            var filter = new TextFilter(c_functionFilter.Text);

            foreach (var func in _activeFunctions)
            {
                func.Visible = filter.Match(func.Name);
            }
        }
コード例 #5
0
        public void CaseInsensitiveMatch()
        {
            // disabling stripEngineCode will be reported as an issue
            PlayerSettings.stripEngineCode = false;

            var issues       = Utility.Analyze(IssueCategory.ProjectSettings);
            var stringFilter = new TextFilter
            {
                matchCase          = false,
                searchDependencies = false,
                searchText         = "engine code stripping"
            };
            var filteredIssues = issues.Where(i => stringFilter.Match(i));

            Assert.AreEqual(1, filteredIssues.Count());
        }
コード例 #6
0
        public void FilenameMatch()
        {
            var projectAuditor = new Unity.ProjectAuditor.Editor.ProjectAuditor();

            var projectReport = projectAuditor.Audit();
            var issues        = projectReport.GetIssues(IssueCategory.Code);
            var stringFilter  = new TextFilter
            {
                matchCase          = false,
                searchDependencies = false,
                searchText         = "FilterTests.cs"
            };
            var filteredIssues = issues.Where(i => stringFilter.Match(i));

            Assert.AreEqual(1, filteredIssues.Count());
        }
コード例 #7
0
        public void EmptyStringMatchesAllIssues()
        {
            // disabling stripEngineCode will be reported as an issue
            PlayerSettings.stripEngineCode = false;

            var stringFilter = new TextFilter
            {
                matchCase          = true,
                searchDependencies = false,
                searchText         = string.Empty
            };

            var issues         = Utility.Analyze(IssueCategory.ProjectSettings);
            var filteredIssues = issues.Where(i => stringFilter.Match(i));

            Assert.AreEqual(issues.Length, filteredIssues.Count());
        }
コード例 #8
0
        private void UpdateForFileFilter()
        {
            var filterText = c_fileFilterTextBox.Text;

            if (string.IsNullOrWhiteSpace(filterText))
            {
                // Display the tree
                c_fileTree.Visibility = System.Windows.Visibility.Visible;
                c_fileList.Visibility = System.Windows.Visibility.Hidden;
            }
            else
            {
                // Display the filtered list
                c_fileList.Items.Clear();

                var numItems = 0;

                var hiddenExt   = GetHiddenExtensions();
                var appSettings = ProbeEnvironment.CurrentAppSettings;

                var filter = new TextFilter(filterText);
                foreach (var file in appSettings.SourceAndIncludeFiles)
                {
                    if (hiddenExt.Contains(System.IO.Path.GetExtension(file).ToLower()))
                    {
                        continue;
                    }

                    if (filter.Match(System.IO.Path.GetFileName(file)))
                    {
                        if (numItems >= Constants.FileListMaxItems)
                        {
                            c_fileList.Items.Add(CreateFileListOverflowItem());
                            break;
                        }

                        c_fileList.Items.Add(CreateFileListItem(file));
                        numItems++;
                    }
                }

                c_fileTree.Visibility = System.Windows.Visibility.Hidden;
                c_fileList.Visibility = System.Windows.Visibility.Visible;
            }
        }
コード例 #9
0
        public void FilenameMatch()
        {
            var config = ScriptableObject.CreateInstance <ProjectAuditorConfig>();

            config.AnalyzeEditorCode = false;

            var projectAuditor = new Unity.ProjectAuditor.Editor.ProjectAuditor(config);

            var projectReport = projectAuditor.Audit();
            var issues        = projectReport.GetIssues(IssueCategory.Code);
            var stringFilter  = new TextFilter
            {
                matchCase          = false,
                searchDependencies = false,
                searchText         = "FilterTests.cs"
            };
            var filteredIssues = issues.Where(i => stringFilter.Match(i));

            Assert.AreEqual(1, filteredIssues.Count());
        }