Coder Social home page Coder Social logo

nasa / scrub Goto Github PK

View Code? Open in Web Editor NEW
38.0 6.0 16.0 2.68 MB

SCRUB is a platform for orchestration and aggregation of static code analysis tools.

License: Apache License 2.0

Makefile 1.26% Python 90.30% Shell 8.44%
static-analysis code-review code-quality security python

scrub's Introduction

CodeQL Packaging PyPI version shields.io

SCRUB

SCRUB is an orchestration and aggregation platform for static code analysis tools.

SCRUB allows users to run multiple static code analysis tools, collect the results, and export them to external tools. The results from each analyzer are post-processed to a standard warning format that provides information about the location of the warning as well as a brief description of the warning. These warnings can then reviewed and assessed by experienced developers to determine their merit.

A full description of the origins of SCRUB, written by the original author (Gerard Holzmann), can be found here.

scrub's People

Contributors

ablack-jpl avatar justingosses avatar lewismc avatar lylebarner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

scrub's Issues

Collaborator upload fails when no warnings are included

Collaborator target integration generates an empty-ish file for warnings when none are included in the filter. The ccollab integration will error on this file, causing the upload to terminate and the review to be deleted.

Update gcc parser for duplicate output

Certain types of warnings can generate the same warning on the same line of the same file. The parser should be updated to ensure that duplicate warnings are not reported.

Add debug information for clean process

With large codebases the process of recursively cleaning previous SCRUB artifacts from the repository can take a non-trivial amount of time. Adding debugging information would be a good way to indicate progress.

Disable results distribution by deafult

Distribution of results is closely tied to operation of the legacy GUI. It should be disabled by default and only activated if the legacy GUI is being used.

Add support for pylint

Introducing Python as a supported language opens the opportunity to support pylint analysis. This is analogous to compiler analysis for compiled languages.

Improve module_helper filtering

Currently when the module_helper executes, all of the results are filtered again even if no new results have been generated for certain tools. This can take a long time for larger sets of results. The module_helper should only filter the newly generated results files.

Implement file level warning suppression

Current mechanism for individual warning suppression is to place an inline comment on the source code line where the warning occurs. This doesn't work for file level warnings that are marked as occurring on line 0.

Create flag to exit on any tool failure

Nominal operation is for SCRUB to continue running if a tool fails, but users may want to exit on first failure. There should be a flag to enabled this. (--strict, --fail-fast, etc.)

SonarQube templates need to check for analysis completion

Larger SonarQube analyses have a delay period after analysis is completed before the results may be retrieved from the server. SCRUB should check to make sure the analysis is finished before attempting to retrieve the results.

Update exit code for existing working directory

When SCRUB is using a user-defined working directory to store analysis artifacts, it will fail if the user specifies a directory that already exists. This currently generates an exit code of 1, similar to an individual tool failure. This should have a unique exit code (10) for debugging purposes.

Add performance test case

There should be a set of performance test(s) that have the intent of monitoring SCRUB runtime. This will help to ensure that new features/changes don't significantly affect runtime.

Provide additional information for missing required parameters

There are certain sets of parameters that are required for analysis to be performed. Currently the error message does indicate what parameter is missing. It would be helpful to inform the user which required parameters are missing as part of the error message.

Attempt automated builds

If no build instructions are provided, SCRUB should attempt common build instructions for the language of choice.

Add default test case

SCRUB should have a default test case that can be executed to ensure that it has been installed properly.

Run tests on a per tool basis

There should be a testing utility to allow for developers to run all tests associated with a particular tool in order to focus testing activities.

Fix regex filtering algorithm

The regex filtering functionality currently allows for filtering patterns that can cause files to appear multiple times. This can cause performance issues when uploading to an external system such as Collaborator.

Capture custom configuration options

The documentation should provide details on how users can use custom tool configurations as part of SCRUB execution (Coverity, CodeSonar, etc...)

Deprecate support for Semmle

The Semmle team has indicated that license will not be renewed beyond FY21. The Semmle tool and references should be removed from SCRUb to support this decision. Code associated with Semmle will be stored as archive if needed for future release.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.