メモリ使用量について

Sider Scan は、リポジトリ全体のソースコードから重複コードを検出し、重複コードに起因するバグや問題あるコードを検出・通知するソフトウェアです。Sider Scan では、継続的にメモリ使用量の削減や処理の高速化を行っていますが、解析時に使用するメモリ量は、入力されるソースコードのファイルサイズや重複コードの量に依存します。極端に大きいデータが入力された場合、解析が終わらなくなってしまう可能性があるため、現在のバージョンでは、Sider Scan のDocker Image の実行に割り当てられている実効メモリサイズを3GB程度と想定し、入力されるソースコードのファイルサイズの総数を300MB に制限しています。

ここで、「入力されるソースコードのファイルサイズ」は、Git やSVNのリポジトリのサイズとは異なることに注意して下さい。リポジトリのサイズは、過去のバージョンの履歴情報などが入っているため、ソースコードのデータサイズより大きくなります。参考までに、比較的大規模なオープンソースプロジェクトのソースコード総数は、Spring Framework で136MB、Neo4j で88MB程度です。

もし解析対象となるリポジトリに300MB 以上のソースコードが存在する場合、解析するファイルをファイルパス名のアルファベット順でソートした後、解析対象の上限である300MB に達するまでアルファベット順(厳密なソート順は、Sider Scan が動作しているOS によって異なります) で解析を行っていきます。入力されるソースコードの総サイズ数が300MB になった時点で処理を打ち切りますが、それまでに解析されたファイルに関しては、解析レポートが通知されます。ただし、解析されたコードに特に問題がなければ、通知は行われません。

入力されるソースコードの総ファイルサイズの上限値(デフォルト 300MB)は、 ユーザー側で変更可能です。具体的には、設定ファイルの .siderscan.json に、入力ファイルサイズの上限を記載します。こちらの資料を参照下さい。これにより、十分な物理メモリを持ったCI/CDサーバーをお持ちのユーザーは、より大規模なリポジトリを処理することが可能になります。