tshell_blog

ソフトウェアと車輪がついた乗り物のはなし

Application InspectorをDockerで動かす

米Microsoft、ソースコード解析ツール「Application Inspector」を公開とのニュースを見つけたのでApplication InspectorをDockerで動かしてみました。
Alpineをベースにしましたがmcr.microsoft.com/dotnet/core/sdkをベースにしてもイメージのサイズは同じだったのでどちらでもよいと思います。
自分で.NET Core SDKを入れたほうが勉強にはなるかも・・・

環境

以下の環境を使用しました。

  • ubuntu 18.04 LTS
    • kernel 5.3.0-40-generic
  • Docker version 18.09.7, build 2d0083d

Dockerfileの作成

を見ながら 以下のようなDockerfileを作成します。
2つのバージョン間でdiffをとったりできるようなので,ソースをマウントするディレクトリはsrc1とsrc2の2つを作りました。結果は/outputに出力させるようにします。

# docker build --rm -t appinspector:latest .
FROM alpine

# .NET Coreのインストール
RUN apk add --no-cache libstdc++ libintl && \
    mkdir /dotnet && \
    wget https://download.visualstudio.microsoft.com/download/pr/f686a328-a7e2-403c-9107-2e8d8b54aaa9/a1ed4732a9388c5817f79564e3fbbc3a/dotnet-sdk-3.1.102-linux-musl-x64.tar.gz && \
    tar zxf dotnet-sdk-3.1.102-linux-musl-x64.tar.gz -C /dotnet && \
    rm -f dotnet-sdk-3.1.102-linux-musl-x64.tar.gz

ENV DOTNET_ROOT=/dotnet
ENV PATH=$PATH:/dotnet

# Application Inspectorのインストール
WORKDIR /appinspector
RUN apk add --no-cache git icu-libs && \
    git clone https://github.com/microsoft/ApplicationInspector.git && \
    cd ApplicationInspector && \
    dotnet publish && \
    cp -r /appinspector/ApplicationInspector/AppInspector/bin/Debug/netcoreapp3.0/publish /appinspector/publish && \
    rm -fr /appinspector/ApplicationInspector && \
    mkdir /src1 /src2 /output

Dockerfileを作成したらイメージをビルドします。

$ docker  build --rm -t appinspector:latest

使用方法

ApplicationInspectorでApplicationInspectorを解析してみます。

$ git clone https://github.com/microsoft/ApplicationInspector.git
$ cd ApplicationInspector
$ docker run --rm -it -v $(pwd):/src1 -v /home/username:/output appinspector:latest

コンテナが起動したら以下を実行します。

# dotnet publish/ApplicationInspector.dll analyze -s /src1
# cp -r publish/html /output
# cp publish/output.html /output

結果の表示

出力結果のoutput.htmlをブラウザで開くと以下のような画面が表示されます。

f:id:tshell:20200303211155p:plain

下部の青いViewReportボタンをクリックすると以下のような画面が表示され,ファイル構成などがわかります。

f:id:tshell:20200303211214p:plain

上部のFeaturesをクリックすると以下のように検出された項目がカテゴリごとに表示されます。

f:id:tshell:20200303211232p:plain

がめんがきれいでいいとおもいます(小並感