0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL で Infer を使う

Last updated at Posted at 2025-07-08

Infer は、Meta(旧Facebook)が開発した プログラムの静的解析ツール です。
ソースコードを実行することなく、潜在的なバグやメモリリーク、ヌルポインタ参照などを検出することができます。
JavaやC/C++/Objective-Cのコードを解析できます。

Infer は、Windows環境をサポートしておらず Linux環境で動作します。
WSL上のUbuntuに Inferをインストールしてみました。

✅ ステップ 1:WSL Ubuntu のセットアップ

WSL Ubuntu、開発ツールをインストールしている場合は、次のステップに行ってください。
以下の手順でセットアップできます。

WSL 2 を使っているか確認

PowerShell(管理者権限)で以下を実行し、WSLがインストール・WSL 2が有効か確認します:

> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-24.04    Running         2

インストールされていると状態が表示されます。
表示されないときはインストールします。

> wsl --install

Ubuntu が WSL 2 として表示されていない場合は設定を行います。

> wsl --set-version Ubuntu-xx.xx *1
*1 xx.xxubuntu20.0422.04など

インストール後、Ubuntuの初回起動時にユーザー名とパスワードを設定します。

WSL 内 Ubuntu の更新と必要ツールのインストール

Ubuntu ターミナルを開き、以下を実行します。

Ubuntuが起動したら、以下でパッケージを更新

$ sudo apt update
$ sudo apt upgrade -y

必要なツールをインストールします。
これはバイナリ版だけでなく、後のソースビルドにも役立ちます。

$ sudo apt install curl xz-utils build-essential pkg-config git

✅ ステップ 2:Infer のインストール方法

Inferは以下のいずれかの方法でインストールできます。
ソースからビルドすると最新版をインストールできるメリットがありますが、簡単にインストールするためバイナリを使用しました。

参考のためソースからビルドする方法も記載しておきます。
※試していないので異なることがあります。

🔹 バイナリを使う(簡単・推奨)

最新バージョンを確認し、以下のコマンドをUbuntuで実行(VERSION=1.2.0などに置き換えてください):

$ VERSION=1.2.0
$ curl -sSL "https://github.com/facebook/infer/releases/download/v$VERSION/infer-linux-x86_64-v$VERSION.tar.xz" \
| sudo tar -C /opt -xJ && \
sudo ln -s "/opt/infer-linux-x86_64-v$VERSION/bin/infer" /usr/local/bin/infer

インストール確認

$ infer --version
Infer version v1.2.0
Copyright 2009 - present Facebook. All Rights Reserved.

🔹 方法 B:ソースからビルド(時間がかかる)

必要な依存パッケージをインストール:

$ sudo apt install opam pkg-config default-jdk cmake ninja-build gcc g++ autoconf automake

Inferをクローンしてビルド:

$ git clone https://github.com/facebook/infer.git
$ cd infer
# Java解析付き:
$ ./build-infer.sh java

C/C++/Objective‑C解析付きなら:

$ ./build-infer.sh clang

システムにインストール:

# system-wide に導入
$ sudo make install

または、PATHに追加:

# PATHに追加したい場合(/usr/local/binを使わない場合)
$ export PATH="$(pwd)/infer/bin:$PATH"

✅ ステップ 3:動作確認

サンプルのソースコードを用意します。

sample.c
// hello.c
#include <stdlib.h>

void test() {
  int *s = NULL;
  *s = 42;
}

実行します。
nullポインターの参照が検出されています。

$ infer -- clang -c sample.c
Capturing in make/cc mode...
Found 1 source file to analyze in /mnt/c/test/infer-out
2/2 [################################################################################] 100% 308ms

sample.c:6: error: Null Dereference
  `s` could be null (null value originating from line 5) and is dereferenced.
  4. void test() {
  5.   int *s = NULL;
  6.   *s = 42;
       ^
  7. }


Found 1 issue
             Issue Type(ISSUED_TYPE_ID): #
  Null Dereference(NULLPTR_DEREFERENCE): 1
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?