Giter VIP home page Giter VIP logo

analyzer-lsp's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

analyzer-lsp's Issues

Decide on templating language and/or implementation

Today we do not have a defined approach to how to pass templated context values into condition information fields.

Right now, this is the responsibility of the provider, but when moving to external providers, I believe that this needs to become the responsibility of the engine.

I think that for now, we can test out the functionality we do have and this will have to be part of the external provider work.

Consider adding a category field for violations

There is value in classifying violations based on factors such as severity, urgency etc. In windup, there is a separate field category to define those characteristics about a violation. We should consider having something similar in analyzers.

Add comments to non-intuitive rules

Until we decide on the final schema for the rules and generate docs, would it be possible to add a comment about the rule if its not so intuitive. Thanks in advance :)

Windup integration

LSP analyzers must support windup rules. The goal is to support 80% of existing windup rules. In the first phase, windup rules can be converted to analyzers manually. In the next phase, a windup shim will facilitate running windup rules with analyzers.

Prototype integrating into Konveyor

This is to track work on the first iteration of integration work for Analyzers <-> Konveyor. Mainly things I am looking at is passing stuff coming from the Hub as an input to analyzers and pushing back results as a JSON back into the Hub.

Reporting errors on partial matches

We need to report errors occurred when creation of violations when a rule partially matches or otherwise. Windup has an Optional category for violations that address this.

POC Windup rules

Let's start thinking about how we want to get windup rules in analyzers

Track source as fileuri when reporting dependencies

Currently we don't point to where the dependencies are coming from, which could be a useful piece of information. We should track and report that. We should also change the Location field in the dependency.Dep to match Location in the rest of the code base (ie it should point somewhere in the codebase) and find a different term to report what it currently gathers for java (or add it to an extras field for arbitrary metadata)

Inter-rule pipelining

We addressed inter-condition pipelining in Demo A. This issue captures the need for pipelining within rules.

Update README

We need to get README to a point where a user / contributor can run an analyzer independently by following instructions.

Support yaml rules

Currently rules can only be written in json but yaml is a superset of json that is more fun to write and read so we should support that too

Adding Tracing in engine and providers

One of the concerns could be the performance of a given provider. We will want the ability to quickly diagnose if the time taken is in the engine or a given provider.

We will also want to see the traces from our providers to see if anything is taking longer than it should.

Return schemas for Extras for a Violation and Incident

We have ability to return schemas for template context info created by providers. We need something similar for Violations that captures extra information put in there so that end users can parse the extras correctly

CLI Options

Add support for following CLI options:

Option Description Tracking Issue
--rules Input one or more Rulesets / Rules Completed #128
--output-file Output file location Completed
--label-selector Label selector logic to include/exclude #130
--no-dep Skip dependency analysis #135
--exlude-deps Don't analyze dependencies #136
--limit-incidents Limt the number of incidents per rule #153
--limit-cond-snip Limt the number of incidents per rule that have code snippet found #154

Consolidating Categories

Current State

Today there are 4 Categories in the windup project.

  1. Potential
  2. Mandatory
  3. Information
  4. optional

The potential is supposed to mean that the Rule ran successfully, and there may or may not be an issue. We can't tell.

Mandatory is that the Rule ran correctly and the Rule states this must be fixed

Information is that the Rule ran correctly, and the Rule states that this is just for information, which could mean there is a problem in the future but not something you must fix.

Optional is that a rule ran unsuccessfully, and it might have a violation and may not.

Proposed State

Consolidating these and making it easier for both end users to understand what the category is supposed to mean and what a rule writer should set is the goal of this issue.

For the Rule's categories, I am proposing two mutually exclusive buckets.

  1. Mandatory will be when the Rule states that this must be fixed based on the ruleset. This will only be set for rules that have run successfully
  2. Potential will be when the Rule states this is potentially an issue. This will only be set for rules that have run successfully

We need to create a new bucket for partial matches/errors. I would prefer to call this something like Errors, which will be different than the violations that use the categories above. In this world, we would have two new error categories:

  1. Partial Match -> This Rule ran semi-successfully, and some conditions matched, but there were failures in others. This should include the error message and other stuff
  2. Failure -> this Rule did not run successfully in any way.

We also need a third bucket of rules for rules that ran successfully but did not have any violations. I believe this should just be something like PassedRules or something.

We should discuss the names here so that once we implement it, we can point back to this.

Adding in folks that this will probably have an impact on:
@rromannissen @jortel @ibolton336 @pranavgaikwad @fabianvf

Rules v1beta1

Publish first version of rule format with documentation.

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.