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