ReSharper 2024.3 Help

Solution-wide analysis

Solution-wide analysis finds errors in all supported languages except C++, including ones that do not prevent your project from compiling. If your project includes such files (for example, JavaScript, CSS, HTML), solution-wide analysis will help you find errors that could be otherwise only detected in runtime.

ReSharper's solution-wide analysis enables two related but distinct features:

  • Solution-wide errors/warnings monitor, which lets you constantly keep track of all errors/warnings in your solution: both compiler errors/warnings and errors/warnings detected by ReSharper’s own inspections. This feature works together with the design-time code inspection and brings two advantages:

    • You do not have to open every file to make sure that your solution does not contain errors/warnings.

    • If you delete a public member or change its visibility, the code in the current file can still be correct, but what if this member is used somewhere else in the solution? For example, suppose that you changed the visibility of a member from public to internal, assuming that it was only used inside the current project. At this stage, ReSharper finds no errors in the current file. Then, you switch on solution-wide analysis, and actually there are errors. You can jump to the next error in solution and find out that someone uses this member from another project in your solution.

  • Solution-wide code inspections, which help find issues that can only be detected by analysing the whole solution (unused public types and members, unassigned public fields, suspicious type conversions and so on). When solution-wide analysis is enabled, issues detected by the solution-wide inspections are highlighted in the opened files in the same way as other issues, and they also appear in the Inspection Results window when you run code inspection in specific scope.

Enable solution-wide analysis

Solution-wide analysis can take some time for the initial processing of the solution and therefore, it is disabled by default. You should switch it on explicitly for every new solution you open.

  1. On the Code Inspection | Settings page of ReSharper options Alt+R, O, make sure that the Enable code analysis checkbox is selected, and click Enable solution-wide analysis. Optionally, you can enable or disable warnings in solution-wide analysis.

  2. Optionally, select Enable computationally expensive inspections, which turns on the data-flow analysis and brings additional inspections, for example, to calculate nullability.

  3. Optionally, select Monitor warnings to add warnings to the analysis.

  4. Click Save in the Options dialog to apply the modifications and let ReSharper choose where to save them, or save the modifications to a specific settings layer by choosing this layer from the Save To selector. For more information, see manage and share resharper settings.

Alternatively, you can right-click the circle indicator in the right corner of the status bar and use the context menu to toggle solution-wide analysis. If solution-wide analysis is off, just double-click the gray circle.

After you have switched on solution-wide analysis, several changes are made:

  • The status-bar indicator displays the progress of the analysis. After the analysis completes, the indicator turns green (if no errors/warnings were found), orange (if warnings in solution-wide analysis are enabled and if there are warnings in the solution), or red (if errors were discovered):

    Solution-wide analysis indicator
  • A small area to the left of the circle indicator is allocated to show the number of solution files that contain errors/warning, if any. You can click this area to go to next error/warning in the solution.

  • Solution-wide code inspections for non-private members become available both in the design-time code inspection and when you inspect code in a specific scope.

  • Names and semantics of the navigation commands in the ReSharper | Inspect menu change. Specifically, Next Error/Warning changes to Next Error/Warning in Solution and Previous Error/Warning becomes Previous Error/Warning in Solution.

Monitor warnings in solution

If you monitor warnings in the solution, the analysis becomes more resource-intensive and can affect performance on large solutions. Therefore, you can explicitly enable or disable monitoring of warnings.

Include/exclude warnings in solution-wide analysis

  • When solution-wide analysis is enabled, do one of the following:

    • On the Code Inspection | Settings page of ReSharper options Alt+R, O, use the Monitor warnings checkbox under Enable solution-wide analysis.

    • On the toolbar of the Errors/Warnings in Solution window, click Monitor Warnings ThemedIcon.Warning.Screen.(Gray).png.

  • When the warnings analysis is enabled, you can click ThemedIcon.Warning.Screen.(Gray).png in the Errors/Warnings in Solution window to show or hide warnings in the window and in the status bar indicator without restarting the analysis.

  • To stop monitoring warnings, clear the Monitor warnings checkbox on the Code Inspection | Settings page of ReSharper options Alt+R, O.

When warnings are enabled in solution-wide analysis, it works as follows: as long as there are errors in the solution, only errors will be displayed; unresolved warnings will only appear when the last error is fixed. When warnings are disabled, the status bar indicator will turn green as soon as the last error is fixed.

Study the list of errors/warnings

While solution-wide analysis is enabled, you can use the status bar indicator to monitor errors/warnings in the solution, but you can also get a detailed report on all errors/warnings in your solution in the Errors/Warnings in Solution window.

View the list of errors/warnings in solution

  1. Do one of the following:

    • Choose ReSharper | Windows | Solution Errors from the main menu .

    • Right-click the circle indicator in the right corner of the status bar and choose Show Errors View from the list.

    • Double-click the circle indicator.

  2. Either way, the Errors/Warnings in Solution window opens where you can view the list of detected errors/warnings and navigate to the related code by double-clicking the entries:

    ReSharper: Errors in Solution view

Even without opening this window, you can still easily navigate through errors in your solution with Alt+F12/Shift+Alt+F12 ( ReSharper | Inspect | Next Error/Warning/ ReSharper | Inspect | Previous Error/Warning) , or just by clicking the number of errors/warnings to the left of the status bar indicator.

Performance of solution-wide analysis

The main calculations of solution-wide analysis are performed when you first enable it. Depending on the size of your solution, these calculations may take from several seconds up to dozens of minutes. You will still be able to keep working, but some performance degradation is possible.

Once these global time-consuming calculations are finished, only necessary incremental analysis will be performed according to modifications.

When enabled, solution-wide analysis might also extensively use memory. If you notice that your system resources suffer too much, you can do one of the following:

If you turn solution-wide analysis off and then decide to turn it on again, ReSharper will have to repeat some of the initial calculations, which may be time-consuming. To avoid this, you can pause and resume solution-wide analysis instead.

Pause and resume solution-wide analysis

  • On the toolbar of the Errors/Warnings in Solution window, click Pause Analysis ThemedIcon.SolutionAnalysisPause.Screen.(Gray).png or Continue Analysis ThemedIcon.SolutionAnalysisContinue.Screen.(Gray).png.

  • Right-click the analysis indicator in the right corner of the status bar and then choose Pause Analysis or Continue Analysis in the context menu.

Ignore errors/warnings in solution

At some stage of your solution development, you may have too many errors/warnings known to you. ReSharper allows you to flexibly ignore some errors or error-containing files and not include them into solution-wide analysis results.

Such items will be hidden from the error list in the Errors/Warnings in Solution window and they will not affect the state of the status bar indicator. When necessary, you can stop ignoring these items to display them.

Allow solution-wide analysis to ignore specific errors/warnings

  1. In the Errors/Warnings in Solution window select a discovered problem or, if you want to ignore all issues in a specific file, select this file.

  2. Right-click the selected item and choose Ignore Error(s) ThemedIcon.IgnoreErrors.Screen.(Gray).png or click this button on the toolbar.

  3. To view the ignored errors/warnings, click Show Ignored errors/warnings ThemedIcon.ShowIgnoredErrors.Screen.(Gray).png on the toolbar — you will see all errors/warnings in the solution, the ignored items are shown as crossed out. Even if you choose to display ignored items in the list, they will not affect the status bar indicator.

  4. To stop ignoring an item, right-click it and choose Stop Ignoring Error(s) ThemedIcon.IgnoreErrors.Screen.(Gray).png or click this button on the toolbar.

This feature is supported in the following languages and technologies:

Language: C#

Language: VB.NET

Language: C++

Language: HTML

Language: ASP.NET

Language: Razor

Language: JavaScript

Language: TypeScript

Language: CSS

Language: XML

Language: XAML

Language: Resx

Language: Build Scripts

Language: Protobuf

Language: JSON

Feature is available in C#

Feature is available in Visual Basic

Feature is not available in C++

Feature is available in HTML

Feature is available in ASP.NET

Feature is available in Razor

Feature is available in JavaScript

Feature is available in TypeScript

Feature is available in CSS

Feature is available in XML

Feature is available in XAML

Feature is available in Resource files

Feature is available in build script files

Feature is available in Protobuf

Feature is available in JSON

The instructions and examples given here address the use of the feature in C#. For more information about other languages, refer to corresponding topics in the Languages and frameworks section.

Last modified: 23 September 2024