Files

207 lines
11 KiB
Markdown
Raw Permalink Normal View History

2026-04-17 14:55:32 -04:00
---
source_files:
- DTS Viewer/DTS.Viewer.Modules/DTS.Viewer.Graph/Properties/AssemblyInfo.cs
- DTS Viewer/DTS.Viewer.Modules/DTS.Viewer.Graph/Properties/Annotations.cs
generated_at: "2026-04-17T15:56:49.185438+00:00"
model: "zai-org/GLM-5-FP8"
schema_version: 1
sha256: "88f7afb7b05c4748"
---
# Documentation: DTS.Viewer.Graph Properties
## 1. Purpose
This module provides assembly metadata and JetBrains ReSharper code analysis annotations for the `DTS.Viewer.Graph` component within the DTS Viewer application. The `AssemblyInfo.cs` file defines standard .NET assembly attributes including versioning, copyright, and COM visibility settings. The `Annotations.cs` file contains a comprehensive set of custom attributes (sourced from JetBrains under MIT license) that enable enhanced static code analysis, nullability checking, and IDE assistance within the `DTS.Viewer.Graph.Annotations` namespace. These annotations have no runtime behavior but improve developer experience through compile-time hints and warnings.
## 2. Public Interface
### AssemblyInfo.cs - Assembly Attributes
| Attribute | Value |
|-----------|-------|
| `AssemblyTitle` | "Graph" |
| `AssemblyDescription` | "" (empty) |
| `AssemblyCompany` | "" (empty) |
| `AssemblyProduct` | "Graph" |
| `AssemblyCopyright` | "Copyright © 2017" |
| `ComVisible` | `false` |
| `Guid` | "61261c58-c32e-4dea-a87a-d7f956f28b4d" |
| `AssemblyVersion` | "1.0.0.0" |
| `AssemblyFileVersion` | "1.0.0.0" |
### Annotations.cs - Nullability Attributes
- **`CanBeNullAttribute`** - Indicates the marked element's value may be `null`. Applicable to methods, parameters, properties, delegates, fields, events, classes, interfaces, and generic parameters.
- **`NotNullAttribute`** - Indicates the marked element's value will never be `null`. Same applicability as `CanBeNullAttribute`.
- **`ItemNotNullAttribute`** - For `IEnumerable`, `Task`, or `Lazy` types, indicates collection items, `Task.Result`, or `Lazy.Value` are never `null`.
- **`ItemCanBeNullAttribute`** - For `IEnumerable`, `Task`, or `Lazy` types, indicates collection items, `Task.Result`, or `Lazy.Value` may be `null`.
### Annotations.cs - String Formatting Attributes
- **`StringFormatMethodAttribute(string formatParameterName)`** - Marks a method as using a format string pattern. Constructor takes the parameter name containing the format string.
- **`ValueProviderAttribute(string name)`** - Indicates a parameter accepts values from a limited set. Constructor takes the provider name.
### Annotations.cs - Property Change Notification
- **`NotifyPropertyChangedInvocatorAttribute`** - Marks methods used to notify property changes in `INotifyPropertyChanged` implementations. Optional constructor takes `parameterName` (string).
### Annotations.cs - Contract Annotations
- **`ContractAnnotationAttribute(string contract, bool forceFullStates = false)`** - Describes method input/output dependencies using Function Definition Table syntax. Properties: `Contract` (string), `ForceFullStates` (bool).
### Annotations.cs - Usage Annotations
- **`UsedImplicitlyAttribute`** - Marks symbols used implicitly (reflection, external libraries). Constructors accept `ImplicitUseKindFlags` and/or `ImplicitUseTargetFlags`.
- **`MeansImplicitUseAttribute`** - Applied to attributes to prevent marking decorated symbols as unused.
- **`PublicAPIAttribute`** - Marks publicly available API that should not be removed. Optional constructor takes `comment` (string).
### Annotations.cs - Method Behavior Attributes
- **`PureAttribute`** - Indicates a method makes no observable state changes.
- **`MustUseReturnValueAttribute`** - Indicates the return value must be used. Optional constructor takes `justification` (string).
- **`InstantHandleAttribute`** - Indicates a parameter is fully handled during method execution (delegates executed, enumerables enumerated).
- **`LinqTunnelAttribute`** - Marks pure LINQ methods with postponed enumeration.
- **`NoEnumerationAttribute`** - Indicates an `IEnumerable` parameter is not enumerated.
- **`TerminatesProgramAttribute`** - **[Obsolete]** Use `[ContractAnnotation("=> halt")]` instead.
### Annotations.cs - Assertion Attributes
- **`AssertionMethodAttribute`** - Marks a method as an assertion method.
- **`AssertionConditionAttribute(AssertionConditionType conditionType)`** - Marks the condition parameter of an assertion method.
- **`AssertionConditionType`** (enum) - Values: `IS_TRUE` (0), `IS_FALSE` (1), `IS_NULL` (2), `IS_NOT_NULL` (3).
### Annotations.cs - Collection Attributes
- **`CollectionAccessAttribute(CollectionAccessType collectionAccessType)`** - Describes how a method affects collection content.
- **`CollectionAccessType`** (flags enum) - Values: `None` (0), `Read` (1), `ModifyExistingContent` (2), `UpdatedContent` (6).
### Annotations.cs - Implicit Use Enums
- **`ImplicitUseKindFlags`** (flags enum) - Values: `Default`, `Access` (1), `Assign` (2), `InstantiatedWithFixedConstructorSignature` (4), `InstantiatedNoFixedConstructorSignature` (8).
- **`ImplicitUseTargetFlags`** (flags enum) - Values: `Default`, `Itself` (1), `Members` (2), `WithMembers` (3).
### Annotations.cs - ASP.NET MVC Attributes
- **`AspMvcActionAttribute`** - Marks MVC action parameters/methods. Optional constructor takes `anonymousProperty` (string).
- **`AspMvcAreaAttribute`** - Marks MVC area parameters.
- **`AspMvcControllerAttribute`** - Marks MVC controller parameters/methods.
- **`AspMvcMasterAttribute`** - Marks MVC Master parameters.
- **`AspMvcModelTypeAttribute`** - Marks MVC model type parameters.
- **`AspMvcPartialViewAttribute`** - Marks MVC partial view parameters/methods.
- **`AspMvcViewAttribute`** - Marks MVC view component parameters/methods.
- **`AspMvcViewComponentAttribute`** - Marks MVC view component name parameters.
- **`AspMvcViewComponentViewAttribute`** - Marks MVC view component view parameters/methods.
- **`AspMvcActionSelectorAttribute`** - Marks MVC action name parameters in attributes.
- **`AspMvcSuppressViewErrorAttribute`** - Disables MVC view inspections for a class/method.
- **`AspMvcDisplayTemplateAttribute`** - Marks MVC display template parameters.
- **`AspMvcEditorTemplateAttribute`** - Marks MVC editor template parameters.
- **`AspMvcTemplateAttribute`** - Marks MVC template parameters.
### Annotations.cs - ASP.NET MVC Location Format Attributes
- **`AspMvcAreaMasterLocationFormatAttribute(string format)`**
- **`AspMvcAreaPartialViewLocationFormatAttribute(string format)`**
- **`AspMvcAreaViewLocationFormatAttribute(string format)`**
- **`AspMvcMasterLocationFormatAttribute(string format)`**
- **`AspMvcPartialViewLocationFormatAttribute(string format)`**
- **`AspMvcViewLocationFormatAttribute(string format)`**
### Annotations.cs - ASP.NET Control Attributes
- **`AspChildControlTypeAttribute(string tagName, Type controlType)`**
- **`AspDataFieldAttribute`**
- **`AspDataFieldsAttribute`**
- **`AspMethodPropertyAttribute`**
- **`AspRequiredAttributeAttribute(string attribute)`**
- **`AspTypePropertyAttribute(bool createConstructorReferences)`**
### Annotations.cs - Razor Attributes
- **`RazorSectionAttribute`** - Marks Razor section parameters/methods.
- **`RazorImportNamespaceAttribute(string name)`** - Assembly-level, multiple allowed.
- **`RazorInjectionAttribute(string type, string fieldName)`** - Assembly-level, multiple allowed.
- **`RazorDirectiveAttribute(string directive)`** - Assembly-level, multiple allowed.
- **`RazorHelperCommonAttribute`** - Method-level.
- **`RazorLayoutAttribute`** - Property-level.
- **`RazorWriteLiteralMethodAttribute`** - Method-level.
- **`RazorWriteMethodAttribute`** - Method-level.
- **`RazorWriteMethodParameterAttribute`** - Parameter-level.
### Annotations.cs - HTML Attributes
- **`HtmlElementAttributesAttribute`** - Optional constructor takes `name` (string).
- **`HtmlAttributeValueAttribute(string name)`**
### Annotations.cs - XAML Attributes
- **`XamlItemsControlAttribute`** - Marks types with `ItemsSource` property.
- **`XamlItemBindingOfItemsControlAttribute`** - Marks `BindingBase`-derived properties.
### Annotations.cs - Other Attributes
- **`LocalizationRequiredAttribute(bool required = true)`** - Indicates localization requirements.
- **`CannotApplyEqualityOperatorAttribute`** - Disallows `==`/`!=` operators (except with `null`).
- **`BaseTypeRequiredAttribute(Type baseType)`** - Applied to attributes to require implementers to inherit/implement a type.
- **`ProvidesContextAttribute`** - Indicates a context value provider.
- **`PathReferenceAttribute`** - Marks file/folder path parameters. Optional constructor takes `basePath` (string).
- **`SourceTemplateAttribute`** - Marks extension methods as source templates.
- **`MacroAttribute`** - Specifies macros for source template parameters. Properties: `Expression` (string), `Editable` (int), `Target` (string).
- **`RegexPatternAttribute`** - Marks regex pattern parameters.
- **`NoReorderAttribute`** - Prevents member reordering in the marked type.
## 3. Invariants
- **Assembly Versioning**: Both `AssemblyVersion` and `AssemblyFileVersion` are fixed at "1.0.0.0".
- **COM Visibility**: `ComVisible` is `false`, making types invisible to COM components by default.
- **Namespace Consistency**: All annotation attributes reside in `DTS.Viewer.Graph.Annotations` namespace.
- **Attribute Usage Constraints**: Each attribute has specific `AttributeUsage` constraints defining valid targets (method, parameter, property, etc.).
- **License Requirement**: The `Annotations.cs` file is MIT licensed from JetBrains; the copyright notice must be preserved in copies.
## 4. Dependencies
### Imports (AssemblyInfo.cs)
- `System.Reflection`
- `System.Runtime.CompilerServices`
- `System.Runtime.InteropServices`
### Imports (Annotations.cs)
- `System`
### Downstream Dependencies
- **Unclear from source alone** - The annotation attributes are designed for consumption by JetBrains ReSharper and Rider IDEs. The `DTS.Viewer.Graph` assembly likely contains graph-related functionality used by other modules in the DTS Viewer application, but the actual consumers cannot be determined from these files alone.
## 5. Gotchas
- **`TerminatesProgramAttribute` is Obsolete**: This attribute is marked `[Obsolete]` with guidance to use `[ContractAnnotation("=> halt")]` instead. New code should not use it.
- **Annotations are Compile-Time Only**: All attributes in `Annotations.cs` are for static analysis only. They have no runtime behavior and will not affect execution.
- **Pragma Warnings Disabled**: The `Annotations.cs` file disables warning 1591 (missing XML documentation) and includes multiple ReSharper directive disables at the file level.
- **Empty Assembly Metadata**: Several assembly attributes (`AssemblyDescription`, `AssemblyConfiguration`, `AssemblyCompany`) are empty strings, which may indicate incomplete configuration.
- **Hardcoded Copyright Year**: The copyright is hardcoded to 2017; this may need updating for newer releases.