Changelog for Teamscale 8.1
Newer Release Available
Our current release is available here.
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).
Re-Analysis when Upgrading
- When updating from 8.1.x, drop-in.
- When updating from 8.0.x or earlier, a full re-analysis via backup is required.
Version 8.1.21
Security Improvements
This version contains security improvements. If possible, please update to at least this version.
Fixes
- Updated Apache Mina SSHD dependencies to fix CVE-2022-45047
Version 8.1.20
Fixes
- Snapshots in the Instance Comparison view, created by other users, were not visible
- LDAP groups with more than 1.500 users could not be synced
Version 8.1.19
Fixes
- Edit buttons were cut off in the External Findings view for findings with long names
NullPointerException
inPolarionSynchronizer
Improvements
- Support for "structure only" architectures
- Permalink button in Metrics Table view is now easier to spot
Version 8.1.18
Fixes
- GitLab threads, that were resolved by a user, were marked as "unresolved" if the finding was still in the code
Version 8.1.17
Security Improvements
This version contains security improvements. If possible, please update to at least this version.
Fixes
- False positives in "Logical block performs numerical operation with non-boolean data type as input" check for Simulink
Improvements
- Updated Apache Commons Text dependency to version 1.10
Version 8.1.16
Security Improvements
This version contains security improvements. If possible, please update to at least this version.
Fixes
- "Throw of generic exception in CS" check had default enablement
YELLOW
instead ofRED
- Editing a project overwrote empty options with their default values
- False positives in "Calling
equals()
/toString()
on array" check - Switch-label probes were not supported in Bullseye coverage report parser
- Some treemaps were cut off at the bottom
Improvements
- Login with GitHub now requires that the user is a member of the GitHub organization
Version 8.1.15
Fixes
- Artifact store connections logged excessive warnings
- Simulink Annotation block position was computed incorrectly for mdl files
- False positives in "Statements in Conditional Expression are equal" check for Objective-C due to code comments
- Internal ESLint configuration did not detect built-in ES6 types
- The Open Method link in TGA Treemaps sometimes led to the Compare tab instead of the Method history tab
NullPointerException
inTestMetricsAndContentSynchronizer
Version 8.1.14
Fixes
- Exclusion rules in Simulink Model Advisor reports were parsed as findings
Version 8.1.13
Security Improvements
This version contains security improvements. If possible, please update to at least this version.
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
Improvements
- Security: Input fields no longer send data to third parties for spell checking (Google/Microsoft)
Version 8.1.12
Fixes
- Findings Detail view did not directly display the affected block for large Simulink models
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
- Calculating unlinked changes no longer blocks loading of the Test Gaps > Issues view
- 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.1.11
Security Improvements
This version contains security improvements. If possible, please update to at least this version.
Fixes
SimulinkUseOfSwitchBlockCheck
did not consider data dictionaries for its criteria port- 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
Improvements
- Updated Spring dependencies to fix CVE-2022-22950, CVE-2022-22965
- Updated Jetty and serialization libraries to fix CVE-2021-40690, CVE-2022-25857, CVE-2022-2191, CVE-2022-25647, CVE-2022-2048
Version 8.1.10
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
Improvements
- Artifact connectors: Revisions can now be excluded if certain ZIP files are not present
Version 8.1.9
Fixes
- "Default branch not yet set" error on every page if the first project (alphabetically) had validation errors during import
- Test Gap treemaps showed too many files for architecture paths if the selected folder was a prefix of a sibling folder
- Precommit: Per-user call-rate limiting included calls that failed because of "too many files"
NullPointerException
inDataflowAnalysisSynchronizer
concerningDivisionByZeroAnalysis
for C#- 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.1.8
Fixes
- The JVM flag for disabling automated web hook creation was not working
- External uploads indicated misleading "changed" or "deleted" files in repository logs
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.1.7
Fixes
NullPointerException
inArtifactoryContentUpdater
in case of concurrent modification of stored artifacts- Redundant "Teamscale Info" header in Jira issue annotations
- 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.1.6
Fixes
- False positives for "Unused variable or parameter" check in C++ for lock guard objects
- False positives for "Multiple statements in same line" check in Groovy
- Incorrect nesting depth findings in Groovy
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
- Improved performance for Dashboard perspective for instances with many projects
- 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.1.5
Fixes
- Possible
NullPointerException
in JavaScript/TypeScript comment analysis if statements other than declarations were used at the root level - Treemaps were hard to read due to extensive borders in case of large code bases
- Preview repository files dialog failed for local ABAP-Git repositories
- C++ method parameters were incorrectly retrieved in certain cases
- Merge commits showed findings that already existed on the target branch before the merge
- 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.1.4
Fixes
- Architecture editor: changed mapping was not saved consistently in Firefox after component lost focus
- False positives for "Using threads is forbidden for Java EE containers" check in case of
Runnable
s - Guideline names on findings reported by CppCheck had wrong casing
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
- Improved loading of System Log views
- Improved finding description for "Avoid conditional expressions of the form
if (true)
" check - Updated dependencies in docker image to latest version
No longer supported
- Disabled new division-by-zero dataflow analysis for C/C++
Version 8.1.3
Security Improvements
This version contains security improvements. If possible, please update to at least this version.
Fixes
- ABAP
.CCAU
and.T99
test code files were excluded by default in new projects - Finding description of the "Usage of the var keyword" check in C# contained typo
- Polarion modules without IDs caused
NullPointerException
s - 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
- Eclipse Plugin:
NullPointerException
while loading findings
Improvements
- Updated Node.js to the latest version to fix potential remote code execution
Version 8.1.2
Fixes
- External Findings view was very slow when showing a large number of descriptions
- Architecture overview page showed wrong setting for Findings Creation during first analysis of recently added architecture
- Simulink signal was not correctly propagated if input was directly connected to reference block and renamed the signal
- 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
- A warning is now shown if time travel is active and a review finding is being created
- Improved multiple findings descriptions
- Backup Minimizer only supported in-memory storage systems
Version 8.1.1
Fixes
- Backups with activated StyleCop could not be imported (.Net)
CodeFileToCoverageReportIndex
failed withNullPointerException
when trying to delete a coverage report entry for a removed file- System information was duplicated after restarting Teamscale
- Staked Bar Chart widget did not link to a project
- 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
- Improved descriptions for multiple C/C++ checks
Version 8.1.0
Bug Fixes
- 8.1.0 contains all fixes from previous versions released on and before June 28th, 2022
- For brevity, only new features are included in the changelog
Web UI
- Improved loading performance of the test gap analysis issue overview
- Partition selection now supports an arbitrary amount of hierarchy levels
- Stored queries can now be referenced in other queries with
query(<query name>)
- Pareto Ranking: Added display for relative coverage after adjusting the test budget
- Pareto Ranking: Added a tree map with the coverage produced based on a test budget and Pareto ranking
- Multiple widgets now contain clickable drill-down links
- Global analysis profile options are now shown in the Check Explorer
- Architecture editor components and policies can now be added via right-click context menus
- Method History view now shows the complete history up to the selected baseline and whether the method has any history on other branches
- Tooltips for methods in test gap treemaps now show the date and time of the last modification and execution of a test
- Timetravel widget now shows the name of the selected baseline
New Checks
- Python check for missing prefixes for string literal interpolation
- Cppcheck including the MISRA add-on as an internal tool
- Detection of classes with identical names in different packages
Check improvements
- Simulink: Propagation of signal labels into libraries can now be resolved
- Migration of deprecated StyleCop to StyleCop Analyzers
IDE Integrations
- Visual Studio: Improved pre-commit user experience for TFS server-workspaces
Administration
- E-mail notifications: Added blacklisting information for findings
- E-mail notifications: Added violated architecture names to subject line
- New option to allow creation of a web hook on a per connector basis
- REST API requests logging now includes response time information
Documentation
- How-to setup coverage.py for Teamscale