Compare any two points of development to see how your system's quality has changed. Define iteration and release dates for easy visualization and comparison.
Visualize how metrics changed during the entire development phase. Zoom into areas of interest and easily discover the root-cause for unexpected changes in a metric's trend.
Teamscale is not only able to analyze your system's entire history. It also knows about branches in your version control system and respects them during analysis.
Here are some examples of the sophisticated analyses that Teamscale can do.
- Architecture Conformance
Compare the actual dependencies in your source code with your intended architecture. Provide guidance to your developers by tracking architecture violations in real-time.
- Clone Detection
Automatically find duplicated code created by copy & paste. View existing clones to prevent bugs from inconsistent modification of duplicate source code.
- Test Gap Analysis
Code changes often lead to bugs. Did you test your changes? Test Gap analysis makes changes and testing activities transparent. Stop untested changes from slipping into production.
- Coding Conventions
Validate that your coding conventions are followed. Teamscale comes with common rules preconfigured, but lets you configure them to suit your individual requirements.
- Documentation Analysis
Check if your code is fully documented. Documentation requirements are easily configurable; for example only require documentation of public methods that are not a simple getter/setter. You can also detect empty or trivial interface comments.
- Structural Analysis
Find hotspots of badly structured code. All thresholds can be configured to fit your project's individual guidelines.
- External Findings and Metrics
Teamscale provides a REST API for uploading findings and metrics from external sources. These are treated just like the results from Teamscale's own analyses.
- Custom Checks
Teamscale comes with a flexible language for implementing custom project-specific checks.
- Analysis Tool Integrations
Teamscale supports a plethora of external analysis tools and format, and the list is always growing.
To just name a few: SpotBugs, dotCover, Istanbul, ESLint, Clang, and much more.
Here are commons questions and their answers regarding Teamscale's analyses.
- Does Teamscale support metric X?
Many tools measure, what is easy to measure and try to offer as many metrics as possible. For many of these metrics, including the infamous cyclomatic complexity, their interpretation in terms of software quality is vague at best. We feel that in most cases a finding pointing the developer to the problem in the code is more effective. We only measure few basic metrics about code structure, clone and findings density, and commenting, that help to get an overview of the entire code base.
- Can I programmatically access the data in Teamscale?
Teamscale provides a well-documented REST API, which allows access to all of the data in Teamscale. This API is also used by the Web UI and the IDE plugins.
- Does Teamscale calculate test coverage?
Teamscale does not directly execute your tests and calculate your coverage. However, we can import test coverage results from the most common coverage tools during your continuous integration builds. Coverage data can then be displayed both as overall metrics and overlaid over your code to see where quality issues and untested code meet each other.
- Does Teamscale detect invalid or cyclic dependencies?
Cyclic dependencies themselves are not necessarily a quality problem. What we are interested in instead, is whether the code follows the design as intended by its architects. For this, Teamscale allows you to model the intended architecture of your system and compare the actual dependencies in the code against it. Teamscale is also a great tool for visualizing existing dependencies in your code.
- Can I implement custom checks for Teamscale?
Yes. Teamscale provides a simple mechanism to describe custom checks that are executed incrementally during the analysis. If you don't want to do the coding yourself, we are happy to assist you in implementing checks for your custom rules.
Teamscale is easily extendable to new programming languages, new version control systems, new issue trackers or external analysis tools.Contact us!