JetBrains/mps-coderules
GitHub: JetBrains/mps-coderules
JetBrains MPS 的实验性扩展,利用基于 CHR 的约束处理和逻辑编程方法为自定义语言提供类型检查与逻辑推理能力。
Stars: 32 | Forks: 4
[](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
# MPS CodeRules
作为 [JetBrains MPS](https://jetbrains.com/mps) 的一项实验性功能,*Coderules* 是一组语言的集合,允许利用逻辑编程方法来解决类型检查及相关问题。
[JetBrains MPS](https://www.jetbrains.com/mps/) 是由 [JetBrains](http://www.jetbrains.com/?fromFooter) 开发的一个项目。
## 文档
[文档](http://jetbrains.github.io/mps-coderules/)可在线访问。
## 安装
### 从 Marketplace 安装
将提供对 EAP 频道访问权限的 URL 添加到“插件仓库”列表中:
1. 在欢迎对话框中打开“插件”部分
2. 点击右上角的“齿轮”按钮并选择 `Manage Plugin Repositories...`
3. 添加 URL `https://plugins.jetbrains.com/plugins/eap/list`
4. 在 Marketplace 标签页中搜索以下插件:
- MPS Coderules Typechecking
- MPS Coderules Core Types
5. 安装这两个插件并重启 IDE
### 直接下载插件文件
适用于最新的 MPS 稳定版 (2021.3):
1. 从[此](https://teamcity.jetbrains.com/viewType.html?buildTypeId=MPS_20213_Distribution_MpsCodeRules&state=successful)构建配置中下载这两个插件(参见上次成功构建的“artifacts”):
- `jetbrains.mps.coderules-213-*.zip`(Coderules 及相关语言和辅助解决方案)
- `jetbrains.mps.core-types-213-*.zip`(核心 MPS 语言的类型定义)
2. 在首选项的“插件”页面的“管理...”菜单中选择“从磁盘安装插件...”选项,以安装这两个插件。
3. 重启 MPS。
## 状态
| TeamCity Stable | TeamCity EAP |
|:--|:--|
| [/statusIcon)](https://teamcity.jetbrains.com/viewType.html?buildTypeId=MPS_20213_Distribution_MpsCodeRules) | [/statusIcon)](https://teamcity.jetbrains.com/viewType.html?buildTypeId=MPS_20222_Distribution_MpsCodeRules) |
此项目的状态为**预发布版**。请不要指望任何语言特性或 API 是稳定的。本项目的目的是展示新技术并收集早期反馈。
## 概述
本项目是 MPS 团队在使用约束处理(特别是 [CHR](http://www.informatik.uni-ulm.de/pm/fileadmin/pm/home/fruehwirth/constraint-handling-rules-book.html))进行代码分析领域所进行的持续研究的成果。
使用 CodeRules 对源模型进行分析可以被描述为一个两阶段的过程。
1. 收集规则表并应用规则模板。
2. 处理在第一阶段收集到的约束规则。
在第一阶段,系统会检查被分析模型所使用的语言,以寻找相应的 CodeRules 切面模型(在类型检查的情况下即为类型)。*Coderules* 允许由派生语言提供扩展。扩展具有更高的优先级,因此很容易覆盖内置行为。
此阶段的结果是一个约束规则程序,它是规则表的集合,而规则表又表示约束规则的列表。然而,这个“程序”仅存在于内存中,因为它没有任何文本表示形式。
在第二阶段,将评估在第一阶段创建的约束程序。约束处理的语义与常规的 Java 语义兼容。
## 示例
- 核心 MPS 语言的[类型检查](samples/mpscore)。
- [Lambda 演算的类型检查](samples/lambdacalc)展示了标准类型检查算法的实现。
- 使用 Fitch 系统的[证明验证](samples/fitch)演示了如何进行逻辑推理。
## 源码
可以使用最新版本的 JetBrains MPS 打开源代码。有关如何设置项目的信息,请参见 INSTALL.txt。
可以通过电子邮件 `fedor.isakov`@`jetbrains.com` 或 [Twitter](https://twitter.com/fisakov) 联系作者。
## 许可证
Copyright 2014-2022 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.
标签:Android, Core Types, DSL, IDE插件, JetBrains, JetBrains MPS, JS文件枚举, odt, 云安全监控, 代码分析, 代码规则, 凭证管理, 抽象语法树, 插件, 类型检查, 类型系统, 编程语言理论, 编译器, 逻辑推理, 逻辑编程, 静态分析, 领域特定语言