Changelog for Teamscale 8.2
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.2.x, drop-in.
- When updating from 8.1.x or earlier, a full re-analysis via backup is required.
Version 8.2.19
Fixes
MergeRequestSynchronizer
was executed for every rollback, leading to poor performance in some cases- Dashboards view sometimes broke with the error "Element with ID main does not exist"
- Coverage information was missing in case of out-of-order external uploads
Improvements
- Improved error handling in case
ESLintFindingSynchronizer
fails due to missing files
Version 8.2.18
Fixes
- Findings that were reintroduced were not tracked correctly
- Annotation edit popups on Test Gap Treemap (TGA) slide stayed open when switching slides
- Treemap tooltips sometimes went out of browser window bounds
- Collecting SAP coverage from manual tests failed when one referred project did not exist
Version 8.2.17
Fixes
- False positives for "Every line starting with '#' has to be a valid preprocessing directive" check in C files with Doxygen
- False positives for "Check model appearance settings", "Restriction for inport and outport names" and "Port block name visibility" checks in the context of Simulink bus element in/out ports
- Synchronizing LDAP groups with more than 1.500 users failed
- Back button did not work in the Dashboards view
- SAP system committers were not excluded from active committers
- Users were not resolved via committer name "Lastname Firstname"
- Callouts were not clickable after copying a report
PolarionSynchronizer
was slow for large number of documents and work items- Voting status of merge requests were displayed as "Skipped" if Teamscale only commented but did not vote
Improvements
- Display names were unified in the list of active committers
Version 8.2.16
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
- Temporary connection loss could result in a red error page without user interaction
- Changing a dashboard widget and then renaming it, resulted in a loss of all changes
- Queries for specification items in the Requirements perspective could fail under rare circumstances
- False-positives for "Null pointer dereference" check
Version 8.2.15
Fixes
- Baselines could be deleted if they were renamed multiple times
- Simulink: Blocks of type "Step" stored by newer Matlab version were shown without icons
- Simulink: Loading dictionaries failed for buses
- Simulink: Signal label propagation in
SimulinkOutputDataTypeExtractionStep
could end up in an infinite loop for some cases - Swiftlint: Findings were not removed for some deleted files
- Null pointer analysis did not recognize
Objects.nonNull
- Projects could be stuck in "reanalyzing" state when connectors could not be validated
- GitHub Webhooks and login did not work if the GitHub instance-URL did not end with a slash
- Initial import commits were incorrectly considered as unlinked changes in Test Gap Analysis
- Non-date start and end revisions were displayed incorrectly in Project Configuration view
- Gitlab merge requests sometimes failed to update when Test Gap Analysis was turned on
Improvements
- Bitbucket Server: Added option to ignore webhooks initiated by the user itself to reduce server load
Version 8.2.14
Fixes
- Commit Detail view took very long to load in some cases
- Links in "Test Gap" CSV export did not scroll to the method locations
- "Test Gap" CSV export did not consider
Hide unchanged methods
parameter - E-Mail notifications could no longer be sent
- Kotlin parser did not support
value
modifier for classes - 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
Improvements
- Improved performance for coverage report parsing
- Improved performance for LCOV parser
Version 8.2.13
Fixes
- Trivial getter/setter methods in ABAP where not correctly filtered from the Test Gap Analysis
- Commit Detail view took very long to load in some cases
- False positive for "Missing interface comment" check for Kotlin
- False positive for "Unused variable or parameter" check for C# when using type patterns
- Findings update was slow for ABAP objects in Eclipse plugin
- 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.2.12
Fixes
- Windows UNC paths caused
IllegalArgumentException
when using multi-version file system connectors NullPointerException
inNotificationTrigger
for commits with no affected files- Dashboards with multiple projects showed finished analysis indicator if the selected branch did not exist for the respective projects
- GitLab threads, that were resolved by a user, were marked as "unresolved" if the finding was still in the code
Improvements
- ABAP parser exits gracefully if the parsed code is invalid
- Support
0x%
specifier in "Log macro formatting string correctness" check - Service to get a list of active committers for a set of primary project IDs
Version 8.2.11
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.2.10
Security Improvements
This version contains security improvements. If possible, please update to at least this version.
Fixes
- Parsing JSX did not work correctly when render properties contained comments
- False positives in "Avoid usage of implicit int" check for C/C++
- Certain triggers failed when Teamscale was retrieving a new commit while executing them
- Issues view links to affected files erroneously activated the timetravel
- Test Gap Treemap slide reloaded the treemap graphic even when unrelated fields were modified
- Issues view showed precommit changes in the Commits summary
- "Throw of generic exception in CS" check had default enablement
YELLOW
instead ofRED
- 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.2.9
Fixes
- False positives in "Entry versus propagation for signal labels" check for Simulink
- False positives in "Equality check with boolean literal" check for C# in case of nullable booleans
- False positives in "Control flow depending on system variable" check for ABAP
- Double-quoted string literals in Matlab were not recognised
- Adjustment of SAP Code Inspector findings produced wrong warnings in the worker log
- Clone finding description section showed file path instead of actual description
- Implicit members in Swift were parsed incorrectly leading to wrongly detected long methods
- 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.2.8
Fixes
- Parsing JSX files did not work correctly with render properties
- In some cases, empty fields in connector configurations were automatically overwritten with their default values when editing them
- False positives for "Avoid usage of implicit int" check in C/C++
- False positives for "Missing header protection" check in C/C++
- Description of the "Cross-client database access" check in ABAP contained a broken weblink
- Tables in Tests by Spec Item and Spec Items by Test views were not sortable
- Exclusion rules in Simulink Model Advisor reports were parsed as findings
Version 8.2.7
Security Improvements
This version contains security improvements. If possible, please update to at least this version.
Fixes
- Path prefix parameter for JaCoCo coverage uploads was not working correctly
- Large numeric metrics were displayed as
NaN
in metrics table if abbreviation was deactivated - False-positives for check "Method and class field have the same name" check for explicit interface implementation in C#
- False positives for "Allow only forward jumps" check in C when using C++ reserved keywords as destination label
- Typescript call signatures were not parsed
IllegalArgumentException
in "Duplicate Set Elements" check- Missing files in analysis in cases were a fork overlapped with an already existing branch from a different repository
- Reports: No loading indicator was displayed when switching or modifying slides
- Mapping between issues and findings did not work correctly when analysis granularity was enabled
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
- Improved error message in case the TreeMapWidget could not be displayed
- Improved error message in Delta and _ Merge Request_ view when selected branch could not be found
- Paginated external uploads table is now easier to navigate through
- Security: Input fields no longer send data to third parties for spell checking (Google/Microsoft)
Version 8.2.6
Fixes
- SonarQube Quality Profile Import: List of unsupported checks was incorrect
NullPointerException
in "Null pointer dereference" check fornameof()
operator in C#IllegalStateException
for repeated Subcondition check in C#CheckException
inMissing check of SY-SUBRC return code after authority
check when assigning strings representing a number as exception return code in ABAP- False positives for "Equality check with boolean literal" check when using nullable bool type in C#
- False positives for "Missing Interface Comment" check for multiline comments in Python
- Automated storage snapshots could not complete under certain circumstances on Windows
- False positives for "Exception thrown in finally block" check in Objective-C due to missing preprocessor support
- False positives for "Simulink signal appearance" check in Simulink
- Eclipse plugin required SAP System ID for ABAP projects to be set in project options
- Missing clean up of Pre-Commit 3.0 branches
- Missing connector votes on some GitLab merge requests
- 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
- Better error message when importing a project with a broken TFS connector
- 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.2.5
Security Improvements
This version contains security improvements. If possible, please update to at least this version.
Fixes
- False positives for "Return in
finally
block" check in Objective-C when using preprocessor macros - "Unable to determine if clone sibling changed" error on language change of a C/C++ or Objective-C header file
- Backspace in timetravel "Edit date and time" dialog closed the dialog in older browsers
- False negatives for "Check for Usage of Gain Blocks" check in Simulink caused by wrong option-parsing from model workspace and data dictionary
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
- More debug information when .NET installation check fails
- 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.2.4
Fixes
- Issues Metrics view showed an error if a single query was invalid
SvnChangeRetriever
got stuck if the connection went stale- Links in findings descriptions did not open a new tab
- C/C++/Objective-C preprocessing did not work correctly for variadic function macros that used
## __VA_ARGS__
or__VA_ARGS__
before other macro parameters - 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
- Event announcements can now be deleted directly
- Eclipse/IntelliJ/NetBeans plugin: Clearer presentation of pre-commit findings
- Artifact connectors: Revisions can now be excluded if certain ZIP files are not present
Version 8.2.3
Fixes
- Simulink: Annotations were rendered on top, hiding blocks that were inside its rectangle
- Import of Teamscale v8.0.13 backup into v8.2.2 failed due to already existing analysis group
- Editing a project overwrote empty options with their default values
- False positives for "Nested comment" analysis for Java when comments contained certain URLs
- Return type annotations for PHP functions were not parsed correctly
- C++:
static_assert
compile-time assertions were parsed as constructor definitions - External uploads were only integrated with a 10 minute delay after incremental backup import
- "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.2.2
Fixes
- ABAP connector did not poll for code updates when instance was in shadow mode
- Code selection context menu was not correctly placed in Safari
- Project status was not immediately updated in the Projects view after clicking Save and re-analyze
- Red error page when project selected in the UI was being recreated
- Commit for creating a code review finding showed wrong additional affected file
- Internal and external CppCheck integration had the same displayed name
- Projects and analysis profiles were not sorted alphanumerically
- 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
Improvements
- Creation of review findings for empty lines is now prevented
- Improved description of "No use of task handler functions" check in ABAP
- Improved error handling when attempting to define an external analysis group with a name of an existing internal analysis group
Version 8.2.1
Fixes
- Line coverage metric was not calculated correctly
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.2.0
Invalid line coverage metrics in version 8.2.0
Teamscale 8.2.0 contains a bug that leads to Teamscale not calculating the coverable lines for many files (namely, it will only consider the first 10 files of each commit). This leads to invalid line coverage metrics, which in turn can have unexpected consequences like missing files in the arbitrary treemaps. Due to this, we decided to take version 8.2.0 offline.
Version 8.2.1 (due on 16th August, 2022) will contain a fix for this behavior. If you already installed version 8.2.0, the fix will only work if the affected projects are reanalyzed.
Bug Fixes
- 8.2.0 contains all fixes from previous versions released on and before August 9th, 2022
- For brevity, only new features are included in the changelog
Major Features
- ABAPLint and its dependencies are now shipped/bundled in Teamscale
- ABAPLint analyses use the ABAP version of SAP systems
- Include **.abap_ddic files and exclude generated interfaces in ABAP analysis profile by default
- Test-case extraction for function-based and class-based unit tests from the MathWorks testing frameworks
- Support for parsing portable .NET PDB files
- Support for
parameters
field in Testwise Coverage V2 - More detailed finding messages and properties for checks from jQAssistant
Web UI
- Configuration wizard for the Teamscale Upload tool
- Check Explorer displays options for quality indicators and groups of analysis profiles
- Unified and improved searching feature, including search in treemaps and a new Advanced code search view
Ctrl + Enter
hot key to accept rationale for tolerations and false positives dialog- Test Gap information now available within Pareto view
New Checks
- Cross-language check that detects the potential masking of exceptions thrown from
finally
blocks - Cross-language check that detects the potential discarding of exceptions when returning from
finally
blocks. - Categorized 42 new SonarLint checks
Administration
- Monitoring of Teamscale threads through navigable thread titles
- Filtering of services on API Reference page
- Instance comparison detects changes in project configurations
- Documented standardized default directory layout for artifact storage schemas (S3/Artifactory)