Skip to content

ZJU-SEC/PeerChecker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A implementation of npm arborist with PeerSpin check.

Build:
cmake -B build/release -D CMAKE_BUILD_TYPE=Release
cmake --build build/release

You should see and edit the config.hpp before building.

The default main.cpp will not get input and output.
YOU MUST RUN THE FUNCTION ON YOUR OWN DEMAND.
It's quite easy: just give input to and get output from the parse function in main.cpp
You can write your own multi-processing logic.

The inputs are: name and version of your parsing target.
The outputs are: a dep tree, a dir tree and corresponding log.

The dep tree is the same as "npm ls -a", which may like below:
{
    "mocha@10.0.0": {
        "@ungap/promise-all-settled@1.1.2": {},
        "ansi-colors@4.1.1": {},
        "browser-stdout@1.3.1": {},
        "chokidar@3.5.3": {
            "anymatch@3.1.3": {
                "normalize-path@3.0.0": "deduped",
                "picomatch@2.3.1": {}
            },
            ...,
            "normalize-path@3.0.0": {},
            "readdirp@3.6.0": {
                "picomatch@2.3.1": "deduped"
            }
        },
        ...
    }
}

The dir tree is the same as the node_modules directory created by npm, which may like below:
{
    "@ungap/promise-all-settled@1.1.2": {},
    "ansi-colors@4.1.1": {},
    "ansi-regex@5.0.1": {},
    ...,
    "debug@4.3.4": {
        "ms@2.1.2": {}
    },
    "glob@7.2.0": {
        "brace-expansion@1.1.11": {},
        "minimatch@3.1.2": {}
    },
    ...
}

The dep tree and dir tree are both in json format.

The log will be "Ok" if parsing is success.
When it's not "Ok", the parsing target has install-time error.
"Conflict" means there is dependency conflict.
"QueueLoop" or "QueueLoopReplacementDetected" means there is resolving loop problem.
"LoadLoop" means there is loading loop problem.
"NpmError" means there is nullptr problem.
"Empty", "PlaceLoop" and "UnknownError" should not appear in theory.
Note, "QueueLoop", "LoadLoop" and "PlaceLoop" means the loop exceeds the limit, while "QueueLoopReplacementDetected" means we detected the resolving loop problem.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published