Files
2026-04-17 14:55:32 -04:00

6.2 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
DTS Viewer/DTS.Viewer.Modules/DTS.Viewer.Graph/Properties/AssemblyInfo.cs
DTS Viewer/DTS.Viewer.Modules/DTS.Viewer.Graph/Properties/Annotations.cs
2026-04-16T13:52:16.308869+00:00 zai-org/GLM-5-FP8 1 530eff79443974f8

Module Documentation: DTS.Viewer.Graph Properties

1. Purpose

This module component provides assembly-level configuration and static analysis support for the DTS.Viewer.Graph assembly. AssemblyInfo.cs establishes the assembly's identity, version (1.0.0.0), and COM visibility settings. Annotations.cs defines a comprehensive suite of custom attributes (sourced from JetBrains) used to enhance code inspection, nullability analysis, and framework-specific validations (ASP.NET MVC, Razor, XAML) within the codebase, enabling deeper static analysis without requiring external dependencies.

2. Public Interface

Assembly Metadata (AssemblyInfo.cs)

These attributes configure the compiled assembly DTS.Viewer.Graph.dll.

  • AssemblyTitle: Set to "Graph".
  • AssemblyProduct: Set to "Graph".
  • AssemblyVersion: Set to "1.0.0.0".
  • AssemblyFileVersion: Set to "1.0.0.0".
  • Guid: Set to "61261c58-c32e-4dea-a87a-d7f956f28b4d".
  • ComVisible: Set to false.

Code Annotations (Annotations.cs)

The following attributes are defined in the DTS.Viewer.Graph.Annotations namespace. They are intended for use by static analysis tools (e.g., ReSharper, Rider) and the compiler.

Nullability & Contracts:

  • CanBeNullAttribute: Indicates a value might be null.
  • NotNullAttribute: Indicates a value should never be null.
  • ItemNotNullAttribute: Indicates collection items or Task.Result are not null.
  • ItemCanBeNullAttribute: Indicates collection items or Task.Result might be null.
  • ContractAnnotationAttribute: Defines method input/output contracts (e.g., null => halt).
  • PureAttribute: Marks a method as having no observable side effects.

Usage & Visibility:

  • PublicAPIAttribute: Marks a type/member as part of the public API, preventing "unused" warnings.
  • UsedImplicitlyAttribute: Indicates a symbol is used via reflection or external means.
  • MeansImplicitUseAttribute: Applied to other attributes to indicate that targets should be considered "used".
  • BaseTypeRequiredAttribute: Enforces that a type marked with a specific attribute must inherit from a specific base type.

Method Behavior:

  • StringFormatMethodAttribute: Marks a method parameter as a format string (e.g., for string.Format validation).
  • NotifyPropertyChangedInvocatorAttribute: Marks a method as raising the PropertyChanged event.
  • InstantHandleAttribute: Indicates a delegate parameter is executed during the method call.
  • MustUseReturnValueAttribute: Warns if the method's return value is ignored.
  • CollectionAccessAttribute: Describes how a method modifies a collection (Read, Modify, Update).
  • AssertionMethodAttribute / AssertionConditionAttribute: Marks methods that halt execution based on conditions (e.g., assertion methods).

Framework Specific (ASP.NET, Razor, XAML):

  • AspMvcActionAttribute, AspMvcControllerAttribute, AspMvcViewAttribute: Assist in resolving MVC references.
  • RazorSectionAttribute, RazorImportNamespaceAttribute: Assist in Razor view analysis.
  • XamlItemsControlAttribute, XamlItemBindingOfItemsControlAttribute: Assist in XAML DataContext resolution.

Miscellaneous:

  • SourceTemplateAttribute: Marks an extension method as a source template for code completion.
  • MacroAttribute: Defines macros for source template parameters.
  • NoReorderAttribute: Prevents code cleanup tools from reordering members.

3. Invariants

  • COM Visibility: The assembly is explicitly configured with ComVisible(false), ensuring types are not exposed to COM by default.
  • Version Consistency: The AssemblyVersion and AssemblyFileVersion are both strictly defined as 1.0.0.0.
  • Attribute Usage: All annotation attributes are strictly constrained by AttributeUsage attributes. For example, PureAttribute can only target Methods, while CanBeNullAttribute can target methods, parameters, properties, delegates, fields, events, classes, interfaces, and generic parameters.
  • Licensing: The Annotations.cs file is explicitly licensed under the MIT License (Copyright 2016 JetBrains), requiring the license notice to be preserved in copies.

4. Dependencies

  • System Dependencies:
    • System.Reflection
    • System.Runtime.CompilerServices
    • System.Runtime.InteropServices
    • System
  • Tooling Dependencies: The annotations in Annotations.cs are designed to be consumed by JetBrains static analysis tools (ReSharper, Rider). They have no runtime impact on the application logic itself.
  • Consumers: This module is a foundational block for the DTS.Viewer.Graph project. Other projects referencing DTS.Viewer.Graph may utilize these annotations if exposed publicly, though they are primarily for internal analysis.

5. Gotchas

  • Obsolete Assertion Attribute: The TerminatesProgramAttribute is marked [Obsolete("Use [ContractAnnotation('=> halt')] instead")]. Developers should avoid using this attribute in new code and prefer ContractAnnotationAttribute.
  • Hardcoded Version: The version 1.0.0.0 is hardcoded in AssemblyInfo.cs. If this project uses CI/CD pipelines that typically auto-increment versions or use MSBuild properties (e.g., 1.0.*), this file overrides that behavior, potentially requiring manual updates for new releases.
  • Duplicate Annotations: The Annotations.cs file is a standard "copy-paste" of JetBrains annotations. If other modules in the solution (e.g., DTS.Viewer.Core) also include this file, there may be duplicate attribute definitions if namespaces are not carefully managed or if the global namespace is used, though here they are safely scoped to DTS.Viewer.Graph.Annotations.
  • Empty Description: The AssemblyDescription attribute is an empty string, offering no metadata regarding the specific functionality of the Graph module.