Tools Included
- ldb: Linked-list database for storing Knowledge Base (KB) data
- minr: Mining tool for downloading and indexing open-source software (OSS) components
- SCANOSS: Scanning engine for querying the KB
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
How to build and test a local SCANOSS Knowledge Base using Docker, covering file matching and snippet matching.
docker build -t scanoss-stack .
# sleep infinity keeps the container running so subsequent commands can be executed against it
docker run -d --name scanoss scanoss-stack sleep infinity
# Download and index an OSS component into the mined/ directory
docker exec scanoss minr -d scanoss,webhook,1.0,20200320,BSD-3-Clause,pkg:github/scanoss/webhook \
-u https://github.com/scanoss/webhook/archive/1.0.tar.gz
# Extract snippet fingerprints from the mined/ directory
docker exec scanoss minr -z mined
# Create the version file required by the minr import step
docker exec scanoss bash -c "echo '{\"monthly\":\"25.01\", \"daily\":\"25.01.12\"}' > mined/version.json"
# Import the mined data into the KB
docker exec scanoss minr -i mined/
docker exec scanoss curl -sL https://github.com/scanoss/webhook/archive/1.0.tar.gz -o /tmp/test.tar.gz
docker exec scanoss tar -xzf /tmp/test.tar.gz -C /tmp
docker exec scanoss scanoss /tmp/webhook-1.0/scanoss/github.py | jq
{
"github.py": [{
"id": "file",
"matched": "100%",
"purl": ["pkg:github/scanoss/webhook"],
...
}]
}
docker exec scanoss bash -c "echo '# modified by user' >> /tmp/webhook-1.0/scanoss/github.py"
docker exec scanoss scanoss /tmp/webhook-1.0/scanoss/github.py | jq
{
"github.py": [{
"id": "snippet",
"matched": "97%",
"lines": "1-192",
"oss_lines": "3-194",
"purl": ["pkg:github/scanoss/webhook"],
...
}]
}
docker stop scanoss && docker rm scanoss
# Build and start
docker build -t scanoss-stack .
docker run -d --name scanoss scanoss-stack sleep infinity
# Create Knowledge Base
docker exec scanoss minr -d scanoss,webhook,1.0,20200320,BSD-3-Clause,pkg:github/scanoss/webhook \
-u https://github.com/scanoss/webhook/archive/1.0.tar.gz
docker exec scanoss minr -z mined
docker exec scanoss bash -c "echo '{\"monthly\":\"25.01\", \"daily\":\"25.01.12\"}' > mined/version.json"
docker exec scanoss minr -i mined/
# Download test files
docker exec scanoss curl -sL https://github.com/scanoss/webhook/archive/1.0.tar.gz -o /tmp/test.tar.gz
docker exec scanoss tar -xzf /tmp/test.tar.gz -C /tmp
# Test file matching (100%)
docker exec scanoss scanoss /tmp/webhook-1.0/scanoss/github.py | jq
# Modify file
docker exec scanoss bash -c "echo '# modified' >> /tmp/webhook-1.0/scanoss/github.py"
# Test snippet matching
docker exec scanoss scanoss /tmp/webhook-1.0/scanoss/github.py | jq
# Cleanup
docker stop scanoss && docker rm scanoss
# Copy a file into the container
docker cp /path/to/your/file.py scanoss:/tmp/file.py
# Scan it
docker exec scanoss scanoss /tmp/file.py
docker run -d --name scanoss -v $(pwd)/mycode:/code scanoss-stack sleep infinity
docker exec scanoss scanoss /code/myfile.py