StevenLooman/magik-tools
GitHub: StevenLooman/magik-tools
Magik 编程语言的开发工具集,提供语言服务器、调试器、代码检查器和 SonarQube 集成,为 Smallworld 5 平台开发者打造完整的 IDE 支持环境。
Stars: 23 | Forks: 12
# Magik-tools
`Magik-tools` 是 Smallworld 5 平台使用的 Magik 编程语言工具集合。它提供以下工具:
* Language server
* Debug adapter
* Linter
* Typing linter
* SonarQube plugin
本产品并未经过充分测试,也未达到生产就绪状态。请自行承担使用风险,实际效果可能因情况而异。
## 组件
本项目由多个组件组成。
### SonarQube 插件
#### 安装
构建完成后,artifact/jar 将在 `sonar-magik-plugin/target/sonar-magik-plugin-.jar` 处生成。
将插件 (`sonar-magik-plugin-.jar`) 复制到您的 `sonarqube/extensions/plugins` 目录。重新启动 Sonar 以激活插件。
预构建的 artifacts/jars 可以在 [`magik-tools/releases`](https://github.com/StevenLooman/magik-tools/releases) 找到。
#### 分析项目
使用 [sonar-scanner](https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner) 来分析您的项目。存储在 `sonar-project.properties` 中的示例配置如下:
```
sonar.projectKey=test:test_project
sonar.projectName=Test project
sonar.sources=modules/
sonar.language=magik
sonar.coverageReportPaths=coverage.xml
```
### Magik Linter
Magik 的 linter 位于 [`magik-lint`](magik-lint) 目录中。有关更多信息,请参见 [`magik-lint/README.md`](magik-lint/README.md)。
### Magik Typed Linter
Magik 的类型检查器/linter 位于 [`magik-typed-lint`](magik-typed-lint) 目录中。有关更多信息,请参见 [`magik-typed-lint/README.md`](magik-typed-lint/README.md)。
### Language server
Magik 的 language server 位于 [`magik-language-server`](magik-language-server) 目录中。有关更多信息,请参见 [`magik-language-server/README.md`](magik-language-server/README.md)。
### Debug adapter
Smallworld 5/Magik 的 debug adapter 位于 [`magik-debug-adapter`](magik-debug-adapter) 目录中。有关更多信息,请参见 [`magik-debug-adapter/README.md`](magik-debug-adapter/README.md)。
## 开发
### 构建
您可以使用 maven 构建插件,如下所示:
```
$ mvn clean verify test package
[INFO] Scanning for projects...
...
```
不运行测试进行构建:
```
$ mvn -Dmaven.test.skip=true clean verify test package
[INFO] Scanning for projects...
...
```
Java 源代码的自动格式化:
```
$ mvn spotless:apply
[INFO] Scanning for projects...
...
```
### 单元测试
您可以使用 maven 运行单元测试,如下所示:
```
$ mvn clean test
[INFO] Scanning for projects...
...
```
结果将显示在控制台上。
### 变更
变更使用 [Towncier](https://towncrier.readthedocs.io/) 记录。一旦创建了新版本,将使用 towncrier 将变更日志写入 `CHANGES.md`。
要创建新的变更日志条目,请运行:
```
$ towncrier create -c "You description here, in Markdown" ..md
...
```
变更类型可以是以下之一:
* `feature`:表示新功能。
* `bugfix`:表示错误修复。
* `doc`:表示文档改进。
* `removal`:表示弃用或移除公共 API。
* `misc`:工单已关闭,但用户对此不感兴趣。
当引入破坏性变更时,请在变更日志条目之前添加以下片段:
```
**Breaking change**
```
然后会在 ``changes`` 目录中创建一个新文件。向该文件添加变更的简短描述。
### 发布
调用位于 `.github/scripts/release.sh` 的脚本,并将新版本作为参数。例如:
```
$ .github/scripts/release.sh 0.12.0
...
```
这将设置所有相关组件的版本,提交更改并对其进行标记。不会执行推送操作。
要继续开发,请将 `-SNAPSHOT` 附加到版本后。例如,`0.12.0-SNAPSHOT`。
### 更新
使用 [Dependabot](https://docs.github.com/en/code-security/dependabot) 来保持版本最新。
如果必须手动更新版本,请运行以下命令以检查是否有任何新版本的 maven-dependencies 可用:
```
$ mvn versions:display-dependency-updates
...
```
### SonarCloud
该项目可以在 [SonarCloud](https://sonarcloud.io/project/overview?id=StevenLooman_magik-tools) 找到。
## 贡献
有关如何贡献的说明,请参见 [`CONTRIBUTING.md`](CONTRIBUTING.md)。
## 许可证
本项目根据 GPLv3 授权,请参见 [`LICENSE.md`](LICENSE.md)。
## 商业用途
允许商业用途。本产品并未经过充分测试。请自行承担使用风险,实际效果可能因情况而异。
如果您确实使用了它——无论是商业用途还是非商业用途——请务必通知我。
标签:DAP, GE Smallworld, IDE 支持, JS文件枚举, Linting, LSP, Magik, Smallworld, SOC Prime, SonarQube 插件, VSCode 扩展, 云安全监控, 域名枚举, 域名枚举, 开发工具, 类型检查, 编程语言工具, 语言服务器, 调试适配器, 静态分析