.NET Analyzer - 1.6

Extension ID

com.castsoftware.dotnet

What’s new?

See Release Notes.

Description

This extension provides support for analyzing applications built with .NET, .NET Standard and .NET Core technologies: objects and links between these objects are identified and Automated Function Point values are calculated. A set of .NET specific structural rules are also available with the extension.

Technology support

Please also see .NET - Technical notes and limitations for additional information.

Visual Studio / .NET Framework support

Visual Studio version .NET Framework version .NET Core / .NET .NET Standard C# version VB.NET version Supported
2003 1.1 - - 1.2 7.1
2005 2.0, 3.0 - - 2.0 8.0
2008 2.0, 3.0, 3.5 - - 3.0 9.0
2010 2.0, 3.0, 3.5, 4.0 - - 4.0 10.0
2012/2013 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2 - - 5.0 12.0
2015 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6 - - 6.0 14.0
2017 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 1.0, 1.1, 2.0, 2.1, 2.2, 3.0, 3.1 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1 7.2 15.5
2019 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 1.0, 1.1, 2.0, 2.1, 2.2, 3.0, 3.1, 5.0, 6.0 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1 8.0 / 9.0 / 10.0 15.8
2022 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 1.0, 1.1, 2.0, 2.1, 2.2, 3.0, 3.1, 5.0, 6.0, 7.0, 8.0 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1 8.0 / 9.0 / 10.0 / 11.0 / 12.0 15.8

The following are implicitly supported:

  • ADO.NET
  • ASP.NET
  • ASP.NET Core
  • iFrame
  • Interop
  • WinForms
  • WPF 
  • LINQ:
    • LINQ to Objects
    • LINQ to DataSets
    • LINQ to SQL
  • First level of support for Xamarin (links to Xamarin API objects will be resolved) for:
    • Android
    • iOS
    • TvOS
    • WatchOS
    • UWP

Function Point, Quality and Sizing support

  • Function Points: A green tick indicates that OMG Function Point counting and Transaction Risk Index are supported.

  • Quality and Sizing: A green tick indicates that CAST can measure size and that a minimum set of Quality Rules exist.

Function Points
(transactions)
Quality and Sizing

Compatibility

Release Operating System Supported
v3/8.4.x Microsoft Windows / Linux :x
v2/8.3.x Microsoft Windows

Prerequisites

Required third-party software on CAST Node

.NET Framework ≥ 4.7.2 must be installed on the CAST Node server in order for the analysis to function. A check will be done when the analysis starts and a message will produced if the minimum .NET Framework cannot be found.

Note that a .NET Framework is installed via the CAST Core installer, however this may not be the required version. Please check.

Location of the source code deployment folder

It is possible (and usually recommended) to configure the source code Deployment folder on a network share, however, in the case of .NET analyses, CAST recommends that the Deployment folder is located on the same server as the CAST Node. If the Deployment folder is located on a remote network file share, there is a risk that assemblies may not be loaded correctly during the analysis, causing external objects to not be saved.

Location of extensions folder on CAST Node

If you have altered the location where extensions are stored from %PROGRAMDATA%\CAST\CAST\Extensions to a network location remote to the CAST Node (for example changing the CAST_PLUGINS_ROOT_PATH in the CastGlobalSettings.ini file) then you will need to add the following lines to the .NET Framework machine.config file (located on CAST Node). This is to ensure that the .NET Analyzer DLLs located in the remote network folder can be successfully run from a network location. The analysis will fail without this configuration.

Replace the following tag:

<runtime />

with:

<runtime>
    <loadFromRemoteSources enabled="true"/>
</runtime>

Dependent frameworks and third-party packages provided in the extension

Some dependent frameworks and third-party packages are provided in the extension itself. There is therefore no need to specifically package these items if your source code relies on them - note however, that the AIP COnsole will generate missing library/assembly alerts for these items - these alerts can safely be ignored.

Frameworks

  • .NET framework
  • .NET Core
  • .NET standard
  • Silverlight
  • Universal Windows Platform
  • Mono Android
  • Xamarin iOS
  • Xamarin TvOS
  • Xamarin WatchOS

Third-party packages

  • Microsoft.AspNetCore.All (ASP.NET)
  • Microsoft.AspNetCore.App (ASP.NET)
  • log4net
  • NHibernate
  • NPersistence
  • NLog
  • Newtonsoft.Json
  • Newtonsoft.Json.Bson
  • MySql.Data
  • Iesi.Collections
  • EntityFramework
  • Microsoft.Practices.EnterpriseLibrary.2008
  • elmah.corelibrary
  • System.Data.SqlClient
  • Serilog
  • Remotion.Linq
  • Xamarin.Android.Support.v7.AppCompat
  • Xamarin.Android.Support.v7.CardView
  • Xamarin.Android.Support.v7.MediaRouter
  • Xamarin.Android.Support.v4
  • Xamarin.Android.Support.Media.Compat
  • Xamarin.Android.Support.Fragment
  • Xamarin.Android.Support.Design
  • Xamarin.Android.Support.Core.Utils
  • Xamarin.Android.Support.Core.UI
  • Xamarin.Android.Support.Wear
  • Xamarin.Android.Wear
  • Xamarin.Forms

Dependencies with other extensions

Some extensions require the presence of other extensions in order to function correctly. The.NET Analyzer extension requires that the following other extensions are also installed:

Note that when using CAST Console to install the extension, any dependent extensions are automatically downloaded and installed for you. You do not need to do anything.

Download and installation instructions

For .NET applications, the extension will be automatically installed by CAST Console:

What results can you expect?

Objects

Icon Name Parent

Project

-

Application

Project

Directory

Application

C# Source File Application, Directory

VB.NET Source File Application, Directory

ASA  / Asax Source File Application, Directory

ASP Source File Application, Directory

Aspx Source File Application, Directory

Ascx Source File Application, Directory

Asmx Source File Application, Directory

Configuration Source File Application, Directory

Data Set Source File Application, Directory

Htc / Htm / Html Source File

Application, Directory

Java Script Source File Application, Directory

Master Source File Application, Directory

Settings Source File Application, Directory

Skin Source File Application, Directory

Xaml Source File Application, Directory

Visual Basic Script File Application, Directory

Class

Namespace, Interface, Class, Generic Class

Constant (field)

Class, Generic Class

Delegate

Class, Generic Class

Enumeration

Class, Generic Class

Enumeration Item

Enumeration

Event

Class, Generic Class

Event Add On

Event

Event Remove On

Event

Interface

Namespace, Interface, Class, Generic Class

Field (non constant)

Interface, Class, Generic Class

-

Finalizer

Class, Generic Class

Generic Class

Namespace, Interface, Class, Generic Class

Generic Method

Generic Class

Generic Property

Generic Class

Indexer

Method, Generic Method

Indexer Getter

Interface, Class, Generic Class

Indexer Setter

Interface, Class, Generic Class

Method

Interface, Class, Generic Class

Module (VB.NET only) -

Namespace

Application, Namespace

Operator

Interface, Class, Generic Class

Property

Interface, Class, Generic Class

Property Getter

Interface, Class, Generic Class

Property Setter

Interface, Class, Generic Class

Structure

Interface, Class, Generic Class, Method, Generic Method

Windows Forms Class

Windows Forms User Control

Class

Structural rules

Release URL
1.6.0-funcrel https://technologies.castsoftware.com/rules?sec=srs_dotnet&ref=||1.6.0-funcrelexternal link

See also the following rules provided in the default CAST Assessment Model shipped with CAST AIP Core:

Technology URL
C# https://technologies.castsoftware.com/rules?sec=t_138383&ref=||external link
VB.NET https://technologies.castsoftware.com/rules?sec=t_138635&ref=||external link
ASP.NET https://technologies.castsoftware.com/rules?sec=t_138636&ref=||external link

The following extensions also provide .NET specific rules: