Code Monkey home page Code Monkey logo

jimplelsp's Introduction

JimpleLSP

This is an implementation of the Language Server Protocol for Jimple. A LSP Server implementation allows an IDE, which supports the LSP, to provide well known features of programming languages for a specific Language.

Installation

Get the server Jar.

Either: download the JimpleLSP Server Release and extract it to any Location.

Or: Compile from source.

  1. run git clone https://github.com/swissiety/JimpleLSP to clone this Repository.
  2. run mvn package to build a Jar. The generated Jar can be found in target/jimplelsp-0.0.1-SNAPSHOT-jar-with-dependencies.jar.

IntelliJ Idea

  1. Install or use an LSP Plugin in your IDE to enable Language Server Protocol Support. You can use IntelliJLSP
  2. Configure the LSP Plugin in your IDE to use the JimpleLSP Server Jar.

VSCode

Install the JimpleLSP Extension from the Marketplace.

Or if you want to compile it yourself:

  1. cd vscode/ && npm install to install the dependencies.
  2. npm install -g vsce to install the Visual Studio Code Extension commandline tool.
  3. vsce package to package the plugin.
  4. code --install-extension JimpleLSP-0.0.5.vsix to install the packaged plugin.
  5. restart VSCode

Usage

You can import already extracted Jimple files into your workspace.

JimpleLSP can extract Jimple from a .jar or an .apk file do simplify your workflow. To enable JimpleLSP to extract Jimple your .apk or .jar file needs to be in your workspace on startup of your IDE, but the workspace must not contain a .jimple file. Additionally you need to configure the following config key in your IDE: ** JimpleLSP.jimpleextraction.androidplatforms** to tell Soot where it can find the Android runtimes usually located in ANDROID_HOME/platforms.

A Collection of android.jars is available in the android-platforms Repo.

Development

The Language Server starts by default in STDIO mode. Use -s to start the Language Server executable in socket mode on Port 2403, to change the port use -p <portnumber>.

Server Capabilities

This Server implementation was initially oriented towards LSP 3.15. The currently implemented features are focussed on improving code exploring in Jimple. For checked capabilities there are previews of the functionality in the linked Issue.

Text Document Capabilities

  • ✅ didOpen
  • ✅ didChange
    • ✅ Full text sync
    • ❌ Incremental text sync
  • ✅ didSave
    • ✅ Include text
  • ❌ completion
  • hover
  • ❌ signatureHelp
  • declaration
    • ❌ [planned #18] link support
  • definition
    • ✅ link support
  • typeDefinition
    • ❌ [planned #18] link support
  • implementation
    • ❌ [planned #18] link support
  • references
  • documentHighlight
    • ✅ for Locals
    • ❌ types
  • documentSymbol
  • ❌ codeAction
    • ❌ resolve
  • ❌ codeLens
  • ❌ documentLink
  • ❌ formatting
  • ❌ rangeFormatting
  • ❌ onTypeFormatting
  • ❌ rename
  • ✅ publishDiagnostics
  • ❌ [WIP #16] foldingRange
  • ❌ selectionRange
  • semanticTokens
  • ❌ callHierarchy

Workspace Capabilities

  • ❌ [planned #9] applyEdit
  • ❌ didChangeConfiguration
  • ❌ [planned #17] didChangeWatchedFiles
  • symbol
  • ❌ executeCommand

Window Capabilities

  • ❌ workDoneProgress
    • ❌ create
    • ❌ cancel
  • ✅ logMessage
  • ✅ showMessage
  • ✅ showMessage request

About

This piece of software was created as part of a bachelor thesis at University of Paderborn (UPB), Germany.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.