Sourcetrail 2017.3 offers a lot of UI refinements, performance improvements and bug fixes. However, it also holds a few long awaited features, like interactive tooltips with information about variable types and signatures, a command line API for reindexing, as well as an automatic update checker.
New in this Release:
- Interactive tooltips showing variable types and function signatures
- Command line API for (re)indexing projects
- Automatic update checker
- Performance improvements of file clearing during refresh, project loading time, symbol hover latency
- Better Java indexer coverage and performance
As noted by some users’ feedback, this was an “obvious” missing feature. So far Sourcetrail only offered tooltips in the graph view, which only showed the symbol’s type. For functions and methods it also displayed the full signature, but only as plain text.
With this release we added a new interactive tooltip popup to graph and code view. The tooltip will appear about a second after hovering a symbol and holds information about:
- symbol type e.g. class, function, file etc.
- visibility e.g. public or private if applicable
- reference count of the symbol
- symbol name
- clickable type name for variables
- full signatures for functions and mothods with clickable return types and parameter types.
Due to the way signatures are currently stored in our database, the signatures don’t look exactly as declared in your source code, but use fully qualified type names like the compiler/linker use them. Parameter names are also not shown by the current implementation. We plan extend this implementation to show signatures the same way as defined in the source code in the future.
Command line API for indexing projects
We added a minimal commandline API for indexing projects and configuring indexing related preferences. First add the location of your Sourcetrail binary to your
PATH environment variable so you can access it directly from the command line, e.g. on macOS the binary is located at
Run Sourcetrail from the command line with the
-h option to find out more about the usage:
$ Sourcetrail --help Usage: Sourcetrail [command] [option...] [positional arguments] Commands: config index * Each command has its own --help Sourcetrail Options: -h [ --help ] Print this help message -v [ --version ] Version of Sourcetrail --project-file arg Open Sourcetrail with this project (.srctrlprj) Positional Arguments: 1: project-file
Currently there are 2 commands,
config. Use the
index command to index a project, the
--help option explains its usage:
$ Sourcetrail index --help Usage: Sourcetrail index [option...] f Config Options: -h [ --help ] Print this help message -f [ --full ] Index full project (omit to only index new/changed files) --project-file arg Project file to index (.srctrlprj) Positional Arguments: 1: project-file
To index a project from the command line simply use:
$ Sourcetrail index <path/to/project.srctrlprj>
This will index a project from scratch or refresh it in case there is already a
.srctrldb file present. To reindex the whole project you can add the parameter
$ Sourcetrail index --full <path/to/project.srctrlprj>
config command can be used to change indexing related preferences. To see a list of all available options run:
$ Sourcetrail config --help Usage: Sourcetrail config [option...] Config Options: -h [ --help ] Print this help message -t [ --indexer-threads ] arg Set the number of threads used for indexing (0 uses ideal thread count) -p [ --use-processes ] arg Enable C/C++ Indexer threads to run in different processes. <true/false> -l [ --logging-enabled ] arg Enable file/console logging <true/false> -L [ --verbose-indexer-logging-enabled ] arg Enable additional log of abstract syntax tree during the indexing. <true/false> WARNINIG Slows down indexing speed -j [ --jvm-path ] arg Path to the location of the jvm library -M [ --jvm-max-memory ] arg Set the maximum amount of memory for the JVM indexer(-1 for using the JVM default settings) -m [ --maven-path ] arg Path to the maven binary -J [ --jre-system-library-paths ] arg paths to the jars of the JRE system library. These jars can be found inside your JRE install directory (once per path or comma separated) -z [ --license-file ] arg Enter license via Licensefile -Z [ --license-string ] arg Enter licenes via commandline -g [ --global-header-search-paths ] arg Global include paths (once per path or comma separated) -F [ --global-framework-search-paths ] arg Global include paths (once per path or comma separated) -s [ --show ] displays all settings
To change a value use an option flag followed by the new value:
$ Sourcetrail config --logging-enabled 1
--show option to see the current values for all preferences:
$ Sourcetrail config --show
Automatic update checker
With our automatic update checker Sourcetrail can finally tell you if a new version is available. The automatic update check is located on the Start Window and is disabled by default. If enabled, Sourcetrail will connect to our server at https://www.sourcetrail.com once a day to check whether a new version is available. If that is the case, a dialog informing you about the update will be shown, including a button to download the new release.
You can also manually invoke the update check by clicking on check for new version above. Or just ignore these update check features and Sourcetrail won’t ever connect to our online server.
Improved Java indexing
At the moment we are working hard to improve and finalize our Java indexer coverage, which is still not as good as our C/C++ coverage. Java projects still yielded a lot of unsolved symbols. We could already reduce the percentage of unsolved symbols from 6.5% to 1.7% in our test projects with this new release and will continue to cover more unhandled cases.
Java indexing performance was also greatly improved with this release and is now about 2.5 times as fast as before. We are looking forward to ending our Java Beta with our next release version.
Thanks for reading and please share if you like our progress! And don’t forget to download the new build.