In this chapter:
This slice calculates risky code change metrics and displays them in multiple forms (pie chart, bubble chart, and table report). The risky code changes slice derives three different metrics on a per file basis:
The metrics are derived according to the following calculations:
Once the scores have been computed, they can be displayed in various formats depending on the mode parameter sent in the request.
If you were using Risky Code Changes 2.0.0 or older and have upgraded from DTP 5.3.1 or older, you must send a new test and coverage report to DTP server and set it as a baseline build when configuring the widget. You can resubmit a previous build report to the data collector to populate the data. Once the data is in DTP, make sure to archive the build so that it won't be removed during normal database clean up (see Locking and Archiving Builds). |
DTP Project | The root level at which the analysis tools report data. Comes preconfigured with a “filter” that gathers all the Run Configurations that are reported to the project. |
---|---|
Filter | A DTP configuration that allows users to pick and choose what data from different analysis runs is used to populate the reports generated in the dashboards. |
Run Configuration | A Run Configuration is an abstract mapping of various metadata associated with an analysis run (e.g. machine, test configuration, user, session tag, etc). This metadata is used to differentiate the data reported during different analysis runs. It can narrow the data shown for a given filter. |
Build ID | Analysis run metadata that is used to aggregate data across multiple analysis runs into a single “build” |
You can confirm that the filter and build meet these requirements by checking the Build Administration page in DTP:
See Downloading and Installing Artifacts for information on installing extensions for DTP Enterprise Pack.
The Risky Code Changes slice ships with a "demo" model profile that defines how thresholds are visualized in its associated widgets and reports. The slice calculates the data, but the profile determines the markers.
The demo profile is a fully-configured example that includes three risk level thresholds:
See Working with Model Profiles for information on configuring model profiles.
Because you can run the Risky Code Changes slice over extended periods of time, the slice includes a caching mechanism to speed up multiple requests for the same data. When data is requested for a filter, the slice first determines if the data is already computed and cached. If the cache exists, the data is returned directly and the lengthy computation is skipped. The cache is cleared and recomputed on the fly, however, if the data is not cached, if the cached data is for a different build combination, or if more analysis data has been reported to the build combination, then the cache is cleared and recomputed on the fly. There is a maximum of one cache per filter and combination of baseline and target build.
Because the slice does not automatically remove cached data, the cache can grow as more filters are introduced. To help you clear out old cache data, the slice provides a way to delete all cached calculations from the PIE database. This flow cleans all cached calculations. The cache also clears at 00:00 every day. You can configure the auto cache clearing setting by editing the Clean Cache inject node.
Risky Code Changes widgets are added to the Process Intelligence category. See Adding Widgets for details on adding widgets.
You can configure the following widget settings:
Title | You can retitle the widget or use the default title. |
---|---|
Filter | Choose Dashboard Settings or a specific filter from the drop-down menu. See Creating and Managing Filters for additional information. |
Period | Choose Dashboard Settings or a specific period from the drop-down menu. The period is a span of time or code drops. |
Baseline Build | The baseline build is the first set of data points presented in the widget. You can choose Dashboard Settings, First Build in Period, or Previous Build. |
Target Build | The target build is the last set of data points presented in the widget. You can choose Dashboard Settings or Last Build. |
Profile | A profile is required for determining thresholds and how they should be visualized. See Profile Configuration for additional information. |
Coverage Image | Coverage images are identifiers for the coverage data associated with a test run. See Associating Coverage Images with Filters for additional information. |
By default, Baseline Build is set to Previous Build and Target Build is set to Latest Build when you configure the widgets. The slice will automatically select the two most recent builds, but these builds may not contain test and coverage details. You should check the Build Administration page in DTP and use an appropriate baseline and target build when configuring the widget as described in the Requirements section. Also see Build Administration. |
The Risky Code Changes slice includes the following widgets that can be added to DTP after installation and deployment.
This widget shows risky code change aggregates (e.g., the number of files that fall into the various risk levels defined in the profile).
This widget shows the risky code changes per file. The test score is mapped to the X-Axis, the maintainability score is mapped to the Y-Axis, and the risk score is mapped to the bubble size.
Click on a section of the pie chart widget or on a bubble in the bubble chart widget to open the Risky Code Changes drill-down report. The report will be filtered according to the risk level of the data you clicked in the widget.
The header of the report includes links to an explorer view filtered according to the search parameters specified in the report.
The Maintenance Burden column shows the Maintainability Index value calculated for with the file. Click on a link in this column to view the file's Maintainability Index metric values in the Metrics Explorer.
The Test Deficit column shows the number of tests covering the file, the number of methods used in the metrics calculation, and the level of code coverage. A Test Deficit score is calculated based on these values. You can perform the following actions:
The Quality Debt column shows the number of severity 1 and 2 static analysis violations, number of test failures, and the Logical Lines of Code score. A Quality Debt score is calculated from these values. You can perform the following actions:
You will receive an error instead of a rendered widget if the coverage information is inaccessible (see Requirements).
The following error is returned when the filter has a coverage tag that does not contain coverage information:
Verify that the filter has a coverage image associated with it (see Associating Coverage Images with Filters) and that Data Collector is configured to accept the coverage image (see Controlling Coverage Data Processing for DTP Enterprise Pack Artifacts). New reports must be sent to DTP after properly configuration.
The following error is returned when Data Collector is configured to accept your coverage data, but the specific coverage image does not contain data.
Verify that the filter has a coverage image associated with it (see Associating Coverage Images with Filters) and that the correct coverage image was selected when you added the widget (see Widget Configuration).