ODCのAI Mentor System (AIMS) を試してみる

2024/09にリリースされたODC向けのAI Mentor System (AIMS) の基礎的な手順を試してみる。
手順は、[Getting started in Code Quality as a developer - ODC Documentation](https://success.outsystems.com/documentation/outsystems_developer_cloud/monitoring_and_troubleshooting_apps/manage_technical_debt_in_odc/getting_started_in_code_quality_as_a_developer/)という開発者向けのものをなぞる。
1. 指摘事項をチェック
1. 問題点修正（ODC Studio）　もしくは　Statusを変更（ODC Portal）
1. 修正の場合はAIMSで再びチェックして解消されていることを確認する

# 環境情報
ODC Studio (Version 1.4.25)

# 参考
[ODC向けのAI Mentor Systemがリリースされたので現時点（2024/09/24）の情報をメモ](https://blog.house-soft.info/archives/2243) （個人ブログ）

[Manage technical debt in ODC - ODC Documentation](https://success.outsystems.com/documentation/outsystems_developer_cloud/monitoring_and_troubleshooting_apps/manage_technical_debt_in_odc/)（公式ドキュメント）

以下でパターンという言葉が出てくるが、AIMSで解析結果として挙がってくる問題点のパターンを示す。
たとえば、Security Categoryのパターンであれば、[Security findings - ODC Documentation](https://success.outsystems.com/documentation/outsystems_developer_cloud/monitoring_and_troubleshooting_apps/manage_technical_debt_in_odc/security_findings/)の下に解説ページがある。

# 事前準備
- ODC Portal上で、AIMSを有効にしておく（手順は[How ODC Code quality works > Activating AIMS on your Organization - ODC Documentation](https://success.outsystems.com/documentation/outsystems_developer_cloud/monitoring_and_troubleshooting_apps/manage_technical_debt_in_odc/how_odc_code_quality_works/#activating-aims-on-your-organization)を参照）
- ODC Studioで問題が発生するAppをPublishして12時間あける
- 割り当てられたOrganization RoleにAI Mentor Systems用の権限を持たせておく
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/bed8824f-128c-cb32-595a-ffea5decf7a4.png)

# ページを開く
ODC Portalを開き、ANALYZE > Code qualityのリンクをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/82d652a9-3ab1-5297-5565-8d13c36837c3.png)

# 担当するAppで絞り込みを行う
以下のような構成のページが開く。
①：フィルタ（特定のAppや修正者で絞り込みができる）
②：影響度で分類されたパターンのリスト
③：②で選択されたパターンが検出されたAppのリスト。Appを展開すると、App内の該当箇所リストが表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/1b56e2be-6d85-177b-1b11-a9d8806f3dcc.png)

↑のスクリーンショットでは、修正者で絞り込んでいる。
（権限を絞り込んだユーザーを用意できないので推測だが）一般的には開発するAppにのみOrganization Roleがついているので、絞り込むまでもなく自分の担当Appのみが表示されるはず。

# 指摘内容を確認
試しに1つ指摘を確認して対応してみる。
①のリンクで指摘箇所の詳細ページが開くのでここをクリック。なお、②はドキュメントにはODC Studioで該当箇所を開くと書かれているが、2024/09/28時点ではAppまでは開くが該当箇所は開かなかった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/c47c578a-338f-7259-d763-6a1207551617.png)

詳細ページ。
- Location: どのAppのどの要素に対する指摘か
- Activity: 発見からStatus変更やコメント追加の履歴
- How to Resolve: 指摘されたパターンを解消する方法を説明するポップアップを表示する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/a0018d5f-4015-64f3-b5ba-2acaf1a107ab.png)

# 対応
## 問題点を修正する
前のステップで表示したポップアップを読んで対応方法を把握する。
ざっくりいうと、Expose REST API認証をかけないと危険なのでSecurity > AuthenticationプロパティをBasicかCustomにして保護しましょう、という指摘。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/699c5681-355d-be2b-37dd-ade837f23eff.png)

わかりにくければパターンのドキュメントには修正箇所のスクリーンショットもついている： [Exposed REST services without authentication - ODC Documentation](https://success.outsystems.com/documentation/outsystems_developer_cloud/monitoring_and_troubleshooting_apps/manage_technical_debt_in_odc/security_findings/exposed_rest_services_without_authentication/)

というわけで、この指摘に対する対応としては、対象のExpose REST APIのSecurity > AuthenticationプロパティをNone以外にすれば良い。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/8707c278-d531-ca55-50ef-0b0b00d1453f.png)
変更したらPublish。次のAIMSによるチェックが行われるまで待つ。
次のチェック時間は、Code qualityページのタイトル右に表示される（下のスクリーンショットの場合は4時間後）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/c2b4cf93-f3a1-3449-c974-e6e09982fb39.png)

## Statusを変更
もう1つの対応方法として、指摘の一覧からStatusを変更する方法がある。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/c4fb70b1-cf11-eec0-6625-f0b757ca0153.png)

例えば、権限エラーも含めた、復帰不能エラーを表示する画面は認証を付けたくないという場合に、StatusをDismissにする。
Dismissは、その指摘は無視するという意味。Snoozedはしばらく対処を保留するというStatus。

# 反映を確認する
次回チェックが行われたあとで確認すると以下の通り、最初にプログラム変更で対応した指摘は消え、Status変更で対応した指摘はそのまま残っている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332987/b8c5cb52-2399-1fe2-30d3-c76b924c755c.png)

# 想定される開発者の作業フロー
1. 業務時間中にAppを開発・修正してPublish
1. 翌朝AIMSの指摘をチェックして対応を検討（このとき、検索条件としてStatus=Openを適用）
1. 修正する必要があれば、次の開発に取り掛かる前に直しておく