Code Monkey home page Code Monkey logo

aws / porting-assistant-dotnet-datastore Goto Github PK

View Code? Open in Web Editor NEW
59.0 23.0 15.0 8.25 MB

The 'Porting Assistant for .NET' is a standalone compatibility analyzer that helps customers to port their .NET Framework (“.NET”) applications to .NET Core on Linux.

Home Page: https://aws.amazon.com/porting-assistant-dotnet/

License: Apache License 2.0

C# 65.58% Dockerfile 2.42% Python 28.11% Shell 0.28% Visual Basic .NET 3.61%
aws csharp csharp-core porting

porting-assistant-dotnet-datastore's Introduction

Porting Assistant for .NET

Porting Assistant for .NET is an analysis tool that scans .NET Framework applications and generates a .NET Core compatibility assessment, helping customers port their applications to Linux faster.

Porting Assistant for .NET quickly scans .NET Framework applications to identify incompatibilities with .NET Core, finds known replacements, and generates detailed compatibility assessment reports. This reduces the manual effort involved in modernizing the applications to Linux.

Porting Assistant Dotnet DataStore

This repository contains the location of data store in S3. The data store contains data files that show package and API compatibility with .NET Core and .NET Standard.

  • Porting assistant uses these data files for finding the compatibility of packages and their APIs.
  • For each NuGet package in nuget.org, a separate Json file is defined. Each file captures compatibility information of all its packaged versions.
  • It shows compatibility information for all the NuGet packages available in nuget.org - 211k unique packages, 2.5 millions packaged versions (The numbers could change over time).

Format of the data file (Json format)

Package Details

Attribute Name Description
Name Name of the package.
Example: "Name": "AWSSDK.EC2"
Format Version of the Json document.
Example: "Format": "1.0"
Versions List of packaged versions of this package.
Example: "Versions": [ "4.0","4.4"]
Targets Targets: Compatible targets based on packaged versions.
Example: { "netcoreapp3.1" => [ "4.0", "4.1"] }, { "netcoreapp5.0 => ["4.0"] }.
"netcoreapp3.1" is supported for package versions - 4.0 and 4.1.
API details List of APIs. Refer API Details.
License details License details. Refer License Details

API Details

Attribute Name Description
Name Name of the Api.
Example: "Name": ".ctor"
Signature Signature of the Api.
Example: "Signature": "AutoMapper.AutoMapperConfigurationException.AutoMapperConfigurationException(string)"
Namespace Namespace.
Example: "NameSpace": "AutoMapper"
ClassName Class name.
Example: "ClassName": "AutoMapper.AutoMapperConfigurationException"
Parameters Parameters.
Example: "Parameters": [ "string" ]
ReturnType Return type.
Example: "ReturnType": "Void"
Targets Targets: Compatible targets based on packaged versions.
Example: { "netcoreapp3.1" => [ "4.0", "4.1"] }, { "netcoreapp5.0 => ["4.0"] }.
"netcoreapp3.1" is supported for package versions - 4.0 and 4.1.

License Details

Attribute Name Description
License License type.
Example: "License": { "MIT": [ "4.0.0" ], "Apache": [ "4.4.0" ] }
Title Title of the package.
Example: "Title": { "This package is used to analyse C# code": [ "4.0.0", "4.4.0" ] }
Url Url of the license.
Example: "Url": { "https://licenses.nuget.org/MIT": [ "4.0.0", "4.4.0" ] }
Description Description of the package.
Example: `"Details": { "This package is used to analyse C# code": [ "4.0.0", "4.4.0" ] }

Contributing

Security

Thank you

  • Portability Analyzer - Portability Analyzer analyzes assembly files to access API compatibility with various versions of .NET. Porting Assistant for .NET makes use of recommendations and data provided by Portability Analyzer.
  • THIRD-PARTY - This project would not be possible without additional dependencies listed in THIRD-PARTY.

License

This project is licensed under the Apache-2.0 License.

porting-assistant-dotnet-datastore's People

Contributors

amazon-auto avatar aniruddhadave avatar beau-gosse-dev avatar comsemer avatar cslong avatar eruanion avatar flywanli avatar huawenm avatar jonlouie avatar kanikaul-amazon avatar marknfawaz avatar mingxue008 avatar mrkdeng avatar mrlloyd-amzn avatar nshiramshetti avatar ppittle avatar saikiranakula-amzn avatar smhmhmd avatar xueningl-az 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

porting-assistant-dotnet-datastore's Issues

Add Antlr porting rules

When porting, add the Antlr3.Runtime package when any of the following namespaces are used:

  • Antlr.Runtime
  • Antlr.Runtime.Misc
  • Antlr.Runtime.Tree

Migrate server settings to kestrel

Port the solution, migrate IIS web server settings to ,net core middleware

Config attributes include:
HttpModules, HttpHandlers, HttpsRedirection and added forwarded header kestrel

Analysis of almost all Nuget packages fails

When running an assessment I don't get any compatibility score and almost all of my Nuget dependencies are marked with a status of "Failed" (not "Incompatible").

I have pre-built the solution successfully and I don't get any build issues with the tool. Some of the nuget packages are from a private repo but the majority are public and have newer, compatible versions (for instance CSVHelper and FakeItEasy).

In my assessment log I have a number of errors similar to the following:

[2020-08-25 10:49:15 INF] EncoreCache.ExternalPackagesCompatibilityChecker: Downloading fakeiteasy.json.gz from aws.portingassistant.dotnet.datastore
[2020-08-25 10:49:16 ERR] EncoreCache.ExternalPackagesCompatibilityChecker: Failed when download and parsing fakeiteasy.json.gz from aws.portingassistant.dotnet.datastore, Amazon.S3.AmazonS3Exception: Access Denied
 ---> Amazon.Runtime.Internal.HttpErrorResponseException: Exception of type 'Amazon.Runtime.Internal.HttpErrorResponseException' was thrown.
   at Amazon.Runtime.HttpWebRequestMessage.GetResponseAsync(CancellationToken cancellationToken)
....
[2020-08-25 10:49:33 INF] EncoreCache.ExternalPackagesCompatibilityChecker: Downloading system.json.gz from aws.portingassistant.dotnet.datastore
[2020-08-25 10:49:33 ERR] EncoreCache.ExternalPackagesCompatibilityChecker: Failed when download and parsing system.json.gz from aws.portingassistant.dotnet.datastore, Amazon.S3.AmazonS3Exception: Access Denied
 ---> Amazon.Runtime.Internal.HttpErrorResponseException: Exception of type 'Amazon.Runtime.Internal.HttpErrorResponseException' was thrown.
   at Amazon.Runtime.HttpWebRequestMessage.GetResponseAsync(CancellationToken cancellationToken)

The first line of the stack trace for these errors is EncoreCache.ExternalPackagesCompatibilityChecker.ProcessCompatibility(List'1 packageVersions, Dictionary'2 resultsDict)

Additionally I have no results in the API calls tab either.

Build fails for some projects in solution

The build fails for most of the projects in the solution I am trying to analyze. The build works fine when running in Visual Studio so I can't determine why the build is failing in the porting assistant tool.

Is there a log file of the build that I can look at to see why it is failing?

nunit 3.12 deprecated?

Could you point me how to trace why porting assistant says that Nunit 3.12 is deprecated? It is latest version available and it supports .NET Core.

Add resources.zip to source control

Problem

  • CTA pulls down resources.zip from S3 which contains templates and config files. These files are not version controlled.

Solution

  • Add files to source control in their own directory
  • Update workflow to automatically zip the files to resources.zip and upload to s3 bucket under ctafiles directory

Add spaces in validations in actions

We need to make the action validations more readable by adding spaces where appropriate. The validation process already trims the spaces in the action validations.

Rule matches 2 Start method from different namespaces

Currently Microsoft.Owin.Hosting.WebApp.Start and System.Diagnostics.Process.Start both match against an invocation expression rule for only the former.

The rule should only match against the first method from the Owin namespace.

Add rules to port Ionic.Zip

Add the DotNetZip package when any of the following namespaces are found:

  • Ionic
  • Ionic.BZip2
  • Ionic.Crc
  • Ionic.Zip
  • Ionic.Zlib

No results in assessment list

Hi!

I tried to use this application, however when I choose a solution to assess it seems it starts doing something because I see some processes start and they are using the computers resources.

However, the list of assessed solutions stays empty. If I try to assess the same solution again the application says the solution is already added.

I have tried multiple solutions with the same result, sometimes I get a notification about not all nuget packages can be assessed but the list stays empty.

Fails to build some projects in solution

Some projects in the soloution I'm trying trying to analyze fail to build, and I get a notification "Failed to build 14 projects in x.sln" (in total the solution has 64 projects). The solution builds fine in Visual studio (and on our build servers etc, using MSBuild). The projects that fail seem to be the ones that have dependencies on nuget packages in our own feed (not on nuget.org)

How do I configure the available nuget feeds for the porting assistant?

I have tried to add our feed to the solution level .nuget/nuget.config file but that doesn't make any difference. In VS the feeds are configured in the package manager settings so it has no problem locating the feed when building/restoring. Building in VS first to get all packages restored does not help, I get the same error in the porting assistant even though everything is already restored.

All the projects that are failing are using the project SDK format with PackageReference elements.

Owin rules

We need to implement rules to cover google authentication.

CoreWCF Rules

Add Rules to Support Migration of System.ServiceModel and related Namespaces to CoreWCF counterpart

Owin new replace method modifiers action

We need a new rule to remove the override modifier from Invoke method declaration inside of classes implementing the OwinMiddleware base class.

Add a new owin rule to remove the override modifier form owinMiddleware base class type of classes.

Add new checks for comments type actions

Currently we check all comments and other actions the same way, we should add some granularity to reduce the amount of errors happening during validation due to comments impact.

Owin

Add removal of old namespaces

Role does not have the correct IAM policies during set up

Hi,

I'm trying to use this application but am getting stuck when selecting a named profile. I have followed the pre-requisites here and have added an inline policy to the role my profile is associated with but when clicking Next I just get the error:

PortingRole does not have the correct IAM policies. If you need help setting up your profile see Learn more above.

I have also tried creating a Role with the required permission only and then creating a Named Profile which assumes this role through the use of the source_profile and role_arn options in the credentials file. This does not work either.

Other potentially useful information:

The credentials are temporary credentials for my Federated User.
I am behind an authenticated proxy (however my AWS CLI works fine)
I have tried without the proxy and it does not work (although if the tool is a .net app and is configured to pick up the system proxy this might explain the issue)

Many thanks :)

Add new owin rules to bridge branchingpipelines gaps

Need an Owin rule to add a global variable within an owin middleware object to hold the next pipeline element.
Need an Owin rule to remove the constructor initializer within an owin middleware object.
Need an Owin rule to add an expression to initialize the next pipeline object within an owin middleware constructor.
Need an Owin rule to remove reference to the OwinMiddleware Next variable and replace it with a newly declared pipeline object.

Owin rules

Add 3 rule files for Owin. Owin, Microsoft.Owin and Microsoft.Owin.Hosting.

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.