Dynamics 365 Business Centralのコード分析機能を利用してコードの品質を上げよう (AL CodeCop)

Dynamics 365 Business Central

皆様、こんにちは!
Visual Studio Codeでは、コードの品質の分析と向上のためのさまざまなツールを提供しています。本記事はDynamics 365 Business Centralをカスタマイズする時のコード分析機能ついて紹介いたします。
Dynamics 365 Business Centralのコード分析ツールは、静的コード分析ツール (static code analysis)です。 これは、Business Central開発者にとって非常に重要な追加機能の一つです。 コード分析を有効にすることで、適切にコードをチェックすることが可能です。
「Dynamics 365 Business Central Development Quick Start Guide」の本では、以下のように記述されています。まるでコーディング途中のお巡りさんみたいです。

It is a software artifact that checks, like a cop at the corner of the streets, if the code written respects specific rules (coding rules). So it is also called AL CodeCop.

追記:
コード分析機能は旧C/SIDEには存在しませんので、C/AL (NAV)の開発者は、独自のコーディングルールを先に念頭に置いて、コードが「ガイドライン」に沿っているかどうかその目ですべてを確認する必要があります。100%品質保証は現実的ではありません。

コード分析ツールのDocsについは下記をご参考ください。
Using the Code Analysis Tool

コード分析有効化と実施手順
コード分析を使用する前に、Visual Studio CodeとAL言語がインストールされていることをまず確認しましょう。インストール手順などは下記をご参考ください。
Dynamics 365 Business Centralエクステンション開発 – Hello Worldまでの一連の流れ

まずVisual Studio Codeを開きます。

「Problems」が一つもないことをご注目ください。

次に「Manage -> Settings」をクリックして、設定画面に入ります。

「Background Code Analysis」をチェックします。(ディフォルトでチェックされた可能性がありますので、確認するだけで)

下の「Edit in settings.json 」もしくは右上の「Open Settings (JSON)」をクリックして

SettingのJSONファイルを開くことができます。

設定内容を追加します。

    "al.enableCodeAnalysis": true,
    "al.codeAnalyzers": ["${PerTenantExtensionCop}","${CodeCop}","${UICop}"]

利用できるコード アナライザーは四種類あり、(”${PerTenantExtensionCop}”,”${CodeCop}”,”${UICop}”,”${AppSourceCop}”) 。複数のコード アナライザーを同時にも設定できます。設定が保存されると、前問題なくコンパイルされたプログラムは、コード アナライザーの種類による新しい警告またはエラーが出るはずです。 少し時間をかけて修正することをお勧めします。

下記の説明はMicrosoftのドキュメントからのものであり、ハイパーリンクをクリックして各コード アナライザーの詳細を表示できます。

A code analyzer is a library that builds on the compiler’s functionality to offer enhanced analysis of the syntax and semantics of your code at build time. The AL Language extension for Visual Studio Code contains four analyzers:

  • CodeCop is an analyzer that enforces the official AL Coding Guidelines. For more information about the CodeCop rules, see CodeCop Analyzer Rules.

Example:

  • PerTenantExtensionCop is an analyzer that enforces rules that must be respected by extensions meant to be installed for individual tenants. For more information about the PerTenantExtensionCop rules, see PerTenantExtensionCop Analyzer Rules.

Example:

  • AppSourceCop is an analyzer that enforces rules that must be respected by extensions meant to be published to Microsoft AppSource. For more information about the AppSourceCop rules, see AppSourceCop Analyzer Rules.

Example:

  • UICop is an analyzer that enforces rules that must be respected by extensions meant to customize the Web Client. For more information about the UserInterfaceCop rules, seeUICop Analyzer Rules.

Example:

追記:Per Tenant ExtensionとAppSource Extensionの区別については前のブログをご参考になれば幸いです。
Dynamics 365 Business Central PTEとAppSource Extensionについて

CodeCop Analyzerルールを除外する方法

Microsoftは多くのアナライザールールを提供しています。Ruleset ファイルを設定して、ルールを無視にしたり、警告をエラーに変更したりできます。

RulesetのDocsについは下記をご参考ください。
Ruleset for the Code Analysis Tool

まず変更したいルールのIDを確定します。
Visual Studio Codeから確定

又はMSのDOCSから確定
CodeCop Analyzer Rules
PerTenantExtensionCop Analyzer Rules
AppSourceCop Analyzer Rules
UICop Analyzer Rules

Ruleset ファイルを新規作成します。
このファイルは、プロジェクトのルートディレクトリまたはフォルダーに直接作成できます。
例:「yzhums.ruleset.json」を作成し、「.codeAnalysis」フォルダーに配置しました。

変更したいルールの明細を入力して、カスタマイズします。
下記の設定によると、ルール”AA0137”はWarningからErrorに変更、ルール”AA0021”はWarningからNoneに変更されました。
Rulesetのカスタマイズが終わったら、ファイルを保存します。

{
    "name": "YZHUMS Ruleset",
    "description": "The Ruleset file for manual",
    "rules": [
            {   
                "id": "AA0137",
                "action": "Error",
                "justification": "I want to report it as an error."
            },
            {   
                "id": "AA0021",
                "action": "None",
                "justification": "I don't want to check this rule."
            }
    ]
}

最後に「settings.json」ファイルに戻して、Ruleset ファイルのパスを指定します。

"al.ruleSetPath": "./.codeAnalysis/zy.ruleset.json"

settings.jsonを保存すると、ルールが自動的に有効になります。
この前の結果とは異なることが確認できます。

Business Centralのコード分析機能を使うことで、ある程度のコードの不備は検出することができることが分かったと思います。
ついてにお勧めの設定なら下記をご参考になれば幸いです。
PTE: “al.codeAnalyzers”: [“${CodeCop}”,”${PerTenantExtensionCop}”,”${UICop}”]
AppSource Extension: “al.codeAnalyzers”: [“${CodeCop}”,”${AppSourceCop}”,”${UICop}”]

どれもうまく使えばコードの品質を向上するのに役立つ機能です。ぜひ活用してみてください。


以上

コメント

Copied title and URL