All notable changes to this package will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Autosave feature keeps current report persistent upon closing Project Auditor
- Summary UI shows a report's display name with star indicator for an unsaved report
- Requester when a report is unsaved and user clicks "New Analysis" button
- Display/Ignore All buttons
- Copy-to-Clipboard buttons to Details and Recommendations
- Vertical scrollbar to Details and Recommendations
- CompilationMode selection to Welcome page
- Shader view reports total property count and texture property count for Unity 2019.3 and above
- Compute shader variant view reports kernel thread count for Unity 2021.2 and above
- View-specific descriptions
- AudioClip diagnostics
- Material list view in shader module
- AnimatorController reporting
- AnimationClip reporting
- Avatar reporting
- AvatarMask reporting
- Domain Reload Roslyn analyzer
- New Area category for IterationTime issues
- Code/Domain Reload view, showing any issues raised by the Domain Reload Roslyn analyzer
- Domain Reload diagnostic issues in the Settings view if Domain Reload is enabled
- Diagnostics for unsupported APIs on WebGL target
- Diagnostic for Static Batching being enabled whilst Entities Graphics is installed
- Support for cancelling analysis
- UI redesign of Summary showing issue breakdown, list of top ten issues, and buttons to jump to additional insights/views
- Improved issue description and suggestion strings, to make them clearer and more consistent
- Solid Color Texture analyzer now works for all texture types (2D, 2DArray, 3D, Cube) in Unity 2019.2 and above
- Upgrade com.unity.nuget.mono-cecil to 1.11.4
- Visualization of the Horizontal Stacked Bar and Legend Item
- Improved AudioClip asset table
- Clear table selection on unmuting issues
- Move some data that should be user-configurable to UserPreferences
- Report serialization files changed so that saved JSON is <= half the size it was before
- Configuration is now handled via a ProjectAuditorSettings class/asset
- Refactored and documented public API to allow CI/CD integration
- Refactored, exposed and documented API to allow the creation of custom ModuleAnalyzers
- Table views automatically resize columns to fit the data being displayed
- Almost complete rewrite of the package documentation
- Actions section and Mute/Unmute buttons
- Settings from ProjectAuditorConfig
- Support for Unity 2018 and 2019.
- BuildReports are no longer saved into the project's Assets folder, and are instead cached in callbacks or read directly from the Library folder.
- Analysis never completes if an exception is thrown
- Compilation if both URP and HDRP are installed
- UI default column sorting
- UI sorting criteria persistence after domain reload
- Config changes not saved to corresponding asset
- Ignoring texture streaming issues
- Texture size reporting on Unity 2022.2 and above is now accurate
- Unusually-formatted compiler warnings (such as the one generated by including mcs.rsp in the project) no longer cause all code compilation and analysis to silently fail.
- Bumped analytics events version number from v1 to v2
- Made many APIs internal rather than public
- Added properly-formatted comments to enable API documentation for all remaining public types and methods
- Changes to documentation in .md files to ensure standards compliance
- Ignore SpriteAtlas test failures
- Automated tests from package
- SRP Asset Settings analyzer
- Shader SRP Batcher analyzer
- Solid Color Texture analyzer
- Texture anisotropic level analyzer
- Universal Render Pipeline analyzer
- CHANGELOG.md format to ensure it adheres to Unity standards
- Asset diagnostics IDs.
- Lines and bars drawing
- Missing "Read/Write" diagnostic recommendations
- Texture mipmaps streaming analyzer
- View switching cancellation
- Percentage formatting support
- Individual asset size percentage to Build Report
- Test utility classes to package
- Added Fog shader variant stripping analyzer
- Added IL2CPP Compiler Configuration analyzer
- Backwards compatibility
- Reporting of shader variants if not compiled for analysis platform
- Displaying of large values of total shader variants
- Copy to Clipboard support of issue property
- Table sorting
- UnityEngine.Object.FindObjectOfType usage detection
- Settings asset for configuring analyzers
- Severity information to diagnostics UI
- Names of build-generated assets in Build Report
- Parsing of unnamed shader passes in Unity 2021.2.14+
- UnityEngine.AudioSettings speaker mode diagnostic
- Diagnostic area Quality, Support and Requirement
- documentation support to descriptor
- Issue fixer support to descriptor
- Package diagnostics
- On-demand Texture, AudioClip, Mesh modules
- Compute Shader Variants support
- Over-reporting of built shader variants count
- Export of filtered/selected non-diagnostic issues
- Build Report object name
- Text alignment and wrapping issues
- Build report steps text wrapping
- Diagnostics critical property persistence after domain reload
- Improved text search to match custom properties
- Packages module to report installed packages and dependencies
- Analysis platform on incremental audit
- Compilation error due to newer com.unity.nuget.mono-cecil
- HTML export support
- Packages module as Experimental
- params array allocation diagnostic
- NullReferenceException on Draw2D shader not being found
- User preferences
- Group size/time properties
- Support for analyzing all compiled Editor assemblies
- Platform selection to Home screen
- Descriptor ID type from int to string
- Diagnostic Rules serialization
- Home page NullReferenceException on Build
- NullReferenceException on export of non-diagnostic issues
- Improved issue creation code-readability by using ProjectIssueBuilder
- ProjectAuditorConfig option to enable/disable Roslyn analyzers
- ProjectAuditorParams option for compiling selected assemblies
- Discard button to toolbar
- Modules selection to Home screen
- Support for reporting precompiled assemblies
- Renamed asynchronous ProjectAuditor.Audit to AuditAsync
- Compatibility with Unity 2022
- Improved code analysis performance by caching "resolved" types
- ProjectAuditor.NumCategories API
- Module-specific incremental analysis support
- Support to disable a module by default
- 'Clear Selection' and 'Filter by Description' options to context menu
- SavePath to configuration asset
- Graphics Tier information to reported Shader Variants
- Diagnostic message formatting support
- Dependencies panel to assembly view
- ImporterType to Build File properties
- Default compilation mode to Non-Development
- Replaced AnalyzeEditorCode with CompilationMode setting
- Reporting of assemblies not compiled due to dependencies
- Improved code diagnostic messages
- Improved UI groups to support arbitrary grouping criteria
- Removed the need to have a Descriptor associated with non-diagnostic issues
- Build Report analysis 'Illegal characters in path' exception
- Shaders analysis 'Illegal characters in path' exception
- Compilation warnings
- Export of variants with no keywords
- Groups support to Shaders view
- Support for exporting Shader Variants as Shader Variant Collection
- Optimized call tree building and visualization
- OnRenderObject and OnWillRenderObject to list of MonoBehavior critical contexts
- Compilation Time property to Assemblies view
- Public API to get float/double custom property
- Context menu item to open selected issue
- Optimized viewing and sorting UI performance
- Closure allocation diagnostic message
- Sorting of call hierarchy nodes
- UnityEngine.Object.name code diagnostic
- Severity filters support
- Unreported assemblies that failed to compile
- View switching if any module is unsupported
- Database of API usage descriptors
- Redundant API usage descriptors
- Shader Size, Source Asset and Always Included info to Shaders view
- Shader Severity column to indicate any compiler message
- Stage, Pass Type and Platform Keywords to Shader Variants view
- Shader Variants view right scrollable panels
- Shader Compiler Messages reporting
- Usage of deprecated shader API
- Shader compilation log parsing in 2021 or newer
- Cleanup of Shader Variants builds data in 2021 or newer
- Option to enable creation of BuildReport asset after each build
- UWP compilation issues
- ArgumentException on table Page Up/Down
- InvalidOperationException due failure to resolve asmdef
- NullReferenceException due to null compiler message
- NullReferenceException on empty table
- ShaderCompilerData parsing in 2021.2.0a16 or newer
- Disabling of unsupported modules
- Unreported output files from the same source asset
- Automatic creation of last BuildReport asset after build
- Documentation pages
- UI Button to open documentation page based on active view
- BuildReport Viewer UI
- Runtime Type property to BuildReport size items
- OnAnimatorIK and OnAnimatorMove to MonoBehaviour hot-paths
- NullReferenceException on projects with multiple dll with same name
- Variants view ShaderRequirements information
- Window opening after each build
- ProjectReport.ExportToCSV filtering
- Mono.Cecil package dependency
- ProjectReport.ExportToCSV to public API
- "No graphic device is available" error in batchmode
- NullReferenceException when searching Call Tree on Resources view
- OverflowException on reporting build sizes
- Player.log parsing if a shader name contains commas
- Persistent "Analysis in progress..." message
- Assemblies view (experimental)
- Build Report Steps view
- Overview stats to Build Report Size view
- Detection of HDRP mixed LitShaderMode
- HDRP settings analyzer
- Build Report Build Name
- Empty MonoBehaviour event detection
- Graphics Tier Settings misreporting
- Failed/cancelled report loading from file
- Improved Shader Variants analysis workflow
- Build Report support
- Compiler Messages support
- Generic types instantiation analysis
- Summary view
- Save&Load support
- Log Shader Compilation option to Shader Variants view
- Shaders view shortcut to Shader Variants view
- Compilation pipeline to use AssemblyBuilder
- Shader Variants Window to simple view
- Shader Variants persistence in UI after Domain Reload
- Shader Variants Compiled column initial state
- Code Diagnostics view sorting
- Improved main documentation page
- System.DateTime.Now usage detection
- Descriptor's minimum/maximum version
- Splash-screen setting detection
- Zoom slider
- Replaced tabs-like view selection with toolbar dropdown list
- Changed Export feature to be view-specific
- experimental label from Allocation issues
- Reporting of issues affecting multiple areas
- Background analysis that results in code issues with empty filenames
- Android player.log parsing
- GraphicsSettings.logWhenShaderIsCompiled compilation error on early 2018.4.x releases
- Reduced UI managed allocations
- SRP Batcher column to Shader tab
- Support for parsing Player.log to identify which shader variants are compiled (or not-compiled) at runtime
- Shader errors/warnings reporting via Shader 'severity' icon
- Shader Requirements column to Shader tab
- Detection of API calls using a derived type
- Reporting of Editor Default Resources shaders
- ReflectionTypeLoadException
- Exception when switching focus from Area/Assembly window
- NullReferenceException on invalid shader or vfx shader
- NullReferenceException when building AssetBundles
- Shader variants reporting due to OnPreprocessBuild callback default order
- Support for analyzing Editor only code-paths
- reuseCollisionCallbacks physics API diagnostic
- Improved Shaders auditing to report both shaders and variants in their respective tables
- Assembly-CSharp-firstpass asmdef warning
- Backwards compatibility
- Shader variants auditing
- "Collapse/Expand All" buttons
- Refactoring and code quality improvements
- Dependencies view to Assets tab
- Double-click on an asset selects it in the Project Window
- CI information to documentation
- Move call tree to the bottom of the window
- Case-sensitive string search to be optional
- Page up/down key bug fixes
- Unity 2017 compatibility
- Default selected assemblies
- Area names filtering
- Call-tree serialization
- Auditing of assets in Resources folders
- Shader warmup issues
- Reorganized UI filters and mute/unmute buttons in separate foldouts
- Better names for project settings issues
- Issues sorting within a group
- ExportToCSV improvements
- Improved text search UX
- Improved test coverage
- Updated documentation
- Background assembly analysis
- Lost issue location after domain reload
- Tree view selection when background analysis is enabled
- Yamato configuration
- Boxing allocation analyzer
- Empty MonoBehaviour method analyzer
- GameObject.tag issue type to built-in analyzer
- StaticBatchingAndHybridPackage analyzer
- Object.Instantiate and GameObject.AddComponent issue types to built-in analyzer
- String.Concat issue type to built-in analyzer
- "experimental" allocation analyzer
- Performance critical context analysis
- Detect MonoBehaviour.Update/LateUpdate/FixedUpdate as perf critical contexts
- Detect ComponentSystem/JobComponentSystem.OnUpdate as perf critical contexts
- Critical-only UI filter
- Profiler markers
- Background analysis support
- Optimized UI refresh performance and Assembly analysis
- Config asset support
- Mute/Unmute buttons
- Assembly column
- Replaced Filters checkboxes with Popups
- Calling Method information
- Grouped view to Script issues
- "Resolved" checkboxes
- Lots of bug fixes
- Progress bar
- Package whitelist
- Tooltips
- Unity 2017.x backwards compatibility
Replaced placeholder database with real issues to look for. This version also allows the user to Resolve issues.
Proof of concept, mostly developed during Hackweek 2019.