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をブラウザで開くと以下のような画面が表示されます。
下部の青いViewReportボタンをクリックすると以下のような画面が表示され,ファイル構成などがわかります。
上部のFeaturesをクリックすると以下のように検出された項目がカテゴリごとに表示されます。
がめんがきれいでいいとおもいます(小並感