All Projects → JetBrains → mps-coderules

JetBrains / mps-coderules

Licence: other
Type checking and logical inference for JetBrains MPS

Programming Languages

kotlin
9241 projects
java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to mps-coderules

strongtyping
Decorator which checks whether the function is called with the correct type of parameters.
Stars: ✭ 85 (+254.17%)
Mutual labels:  type-checking
jdepend
A Java package dependency analyzer that generates design quality metrics.
Stars: ✭ 13 (-45.83%)
Mutual labels:  code-analysis
static-code-analysis-plugin
A plugin to simplify Static Code Analysis on Gradle. Not restricted to, but specially useful, in Android projects, by making sure all analysis can access the SDK classes.
Stars: ✭ 36 (+50%)
Mutual labels:  code-analysis
joern
Open-source code analysis platform for C/C++/Java/Binary/Javascript/Python/Kotlin based on code property graphs
Stars: ✭ 968 (+3933.33%)
Mutual labels:  code-analysis
DotNet.SystemCollections.Analyzers
A set of code analyzers & code fix providers to help developers use the proper .NET Collection & API in their algorithms
Stars: ✭ 72 (+200%)
Mutual labels:  code-analysis
lancer
Turn your python code into a hideous mess. Ever heard of Black? This is the opposite.
Stars: ✭ 179 (+645.83%)
Mutual labels:  code-analysis
java-notes
Complete Java Note for colleges in Nepal.
Stars: ✭ 30 (+25%)
Mutual labels:  control-flow
executive
🕴Elegant command execution for Node.
Stars: ✭ 37 (+54.17%)
Mutual labels:  control-flow
floweret
Runtime type annotations for CoffeeScript (and JavaScript too!)
Stars: ✭ 20 (-16.67%)
Mutual labels:  type-checking
facoy
FaCoY Code-to-Code Search Engine
Stars: ✭ 26 (+8.33%)
Mutual labels:  code-analysis
js-confuser
JS-Confuser is a JavaScript obfuscation tool to make your programs *impossible* to read.
Stars: ✭ 38 (+58.33%)
Mutual labels:  control-flow
cookiecutter-cpp-project
A cookiecutter for a C++ Project with lots of configuration options
Stars: ✭ 25 (+4.17%)
Mutual labels:  code-analysis
cpsfy
🚀 Tiny goodies for Continuation-Passing-Style functions, fully tested
Stars: ✭ 58 (+141.67%)
Mutual labels:  control-flow
typepy
A Python library for variable type checker/validator/converter at a run time.
Stars: ✭ 16 (-33.33%)
Mutual labels:  type-checking
Typology
Swift type checking and semantic analysis for developer tools
Stars: ✭ 68 (+183.33%)
Mutual labels:  type-checking
micropython-stubs
Stubs of common micropython modules to aid in code completion, static typechecking and overall development
Stars: ✭ 46 (+91.67%)
Mutual labels:  type-checking
iets3.opensource
Open Source Parts of IETS3
Stars: ✭ 32 (+33.33%)
Mutual labels:  jetbrains-mps
progge.rs
Program analysis playground for a simple, imperative language
Stars: ✭ 29 (+20.83%)
Mutual labels:  type-checking
infrared
✨🚀 Blazing fast, inferred static type checker for JavaScript.
Stars: ✭ 46 (+91.67%)
Mutual labels:  type-checking
apr
this is like caolan/async which is like lodash but async, but awaitful
Stars: ✭ 75 (+212.5%)
Mutual labels:  control-flow

MPS CodeRules

An experimental feature of JetBrains MPS, Coderules is collection of languages that allow to utilize logical programming approach for solving typechecking and related problems.

JetBrains MPS is a project developed by JetBrains.

Documentation

The documentation is available online.

Installation

  1. Download the two plugins from this build configuration (see "artifacts" of the last successful build):
  • jetbrains.mps.coderules-212-*.zip (Coderules and related languages and accessory solutions)
  • jetbrains.mps.core-types-212-*.zip (Type definitions for core MPS languages)
  1. Install both plugins by choosing "Install Plugin from Disk.." option from "Manage..." menu of Plugins page in the preferences.
  2. Restart MPS.

Status

TeamCity TeamCity EAP

The status of this project is pre-release. Don’t rely on any of the language features or the API to be stable. The purpose of this project is to show the new technology and collect early feedback.

Overview

This project is the result of ongoing research done within MPS team in the area of code analysis using constraints handling, in particular CHR.

Analysis of source model with CodeRules can be described as a two-phase process.

  1. Collecting rule tables and applying rule templates.
  2. Processing constraint rules collected in the first stage.

In the first phase, languages used by the model being analysed and surveyed for the appropriate CodeRules aspect model, which is types in case of type checking. Coderules allow for extensions to be provided by derived languages. Extensions have higher priority, so it’s easy to override the built-in behaviour.

The outcome of this phase is a constraint rules program, which is a collection of rule tables, which in turn represent lists of constraint rules. This “program” however, exists in memory only as it does not have any textual representation.

In the second phase the constraints program that was created in phase one is evaluated. The semantics of constraints processing is compatible with regular Java semantics.

Samples

Sources

The source code can be opened with the last release of JetBrains MPS. See INSTALL.txt for information on how to set up the project.

The author can be reached by email fedor.isakov@jetbrains.com or by Twitter.

License

Copyright 2014-2017 JetBrains s.r.o.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].