github / github/code-navigation

Code navigation for new language: AL

オープン
#17 コメント 0 件 リアクション 3 件 担当者 0 名 GitHub で見る
主要言語
言語のデータがありません
スター
12
フォーク
7
PR マージ指標
30日以内にマージされた PR はありません

説明

## Language

**AL** (Microsoft Dynamics 365 Business Central) — https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-programming-in-al

AL is the programming language used to build extensions for Microsoft Dynamics 365 Business Central, Microsoft's flagship ERP platform. It has a large partner/developer ecosystem with significant usage on GitHub — [`path:*.al language:AL`](https://github.com/search?q=path%3A*.al+language%3AAL&type=code).

## Why now

AL has been recognized in Linguist since 2018 but has never had code navigation: no mature tree-sitter parser existed until now. `tree-sitter-al` (MIT, on crates.io) is the first, with 100% parse success on Microsoft's 15,358-file Base Application and 1,404 passing tests — filling a long-standing gap for the Business Central / AppSource developer community.

## Linguist entry

- [x] Linguist language name: AL
- [x] Linguist language ID: 658971832
- [x] Permalink: https://github.com/github-linguist/linguist/blob/537297cdae3ab05f8d5dd1c03627a5bd73707b19/lib/linguist/languages.yml#L109-L116

## Tree-sitter parser

Parser URL: https://github.com/SShadowS/tree-sitter-al

- [x] Parser is open source: MIT license
- [x] Repository includes tags queries (`queries/tags.scm`, 226 lines)
- [x] Tags queries include `@scope` for fully-qualified names (if applicable) — N/A: AL definitions are always lexically nested inside object declarations (procedures inside codeunits, fields inside tables, etc.), so FQNs are inferred from tree structure — same as Java/C#. No `@scope` captures needed.
- [x] Rust crate: https://crates.io/crates/tree-sitter-al

### Maturity

- 100% parse success rate on 15,358 production AL files (Microsoft's Base Application)
- 1,404 test cases passing
- Version 2.3.0, actively maintained

### Tags query coverage

**Definitions:**
- Objects: `table`, `page`, `codeunit`, `report`, `query`, `xmlport`, `enum`, `interface`, `controladdin` + all extension types → `@definition.class` / `@definition.interface`
- Procedures & triggers → `@definition.method`
- Parameters → `@definition.parameter`
- Fields, keys, columns → `@definition.field`
- Variables → `@definition.variable`
- Enum values, labels → `@definition.constant`
- Actions, triggers, views → `@definition.function`
- Namespaces → `@definition.module`

**References:**
- Method/function calls → `@reference.call`
- Table/enum type references → `@reference.class` / `@reference.type`
- Interface implementations → `@reference.implementation`
- Property value references → `@reference.constant`

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

リンクされている tree-sitter-al リポジトリ、特に queries/tags.scm と、そこに記載された parser および tag の対応範囲を確認することから始めます。列挙されている AL の定義と参照を code-navigation の統合要件と比較し、そのうえで、AL のナビゲーションがそれらのカテゴリと、記載された parser および query の対応範囲をサポートしていることを検証します。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
rust
領域
developer-experience, tooling
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
52/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。