Changelog for Teamscale 8.0
Newer Release Available
Our current release is available here.
Changed backup behavior (since Teamscale 7.8)
Starting with Teamscale 7.8 automatic backups are enabled by default with sensible defaults. In addition, the default location of storing backups changed to a folder named backup
relative to the process working directory.
Existing instances are not affected and previously configured settings will be restored upon backup import. In that case it is recommended to enable automated backups if not configured yet.
Java 17 Required (since Teamscale 7.7)
As of Teamscale 7.7, running the Teamscale server requires a Java Runtime Environment, Version 17 or later.
Changed startup on non-Docker Linux installations (since Teamscale 7.7)
As of Teamscale 7.7, Teamscale is no longer executed using nohup
on non-Docker Linux installations. This requires manual intervention:
- If you are using systemd to manage Teamscale as service, you have to change the startup type from
Type=forking
toType=simple
in the Teamscale systemd unit. Remember to reinstall the service. - For custom linux setups that depend on
nohup
, start Teamscale like:nohup ./teamscale.sh &
.
In general, we strongly recommend running Teamscale on Linux with Docker.
Changed Teamscale systemd service type (since Teamscale 7.7)
As of Teamscale 7.7, the Teamscale systemd service type must be updated to type=simple
, instead of the previous type=forking
Improved administration experience (since Teamscale 7.7)
Teamscale 7.7 features several changes that improve the default administration experience.
- Breaking: Teamscale is no longer executed using
nohup
on non-Docker Linux installations. Ifnohup
is required for your setup, start Teamscale like:nohup ./teamscale.sh &
However, we strongly recommend running Teamscale on Linux with Docker or as Service. - The default location of storing backups is a folder named
backup
relative to the process working directory. Existing instances are not affected and the location previously configured will be set upon backup import. - The default location of cloning remote Git (or SAP) repositories is a folder named
repo
relative to the process working directory. Existing instances are not affected and the location previously configured will be set upon backup import. The option has been moved to Admin / Global Settings / Git. - The following JVM arguments are now always specified and can be removed from
JVM_EXTRA_ARGS
injvm.properties
:-Djco.session_timeout=60 -XX:-OmitStackTraceInFastThrow -Dsvnkit.http.methods=Basic,Digest,Negotiate,NTLM
- The Teamscale temporary directory is now configurable with the
TEAMSCALE_TEMP
environment variable. If you previously specified a custom temporary directory using-Djava.io.tmpdir=...
, we recommend removing this JVM argument and using the environment variable instead. The directory may be relative to the process working directory and is created if it does not exist.
SAP Java Connector required for importing ABAP® code (since Teamscale 7.7)
As of Teamscale 7.7, exporting ABAP® code from SAP systems requires a manual installation of the SAP Java Connector (SAP JCo) 3.1 or later. For detailed information on the installation process, please refer to Installation of the SAP Java Connector (JCo).
SNI Hostname Verification (since Teamscale 7.4)
As of Teamscale 7.4, the internal Jetty web server executes SNI hostname verification by default. If you encounter an error "Invalid SNI" when accessing Teamscale, please contact our support
Re-Analysis when Upgrading
- When updating from 8.0.x, drop-in.
- When updating from 7.8.x or earlier, a full re-analysis via backup is required.
Version 8.0.21
Security Improvements
This version contains security improvements. If possible, please update to at least this version.
Improvements
- Updated Apache Commons Text dependency to version 1.10
Version 8.0.20
Fixes
PolarionSynchronizer
could fail due to rare race-condition- Code References and Test References columns were always empty in the Requirements Tracing view
- Specification item code references were bound to low-level code entities (e.g. local variable, statement)
- Polarion: Specification items in recycle bin were not deleted from Teamscale
- Reports: Missing error message if the finding of a findings detail slide could not be found
Version 8.0.19
Fixes
RaexFindingSynchronizer
failed due to missing DLL fileNumberFormatException
when parsing JUnit reports which contained numbers using commas as decimal separators- Legacy Teamscale links did not redirect to their corresponding pages
Improvements
- Tables on Tests by Spec Item and Spec Items by Test views are now sortable
- Added support to disable
Switch statement without default case
check in case for switches over enums
Version 8.0.18
Fixes
- False positives for "Each variable should be declared in a separate statement" check in C++ when using
generic
as the name of a function or class - False positives for "Multiple statements in same line" check in C++ when calling constructors with curly brackets
- Introduction date in findings table was cut off on narrow screens
Version 8.0.17
Fixes
- False positives for "Avoid usage of implicit int" check for C/C++
- Link to specification item was included in the Merge Request view even if the item did not exist
- Gerrit connector voted +1 in case of yellow findings and the option "Ignore Yellow Findings For Votes" enabled
Version 8.0.16
Fixes
- C/C++:
StackOverflowError
in Dataflow analysis for switch without braces in lambda function - Objective-C blocks were incorrectly parsed
- False positives for "Comment Completeness" analysis for C/C++ due to Doxygen comment identification
- Large values formatted with SI prefixes were displayed with three decimal places in metric trend chart slides
- SCM Manager credentials: Passwords with non-ASCII characters did not work correctly
- S3 and Artifactory connectors ignored archive deletion events
- Failures in
CodeChangeIndexSynchronizer
due to changes in shallow parser implementations PolarionSynchronizer
performed too many logins, leading to session problems
Version 8.0.15
Fixes
NullPointerException
inBitBucketServerMergeRequestAnnotationTrigger
when merge request was deleted- Teamscale failed to update Bitbucket Server pull requests in case of out-of-date information and when someone replied to a comment
- In reports, introduction diffs for some findings were not rendered
- Clone compare slide did not correctly show clones for same file
- False positives for "Commented-out code" check in Java
- False positives for "Do not put multiple statements in a Lambda expression" check in Java
- Gosu parser error in case of nested lambdas
- Rendering of findings descriptions in the Check Explorer included too many line breaks
- IntelliJ plugin:
NullPointerException
when fetching findings
Version 8.0.14
Fixes
- S3 connector did not collect all items in large buckets
- TGA coverage sources chooser was inconsistent with latest upload in some rare cases
- Number of loadable custom checks per location was wrong on System Information page
- URLs did not contain branch name for default branch which made them inadequate for sharing
- Tests that did not exist in the selected partitions were still shown in the Test Metrics view with count zero
- Counting the number of committers did not take commit type and aliases into account
- Selection of integrated GitHub app was undeterministic when two apps had the same id but different URLs
Improvements
- Backup minimizer now supports branch include and exclude patterns
Version 8.0.13
Fixes
JiraIssueUpdatePostAnalysisTrigger
was unnecessarily executed even for pre-commit changes- Empty Jira update notifications were sent by Teamscale
- Jira connector blocked analysis if many requests were sent in a short time frame
- Analysis of Bitbucket project stopped due to many merge request annotation triggers and lots of activities on Bitbucket server
- Voting failed in some rare branch scenarios
- Slashes in the default branch name caused errors when using Git connectors
- The .NET version check required an installed SDK although .NET Runtime should have been sufficient
- False positives in JavaScript naming convention check for React components
- Simulink: Root-level model findings popup was obscured by the browser's top bar and findings were not clickable
- Preprocessor-generated tokens of C/C++ were handled wrong in several analyses
- Some SVN forks were not correctly detected
- False positives for check "Non-void function should return a value" in C++ in case of unresolved macros
- False positives for "Comments should not contain nested comments" check in Python when comments contained URLs with #
Improvements
- System view now displays committers of the last 90 days
- Support for setting a credentials process for S3 connector through a configuration property
Version 8.0.12
Fixes
- Swift long method findings had wrong locations
- "Save anyway" button did not save project after project validation error
- Kotlin
try
/catch
/finally
constructs were not parsed correctly abap-findings
service missed findings from (transitive) includes- Activity > Issues view did not correctly handle clicking the "Show trend and treemap" button on invalid issue queries
JsonSerializationException
inLoadAndIntegrateSapTestwiseCoverageTrigger
- License was not valid on the last day of the license period
- Rendering the verification matrix blocked UI for multiple seconds on huge data sets
- Teamscale added badges to merge requests that had no relevant changes
Improvements
- Provide debug service to list/download/remove temporary files
Version 8.0.11
Fixes
- C# analysis profiles could not be edited
BackupMinimizer
did not delete temporary storage directory after its execution- Changing the project used by a widget redirected the user without saving
- Widget path chooser did not work correctly when value was removed
- When code review findings were enabled, opening a non-existing file led to a red error page
NumberFormatException
in division by zero analysis- Uploaded external findings got lost in cases where analyses had not reached the target commit
- Font color UI glitch in left sidebar
Improvements
- Updated dependencies in docker image to latest version
Version 8.0.10
Security Improvements
This version contains security improvements. If possible, please update to at least this version.
Fixes
- Annotating merge requests with line comments and findings badges could not be configured independently
NullPointerException
inGerritAnalysisResultUploadTrigger
- Global keyboard shortcuts did no longer work
hasParent()
operator in issue queries always returned an empty result- Slow Teamscale backup import due to incorrectly configured Xodus database-memory setting
- Contents of some dashboard widgets were not properly adjusted after browser window resize
- Treemap in Commit Details view did not show up sometimes
- "Too much data to show" error displayed when viewing large treemaps
- Delta view of merge requests could not be opened in a new tab
- Parsing errors for annotations on Java arrays
- HDL Code Advisor checks could not be parsed from a Model Advisor report
- Ordering and searching Simulink findings by location were not working properly
- Badges were not shown for GitHub pull requests that had no findings
- Connectors were shown as part of repositories they did not belong to
- New commits were sometimes not analyzed if there were no commits during the initial analysis
NoSuchPullRequestException
for merge requests in Teamscale that have already been deleted in Bitbucket- False positive for "Assignment of a variable to itself" check in Swift
Improvements
- Updated Node.js to the latest version to fix potential remote code execution
Version 8.0.9
Fixes
- File regexes could not be deleted in Metric File Distribution widget
- Saving a GitHub connector always caused re-analysis
- Git repository synchronization failed if the default branch was removed
- Teamscale did not vote on GitHub pull requests without any findings
- Rollback was unnecessarily postponed after specification items were manually cleaned
NullPointerException
inSwiftLintOutputParser
- Metric File Distribution widget could not show specification items metrics if there were multiple folders for one part of the path
IndexOutOfBoundsException
in "Bad assignments" check for Objective-CArrayIndexOutOfBoundsException
inBitbucketServerMergeRequestSynchronizer
after multiple retries- False positives for "Assignment of variable to itself" check for multi-line assignments in Swift
Improvements
- Backup Minimizer only supported in-memory storage systems
Version 8.0.8
Fixes
- Check Explorer: Deselecting all languages also removed all selected tools
- Compare view scroll synchronization was inconsistent when scrolling horizontally
- Sorting the rows in the Test Gaps perspective tables by 'Test Gap', 'Execution', or 'Churn' did not work correctly
- Race condition in
ESLintFindingsSynchronizer
could lead to missing npm modules and corresponding worker log errors - Missing code location column in table on Test Filter view
GitHubMergeRequestSynchronizer
could run indefinitely- False-positives for "Assert statement without ID" check for ABAP
- False-positives for "Avoid usage of implicit int" check for C/C++
- Rare
NullPointerException
inArtifactoryContentUpdater
when updating existing archives in Artifactory - Number of specification items did not correctly account for multiple changes for the same item in merge requests
- Projects or branches in the "recent" section of the selection dropdown where not shown in the full list below
- Branch of the revision was not selected when time travelling to it
- Connector status was green even when the default branch was deleted on the server
- Tooltip text size for tree maps was dependent on the screen resolution
Improvements
- Better performance of
GerritChangeRetriever
for large amounts of Gerrit changes - Improved wording for TGA badges in merge requests
Version 8.0.7
Fixes
- Opening non-code metrics resulted in an "index out of bounds" error message
- IEC61131-3 structured text
.tu
files were not parsed correctly - Java module definitions were not parsed correctly
- Eclipse/Intellij/Netbeans plugin: Using "Open in Editor" in the Findings view didn't work after findings have been retrieved for an entire folder rather than a single file
- Missing error message when using SonarLint for C# when .NET SDK 6 runtime was not installed
- AbapLint findings were missing for function group and ABAP include extension class files
- Polarion fields for linked work items were mixed up
- S3 connector failed due to malformed authorization header
- High memory consumption when multiple external reports were uploaded or changed at the same time
Improvements
- Reduced memory consumption for C/C++, as well as Objective-C projects
Version 8.0.6
Fixes
NullPointerException
inTestHistorySynchronizer
- "Enable Findings Badge for votes" option for merge request annotations was disabled when updating from previous versions
- "Statements in Conditional Expression are equal" check was falsely applied to pre-processed C++ code
- Excessive synchronization with remote git repository
- Tooltip links for the submenu on the Delta view were broken when the left sidebar was collapsed
- Task details view for resolved findings was showing the current code instead of the code causing it
NullPointerException
inContainerSynchronizerBase
for corner cases of non-code metrics
Version 8.0.5
Fixes
- Azure DevOps TFVC connector did not respect the
http.nonProxyHosts
flag - Autocomplete feature of password fields caused odd configurations in some input fields
- Some findings were wrongly flagged as false positive or tolerated
AssertionError
inSimulinkBuilder
if two Simulink blocks had the same name- False positives for "Null pointer dereference" check in C/C++
for
loops - System info page showed a red error banner on certain Linux systems
- Comments in Quality Task slides did not support Markdown
- Visual Studio plugin: Reverting changes of a pre-commit analysis did not remove the respective findings
- Bitbucket: Teamscale was sometimes not voting on merge requests during high traffic
Improvements
- Optimized Delta perspective when used with an architecture path for components containing a lot of files
Version 8.0.4
Fixes
- Description of Pylint report generation was not compatible with newer Pylint versions
- Errors about overly long finding message from SAP Code Inspector imports
- Code was not visible when a user did not have view permissions for another user who last reviewed a file
IllegalArgumentException
could occur when building the custom check sample- Ternary operators in initialization lists in C++ were not parsed correctly
- Null-conditional operators in C# were incorrectly handled in
case
expressions ofswitch
statements - External Pylint reports could not be parsed if spaces were missing
NullPointerException
inTestHistorySynchronizer
- Adding a branch with the same name as a branch rename target led to inconsistencies
- Storage directory size was incorrectly computed in KB instead of GB
- Disabling the backup options "include pending external analysis result sessions" and "include git labeling information" had no effect
- TGA treemaps and Changed Files in the Delta perspective showed too many files when the name of the selected folder was a prefix for another sibling folder
- Specification item queries using
codeReferences
ortestReferences
were not usable on dashboards NullPointerException
about skipped post revision triggers due to missing analysis state- Quality goal settings were not preserved when changing the file path for the Findings and Metrics perspectives
- In some cases text could overlap the Treemap widget
- C# switch expressions were not handled correctly in dataflow analyses
Improvements
- Added anti-aliasing to Code City widget
- Speed up for scheduling of external analysis triggers
- Better initial loading time for Test Filter view
- Better documentation for the creation of GitLab webhooks
Version 8.0.3
Fixes
- Simulink: Stateflow transitions crossing states were not displayed correctly
- Delta perspective did not handle cases consistently where paths had a common prefix
- Swift keyword
let
was not parsed correctly AssertionError
inTypeIndexSynchronizer
due to missing support for ABAP enhancement objects from abapGit repositories- Branch coverage detection failed for branches with only a single line of code
Version 8.0.2
Fixes
- Backups with enabled SonarLint C# checks could not be imported
- Requirements Tracing and Issues pages contained a single dangling semicolon
- The ternary operator (
?:
) was not parsed correctly in C# when using expression-bodied methods - ABAP system ID was not logged for asynchronous ABAP imports
- Check descriptions in the Analysis profile editor could appear hidden in the background
- Using
await
beforeforeach
statement in C# was not parsed correctly - Static local functions in C# were not parsed correctly
- Project admin access for project creator was not transferred when changing the public ID of a project
- Obsolete finding discussions in Gitlab merge requests were sometimes not resolved
- Check for nested comments was running very long for JavaScript files with inline source maps
- False positives for "Variable assigned to itself" check when using C# object initializers
- In rare edge cases methods were incorrectly shown as untested even though they were covered after their last modification
- Voting did not happen when the "Partitions Required for Voting" option was enabled and the uploaded external data was empty
- Some widgets could not be added to dashboards if the project had a lexicographically smaller alias
UnsatisfiedLinkError
in TFS connector- Objective-C preprocessed code was not ignored in the "Statements in Conditional Expression are equal" check
- Some branches were considered covered even if no coverage reports were uploaded
- C# property initializations were not parsed correctly
- Users could alter the avatar images of other users
- ESLint configuration files other than
json
,yml
oryaml
have to be allowed explicitly (e.g. JavaScript files, which are executable)
Improvements
- Added new default directives to the C/C++ analysis profiles (does not affect existing profiles)
- Improved security against path traversal and DoS attacks
Version 8.0.1
Fixes
- Backup import failed with "Unknown configuration item" when importing Java projects
- Line numbers of SAP code inspector findings were wrong in class private or protected sections
Version 8.0.0
Bug Fixes
- 8.0.0 contains all fixes from previous versions released on and before April 26th, 2022
- For brevity, only new features are included in the changelog
Web UI
- Issue perspective: stored issue queries on the right sidebar can now be filtered
- Issue perspective now contains a link to the Test Gap perspective to quickly review test gaps for issues of the currently selected issue query
- Issue perspective now provides a dialog to easily navigate to a specific issue
- Commit Details view of an aggregated commit now includes the commit messages and revisions of the aggregated commits
- Commit Details view now displays the upload timestamp of coverage upload commits
- Architecture editor can now be set to only show incoming or outgoing dependencies
- Test code in Metrics and Test Gap tables is now marked green
- Delta perspective for test gaps now provides a partition selector
- Method History view now has an additional tab showing the issues referenced in the commit history
- Time travel now supports the input of revisions obtained via GitHub
- Trends in dashboard widgets can now easily be removed via a button
New Checks
- "Avoid Jumbled Loop Variable Modifications" check (C++/C, C#, Java, JS/TS, PHP, Swift, Groovy, Objective C, Go)
- "
HttpClient
instantiated inusing
statement" check (C#) - Updated Clangtidy support from version 10 to 13.01
Issues and Requirements Tracing
- Jira connections with identical settings are now transparently cached across project boundaries
- Issue ids are now matched to the corresponding Teamscale issue regardless of casing
- List of issues can now be exported with corresponding test gap data
- RTC requirements tracing: links between work items can now be imported
Testing
- Support for testwise coverage execution units
- Pareto ranking is now performed asynchronously on the server
- Pareto ranking: the number of selected tests is now shown
- Public API for getting a list of methods executed by a test case
Code Collaboration Platforms
- Voting on merge requests and annotating them with badges can now be configured independently from each other
- Configuration of multiple GitHub organizations is now supported
Reporting
- Task Detail slide now supports macro expansion for code snippets
- Test Gap Treemap slide now allows setting annotations for components
IDE Integrations
- Visual Studio: improved pre-commit selection dialog
Administration
- Instance comparison can now check for differences in TGA data
- SAML login errors now contain additional information
- Option "Use Teamscale's default crypto key" is now hidden if no other key is configured