Releases: sourcegraph/scip-java
lsif-java v0.6.6
Pull Requests
- Add docs for how to manually enable cross-repository navigation (#312) @olafurpg
- fix LsifBuildTool errors.nonEmpty checks (#310) @Strum355
- Handle
-cp
javac compiler option just like-classpath
(#311) @olafurpg - fix range emitted for member references to only include the reference (#309) @Strum355
- change manual gradle configuration to use compileOnly instead of implementation (#308) @Strum355
- Fix: message error '--build-tools=BUILD_TOOL_NAME' (#303) @marcel-dias
- Handle null/unit constant types. (#300) @olafurpg
- Trim the inferred metadata information POM files (#299) @olafurpg
- Make
snapshot-lsif
command more LSIF-compliant (#298) @olafurpg
lsif-java v0.6.4
Scala support
It's now possible to index Scala code with lsif-java. For example, this link shows you references to the java.lang.String.split()
method from the Scala standard library, Spark and MUnit. The versions Scala 2.11.x, 2.12.x, 2.13.x and 3.x are supported.
sbt support
Previously, only the build tools Gradle and Maven were supported for the lsif-java index
command. Now, you can also run lsif-java index
in sbt projects. Both Java and Scala sources will be indexed.
For example, you can now use precise code intelligence on Sourcegraph.com to browse the akka/akka and haifengl/smile repositories.
- https://sourcegraph.com/github.com/akka/akka/-/blob/akka-actor/src/main/java/akka/actor/dungeon/AbstractActorCell.java?L10:13#tab=references
- https://sourcegraph.com/github.com/haifengl/smile/-/blob/core/src/main/java/smile/validation/metric/Specificity.java?L36:14#tab=references
Observe that "find references" shows results in both Java and Scala sources.
⚠️ Caveats
The lsif-java index
command does not yet support Scala projects using the build tools Maven or Gradle. Subscribe to #301 to get notified when we add support for Scala Maven projects and #302 when we add support for Scala Gradle projects.
Pull Requests
- Handle null/unit constant types. (#300) @olafurpg
- Trim the inferred metadata information POM files (#299) @olafurpg
- Make
snapshot-lsif
command more LSIF-compliant (#298) @olafurpg - Upgrade to the latest sbt-sourcegraph (#295) @olafurpg
- Add build tool support for sbt. (#292) @olafurpg
- Update dependency org.flywaydb:flyway-core to v7.12.1 (#289) @renovate
- Update dependency ch.epfl.scala:sbt-bloop to v1.4.8-98-e7d4e01e (#290) @renovate
- Update dependency net.bytebuddy:byte-buddy-agent to v1.11.12 (#287) @renovate
- Update dependency com.google.cloud.sql:postgres-socket-factory to v1.3.2 (#282) @renovate
- Swap order of signature and docstrings in hover messages (#285) @olafurpg
- Start emitting
SymbolInformation
for Scala package repos. (#280) @olafurpg - Update dependency ch.epfl.scala:sbt-bloop to v1.4.8-94-1cfdf0bd (#269) @renovate
- Update dependency net.bytebuddy:byte-buddy to v1.11.9 (#273) @renovate
- Update dependency org.scalameta:sbt-scalafmt to v2.4.3 (#275) @renovate
- Update dependency com.zaxxer:HikariCP to v5 (#276) @renovate
- Update olafurpg/setup-scala action to v13 (#277) @renovate
- Add Scala support. (#278) @olafurpg
lsif-java v0.5.7
Rework emitted packageInformation
vertex data
Previously, lsif-java
included the library version in the name
field of the packageInformation
vertices. This releases changes this to only include the version info in the version
field for consistency with other LSIF indexers.
The manager
field is also changed to no longer have the value "packagehub"
. This was a temporary value during lifetime of the POC of PackageHub, which has been replaced by a new External Service type.
Pull Requests
- emit LSIF dump with rw-r--r-- permissions (#268) @Strum355
- Update packageInformation structure (#267) @olafurpg
- Update dependency net.bytebuddy:byte-buddy-agent to v1.11.8 (#256) @renovate
- Update dependency org.postgresql:postgresql to v42.2.23 (#257) @renovate
- Update dependency org.scalameta:munit to v0.7.27 (#262) @renovate
- Update dependency org.scalameta:sbt-native-image to v0.3.1 (#258) @renovate
lsif-java v0.5.6
Improved error handling
Previously, the lsif-semanticdb
command could fail with an exception when processing certain SemanticDB files. This release includes improvements to error handling so that lsif-semanticdb
should fail less frequently, and it should report a more helpful error message in the cases where it still fails.
Pull Requests
- Return empty
SymbolDescriptor
for empty symbol (#254) @olafurpg - Update dependency ch.epfl.scala:sbt-scalafix to v0.9.29 (#237) @renovate
- Update dependency ch.epfl.scala:sbt-bloop to v1.4.8-43-c2d941d9 (#236) @renovate
- Update dependency com.lihaoyi:pprint to v0.6.6 (#239) @renovate
- Update dependency org.scalameta:munit to v0.7.26 (#241) @renovate
- Update dependency org.scalameta:sbt-mdoc to v2.2.21 (#242) @renovate
- Update dependency pl.project13.scala:sbt-jmh to v0.4.3 (#243) @renovate
- Update dependency net.bytebuddy:byte-buddy-agent to v1.11.1 (#249) @renovate
- Update olafurpg/setup-scala action to v12 (#247) @renovate
- Update dependency com.google.cloud.sql:postgres-socket-factory to v1.3.0 (#250) @renovate
- Upgrade to the latest sbt-sourcegraph (#233) @olafurpg
lsif-java v0.5.5
Improved ANSI color output
Previously, lsif-java used default color output settings when shelling out to Maven and Gradle. Now, lsif-java uses --batch-mode
for Maven and TERM=dumb
for Gradle to reduce ANSI color output (helpful for CI logs). Additionally, the NO_COLOR=true
environment variable is respected so that you can disable all ANSI color output.
Pull Requests
lsif-java v0.5.4
lsif-java v0.5.3
Improved cross-repo navigation
Previously, cross-repo navigation would frequently fail to work, in particular when navigating to symbols from the JDK. This release includes several fixes so that cross-repo navigation should in general work more reliably now.
New -targetroot:javac-classes-directory
Thanks to a contribution from @wiwa, it's possible to configure the semanticdb-javac compiler plugin to emit SemanticDB files in the same directory where the compiler emits classfiles. This makes it easier to integrate lsif-java with a build tool since you can use the same -targetroot:javac-classes-directory
for all projects/modules in a build. Previously, it was necessary to provide an explicit directory for every project/module.
Pull Requests
- Improve handling of moniker import/exports and the JDK (#227) @olafurpg
- Allow javac plugin to infer targetroot from javac class output directory (#224) @wiwa
- Declare local symbols as "export" instead "import" monikers (#222) @olafurpg
- Fix minor PackageHub regressions (#220) @olafurpg
- Disable auto-indexing on packagehub (#225) @olafurpg
- Specify yarn version for website (#226) @olafurpg
- Add
--ttl 0
flag in auto-indexing image to always pick up latest is lsif-java (#223) @olafurpg - skip outputting lsif snapshot for files located outside the sourceroot (#195) @Strum355
- Remove unused dependency in the Java agent (#218) @olafurpg
- Use the correct JDK version when indexing Java packages. (#215) @olafurpg
- Add support for npm packages in PackageHub (#214) @olafurpg
- Fix bug for cross-repo navigation to the JDK sources. (#212) @olafurpg
- Pin Docker digests (#196) @renovate
- Remove
--no-transfer-progress
from Maven command (#210) @olafurpg - Add dockerfile for auto-indexing (#209) @olafurpg
- abstract semanticdb builders and move tree modeling to new class (#194) @Strum355
- Several PackageHub fixes (#193) @olafurpg
- handle unresolved annotation parameter tree differences (#191) @Strum355
lsif-java v0.5.1
Pull Requests
- Add --no-transfer-progress flag to maven invocation (#185) @Strum355
- Emit overridden methods for method SymbolInformation (#172) @Strum355
- Replace emitting MarkedString[] with MarkupContent (#179) @Strum355
- Remove
abstract
/static
from interface signature and pretty-printdefault
modifier (#176) @Strum355 - Add support for binary operator trees in annotations (#182) @Strum355
- Add server to host sources of published Java libraries (#184) @olafurpg
lsif-java v0.5.0
We are excited to announce the v0.5.0 release of lsif-java
🚀
Installing
Use Coursier to install lsif-java
.
cs install --contrib lsif-java
Upgrading
To upgrade to the latest release, run
cs upgrade lsif-java
Improved hover messages
Hover messages now include the full signature of the definition symbol, including annotations.
NOTE: currently, hover messages only render signatures that are defined in the local repository. Subscribe to #174 for updates on rendering signatures of external symbols that are defined outside of the local repository.
Gradle improvements
The lsif-java index
command should work now with the Playframework plugin for Gradle or the newly released Gradle v7.0.
First step towards navigation for Java libraries
The generated LSIF data now includes packageInformation
nodes to link to externally defined symbol. This is the first step towards enabling cross-repository navigation. The next step will be to extend the Sourcegraph backend to serve published Java libraries from Maven Central.
Visit this link to see a live demo of this functionality. The link points to the sources of the Guava library. Observe that you can navigate to symbols that are defined in the JDK, and you can also "find references" can show results from multiple repositories.
Multiple navigation improvements
Goto definition and find references should work better across the board. To name a few changes
- goto definition on a constructor now goes straight to the constructor instead of the class symbol
- goto definition on anonymous classes should give more reliably accurate results
- find references no longer includes confusing references to
this
Pull requests
- fix range building for tabs or mixed tabs/spaces files (#171) @Strum355
- Add support for the Gradle Playframework plugin. (#173) @olafurpg
- Add support for Gradle v7, fixes #164 (#168) @olafurpg
- Reduce emitted occurences noise from anonymous classes (#158) @Strum355
- dont emit references for 'this' (#159) @Strum355
- Pretty-print
throws
clause in method signatures (#160) @Strum355 - Enable cross-repo navigation. (#166) @olafurpg
- Disable GradleBuildToolSuite until #164 is fixed (#165) @olafurpg
- fix ctor range via textsearch & dont emit ref to class in ctro call (#156) @Strum355
- add pretty-printing of annotations on symbols (#148) @Strum355
- fix range building for all constructors (#151) @Strum355
- fix textDocument/reference -> textDocument/references (#149) @Strum355
- Add signature pretty-printer to lsif-semanticdb conversion process (#131) @Strum355
Internal pull requests
- Update dependency ch.epfl.scala:sbt-scalafix to v0.9.27 (#134) @renovate
- Update dependency net.bytebuddy:byte-buddy to v1.10.22 (#138) @renovate
- Update dependency ch.epfl.scala:sbt-bloop to v1.4.8-17-3eab1f80 (#133) @renovate
- Update dependency docusaurus to v1.14.7 (#137) @renovate
- Update dependency com.lihaoyi:pprint to v0.6.4 (#136) @renovate
- Update dependency com.geirsson:sbt-ci-release to v1.5.7 (#135) @renovate
- Update dependency net.bytebuddy:byte-buddy-agent to v1.10.22 (#139) @renovate
- Update dependency org.scalameta:munit to v0.7.23 (#140) @renovate
- Update dependency org.scalameta:sbt-mdoc to v2.2.19 (#141) @renovate
- Update documentation (#132) @olafurpg
lsif-java v0.3.0
🚀 New LSIF emitter
Previously, lsif-java
had a system dependency on a separate tool called lsif-semanticdb
in order to work. This dependency has now been removed so that installing lsif-java
is the only custom tool you need available on your $PATH
🚧 Progress towards better hover messages
Currently, hover messages only contain Javadoc docstrings. We're working on extending hover messages to also include signatures of the referenced symbol. This functionality is planned for the next release once the PR #131 is merged.
- Emit of type parameters in method signatures (#129) @Strum355
- Emit SemanticDB types and signatures (#126) @Strum355
🐛 Bug fixes
- Emit definition occurences for type parameters (#125) @Strum355
- Fixes range deriving for constructs incl classes/interfaces (#121) @Strum355