in src/PortingAssistant.Client.Analysis/Utils/ApiCompatiblity.cs [17:56]
public static CompatibilityResult GetCompatibilityResult(PackageDetailsWithApiIndices package, CodeEntityDetails codeEntityDetails, string target = "netcoreapp3.1", bool checkLesserPackage = false)
{
//If invocation, we will try to find it in a later package
if (codeEntityDetails.CodeEntityType == CodeEntityType.Method)
{
return GetCompatibilityResult(package, codeEntityDetails.OriginalDefinition, codeEntityDetails.Package.Version, target, checkLesserPackage);
}
//If another node type, we will not try to find it. Compatibility will be based on the package compatibility
else
{
var compatibilityResult = new CompatibilityResult
{
Compatibility = Compatibility.UNKNOWN,
CompatibleVersions = new List<string>()
};
if (package == null || !NuGetVersion.TryParse(codeEntityDetails.Package.Version, out var targetversion))
{
return compatibilityResult;
}
if (package.PackageDetails.IsDeprecated)
{
compatibilityResult.Compatibility = Compatibility.DEPRECATED;
return compatibilityResult;
}
//For other code entities, we just need to check if the package has a compatible target:
if (package.PackageDetails.Targets.ContainsKey(target))
{
compatibilityResult.Compatibility = Compatibility.COMPATIBLE;
return compatibilityResult;
} else
{
compatibilityResult.Compatibility = Compatibility.INCOMPATIBLE;
}
return compatibilityResult;
}
}