PyCharm features robust, fast, and flexible static code analysis. It detects compiler and runtime errors, suggests corrections and improvements before you even compile.
In this section:
- Inspection Profiles
- Inspection Severity
- Inspection Scope
- Examples of Code Inspections
When you inspect your code, you can tell PyCharm which types of problems you would like to search for and get reports about. Such configuration can be preserved as an inspection profile.
An inspection profile defines the types of problems to be sought for, i.e. which code inspections are enabled/disabled and severity of these inspections. Profiles are configurable in the Inspections settings page.
To set the current inspection profile (the one that is used for the on-the-fly code analysis in the editor), simply select it in the Inspections settings page and apply changes. When you perform code analysis or execute a single inspection, you can specify which profile to use for each run.
Inspection profiles can be applicable on the IDE or on the project level:
- Project profiles are shared and accessible for the team members via VCS. They are stored in project directory: <project>/.idea/inspectionProfiles.
- IDE profiles are intended for personal use only and are stored locally in XML files under the USER_HOME/.<PyCharm version>/config/inspection directory.
If necessary, you can change the applicability of the profile (current project of IDE) and, consequently, its location with the Share profile check box (selected means current project) in the Inspections settings page.
PyCharm comes with the following pre-defined inspection profiles:
- Default: This local (IDE level) profile is intended for personal use, apply for all projects, and is stored locally in the file Default.xml under the USER_HOME/.<PyCharm version>/config/inspection directory.
Project Default: When a new project is created, the
profile is copied from the
settings of a template project. This profile
is shared and apply for the
After the project is created, any modifications to the project default profile will pass unnoticed to any other project.
When the settings of the Project Default profile are modified in the Template Project settings, the changed profile will apply to all newly created projects, but the existing projects will not be affected as they already have the copy of this profile.
Project Default profile is stored in the Project_Default.xml file located in the <project>/.idea/inspectionProfiles directory.
One can have as many inspection profiles as required. There are two ways of creating new profiles: you can add a new profile as a copy of the Project Default profile or copy the currently selected profile. The newly created profiles are stored in XML files, located depending on the type of the base profile. .
The files <profile_name>.xml representing inspection profiles appear whenever some changes to the profiles are done and applied. The files only store differences against the default profile.
Refer to the section Customizing Profiles for details.
Inspection severity indicates how seriously the code issues detected by the inspection impact the project and determines how the detected issues should be highlighted in the editor. By default, each inspection has one of the following severity levels:
- Server problem
- Weak Warning
You can increase or decrease the severity level of each inspection. That is, you can force PyCharm to display some warnings as errors or weak warnings. In a similar way, what is initially considered a weak warning can be displayed as a warning or error, or just as info.
The color and font style used for highlighting of each severity level is configurable. Even more, you can create custom severity levels and set them for specific inspections.
If necessary, you can set different severity levels for the same inspection in different scopes.
For more information and procedural descriptions, see Configuring Inspection Severities.
By default all enabled code inspections apply in all project files. If necessary, you can configure each code inspection (enable/disable, change its severity level and options) individually for different scopes. Such configurations, like any other inspection settings, are saved and applied as part of a specific profile.
There may be complicated cases when an inspection has different configurations associated with different scopes. When such inspection is executed in a file belonging to some or all of these scopes, then the settings of the highest priority scope-specific configuration are applied. The priorities is defined by the relative position of the inspection's scope-specific configuration in the inspection settings: the uppermost configuration has the highest priority. The configuration Everywhere else always has the lowest priority.
For more information and procedural descriptions, see Configuring Inspection for Different Scopes.
Examples of Code Inspections
In the PyCharm's Inspections settings page, you will find that all inspections are grouped by their goals and sense. Every inspection has an appropriate description. The most common tasks that are covered by the static code analysis are:
- Finding probable bugs.
- Locating dead code.
- Detecting performance issues.
- Improving code structure and maintainability.
- Conforming to coding guidelines and standards.
- Conforming to specifications.
Find descriptions and examples of the various code inspections in the Inspections page of the Settings dialog. In this section, we'll consider several most prominent examples. In particular, PyCharm reports
1.2+Code incompatible with the current Python
Note that you can change the scope of versions in the inspection settings.
- Unresolved references:
- Duplicate keys in dictionaries:
- Dead code: