🔍

svlintのアップデート

2023/12/01に公開

はじめに

svlintはオープンソースのSystemVerilog linter、svlsはそのリント結果をエディタ上でリアルタイム表示するためのLanguage Serverです。

https://github.com/dalance/svlint
https://github.com/dalance/svls

それぞれの簡単な紹介は以下の記事を参照ください。

https://zenn.dev/dalance/articles/9f67b237c69e41

https://qiita.com/dalance/items/dc721a7e22fe10b2f5d4

今回はここ1年くらいのsvlintのアップデートについてご紹介します。

プロジェクト概況

2023年は v0.7.0 から v0.9.1 まで計6バージョンをリリースしました。
ここまでのGitHubのスター数は以下の通りで、50-100star/年くらいでコンスタントに増えているようです。

スターを付けてくださった方の所属などを見ていると、実際にチップ設計されていそうな方もちらほらいるので興味深いところです。ちなみに直接聞いた範囲だと海外で2社、国内で2社(うち1社は弊社ですが)くらいは業務で使っているそうです。

主な機能追加

ドキュメントの整備

全ルールの説明を含む詳細なドキュメントが整備されました。以下から確認できるほか、リリースパッケージにはPDF化された状態で配布されています。

https://github.com/dalance/svlint/blob/master/MANUAL.md

ルールセット

ルールの数もかなり増えてきたため、よく使われそうなルールの組み合わせをルールセットとして公開することにしました。現在の一覧は以下の通りです。

https://github.com/dalance/svlint/tree/master/rulesets

それぞれのルールセットはドキュメントに詳しく解説されています。

https://github.com/dalance/svlint/blob/master/MANUAL.md#rulesets

テキストルール

svlintはもともとSystemVerilogとしてパースした後の構文木に対してリントを行うツールだったため、ソースコードの幅やコメントなど構文木に表れないものは対象外でした。
このうち特にソースコードの最大幅をチェックしたいという要望は多く寄せられたため、従来の構文ルールに加えてテキストベースのルールを追加できるような枠組みを新たに導入しました。
最大幅だけでなくヘッダーコメントのチェックや空白関連のルールなどが多く追加されています。

おわりに

svlintのここ1年くらいのアップデートをまとめてみました。来年はSystemVerilogの言語規格がアップデートされるらしいので、公開されたら対応したいと思います。

Discussion