Coder Social home page Coder Social logo

montisecarc / intellij_msa_language_plugin Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 2.0 989 KB

This projects brings the MontiSecArc language to the popular IntelliJ IDE. The plugin provides a deep integration of secure architecture files into the IDE. Allowing the fast creation of secure architectures and an plain learning curve.

License: Apache License 2.0

Java 1.14% Lex 0.89% FreeMarker 1.20% Kotlin 96.77%
intellij custom-language security-architecture

intellij_msa_language_plugin's Introduction

MontiSecArc IntelliJ Language Plugin

Bildschirmfoto_2016-11-11_um_09.27.00 Build Status codecov codebeat badge

This projects brings the MontiSecArc language to the popular IntelliJ IDE. The plugin provides a deep integration of secure architecture files into the IDE. Allowing the fast creation of secure architectures and an plain learning curve.

Quickstart

  1. Check-Out project:

    git clone https://git.rwth-aachen.de/ma_buning/msa.git --remote --recursive

  2. Import project into IntelliJ. Instructions can be found here.

  3. Run an IDEA instance with the MSA language plugins pre-installed:

    1. Run/Debug runIdea from the gradle task list: Bildschirmfoto_2017-01-10_um_18.28.47

Install Plugin into IntelliJ Installation

The plugin requires IntelliJ Version 2016.X.X to be installed.

Download the newest version of the plugin from here. Do not unzip the file, just open the IntelliJ preferences and locate "Plugins" from the left menu. Bildschirmfoto_2016-11-11_um_09.38.51 Click the "Install plugin from disk" button and select the downloaded zip file.

Usage Examples

Simple Environment Component

package de.monticore.lang.montisecarc.simple.secarc;

import de.monticore.lang.montisecarc.simple.secarc.ServiceA;
import de.monticore.lang.montisecarc.simple.secarc.ServiceB;

// Enclosing Component Environment
component ServiceEnvironment {

    // The environment is untrusted
    trustlevel -1 "Untrusted public network";
    
    // Create instance of service A
    ServiceA serviceA;
    
    // Create instance of service B
    ServiceB serviceB;
    
    // Service B is strongly authenticated at service A
    identity strong serviceB -> serviceA;
    
    // Connect the defined ports
    // Uses default connection protocol but requires it to be encrypted
    connect encrypted serviceB.outDataPackage -> serviceA.inDataPackage;
    
    // Connect two ports
    // Define the used protocol for the connection as HTTPS
    connect serviceB.outDataPackage -[HTTPS]-> serviceA.inDataPackage;
}

Simple Service Component

package de.monticore.lang.montisecarc.simple.secarc;

import de.monticore.lang.montisecarc.simple.msg.*;

component ServiceA {

    // Access to the service needs to be checked by identities
    accesscontrol on;
    
    // Define that inDataPackage port can only be access by privilegedUser
    access inDataPackage(privilegedUser);
    
    // Define ingoing port
    port in DataPackage inDataPackage;
}

Features

  • Syntax Highlighting
  • Keyword-Autocompletion
  • Brace Matching
  • New File Integration
  • MontiSecArc templates for components and ports
  • Component and port folding support
  • Contex Condition checks
  • Reference Resolution
  • Find-Usage
  • Graph Generation (with these two plugins installed: 1, 2)

Create New Version

New versions are automatically created by creating a new Git Tag.

Troubleshooting

Gradle Building finds Bytecode Errors

It is necessary to update the Java Version. Working (tested) is version 1.8.0_102

Programming Language

The program is mostly written in Kotlin, a short primer into the usage can be found here

Contribution

We welcome contributions in the form of issues or pull requests. If you need help with this process, we've created a brief overview here.

intellij_msa_language_plugin's People

Contributors

tbuning avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

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.