大根's ITブログ

ITとか開発ツールとかビジネスとか色々

askalonoを使う

というわけでやっていきます。

https://github.com/jpeddicord/askalono

Rustのパッケージがあるようなので、入れていきます。 Rustが入ってない場合はインストールします。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
cargo install askalono-cli

なんかワケわからんエラーが出たな。

error: linker `cc` not found
  |
  = note: No such file or directory (os error 2)

error: aborting due to previous error

error: could not compile `libc`

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: linker `cc` not found
  |
  = note: No such file or directory (os error 2)

error: aborting due to previous error

error: failed to compile `askalono-cli v0.4.3`, intermediate artifacts can be found at `/tmp/cargo-install0FR8B7`

なにこれ。 gccが必要との噂。 https://qiita.com/ismt7/items/a6b17b01b56f098b2dd5

いうことで、

yum install gcc -y

はい。成功しました。

$ askalono -V
askalono 0.4.3

ではidしてみましょうか。git clone してきたgsonちゃんのLICENSEファイルをidしてみます。

$ askalono id LICENSE 
License: Apache-2.0 (original text)
Score: 0.999

おおお。良いですね。 ではクロールしてみましょう。

$ askalono crawl .
./LICENSE
License: Apache-2.0 (original text)
Score: 0.999
./gson/LICENSE
License: Apache-2.0 (original text)
Score: 0.999

jsonでも出せますよと。

$ askalono --format json crawl .
{"path":"./LICENSE","result":{"score":0.9993655,"license":{"name":"Apache-2.0","kind":"original","aliases":[]},"containing":[]}}
{"path":"./gson/LICENSE","result":{"score":0.9987318,"license":{"name":"Apache-2.0","kind":"original","aliases":[]},"containing":[]}}

気持ち良い。 READMEを見た感じ、optimizeフラグをつけるとファイルヘッダのライセンスとかも検知できる的なこと書かれてるのでやってみた。

Gson.java

/*
 * Copyright (C) 2008 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.gson;

import java.io.EOFException;
import java.io.IOException;
import java.io.Reader;
(以下、省略)

これが検知できるかどうか。

$ askalono id Gson.java 
Error: Confidence threshold not high enough for any known license
$ askalono id --optimize Gson.java 
Error: Confidence threshold not high enough for any known license

できないじゃん。まぁいいか。

ライセンスのデータはSPDXらしい。READMEには以下が記載あり。

Where do the licenses come from?

License data is sourced directly from SPDX: https://github.com/spdx/license-list-data