Files
smom-dbis-138/docs/guides/AUTOMATED_LINK_CHECKING.md
defiQUG 1fb7266469 Add Oracle Aggregator and CCIP Integration
- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control.
- Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities.
- Created .gitmodules to include OpenZeppelin contracts as a submodule.
- Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment.
- Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks.
- Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring.
- Created scripts for resource import and usage validation across non-US regions.
- Added tests for CCIP error handling and integration to ensure robust functionality.
- Included various new files and directories for the orchestration portal and deployment scripts.
2025-12-12 14:57:48 -08:00

4.7 KiB

Automated Link Checking Guide

Last Updated: 2025-01-27
Status: Active

This guide explains how to set up and use automated link checking for documentation.

Table of Contents

Overview

Automated link checking helps maintain documentation quality by:

  • Detecting broken internal links
  • Detecting broken external links
  • Finding orphaned files
  • Ensuring link consistency

Tools

  1. markdown-link-check - Fast markdown link checker
  2. lychee - Fast link checker with caching
  3. linkchecker - Comprehensive link checker
  4. markdownlint - Markdown linter with link checking

Tool Comparison

Tool Speed Features CI/CD Support
markdown-link-check Fast Basic Yes
lychee Very Fast Advanced Yes
linkchecker Slow Comprehensive ⚠️ Limited
markdownlint Fast Linting + Links Yes

Setup

Installation:

npm install -g markdown-link-check

Usage:

# Check single file
markdown-link-check docs/README.md

# Check all markdown files
find docs -name "*.md" -exec markdown-link-check {} \;

Option 2: lychee (Fast Alternative)

Installation:

# Using cargo
cargo install lychee

# Or using homebrew
brew install lychee

Usage:

# Check all links
lychee docs/

# Check with caching
lychee --cache docs/

Installation:

npm install -g markdownlint-cli
npm install -g markdownlint-cli2

Usage:

# Lint and check links
markdownlint docs/**/*.md

Usage

# Check all documentation
markdown-link-check docs/**/*.md

# Check specific directory
markdown-link-check docs/guides/*.md

Advanced Options

# Ignore external links
markdown-link-check --quiet docs/README.md

# Include external links
markdown-link-check docs/README.md

# Verbose output
markdown-link-check --verbose docs/README.md

Script for All Files

Create scripts/automation/check-doc-links.sh:

#!/bin/bash
# Check all documentation links

set -e

echo "Checking documentation links..."

# Find all markdown files
find docs -name "*.md" -type f | while read file; do
    echo "Checking $file..."
    markdown-link-check "$file" || true
done

echo "Link check complete"

CI/CD Integration

GitHub Actions

name: Check Documentation Links

on:
  push:
    paths:
      - 'docs/**'
  pull_request:
    paths:
      - 'docs/**'

jobs:
  check-links:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Install markdown-link-check
        run: npm install -g markdown-link-check
      
      - name: Check links
        run: |
          find docs -name "*.md" -type f | while read file; do
            markdown-link-check "$file" || true
          done

Pre-commit Hook

Create .git/hooks/pre-commit:

#!/bin/bash
# Pre-commit hook to check documentation links

# Check only staged markdown files
git diff --cached --name-only --diff-filter=ACM | grep '\.md$' | while read file; do
    if [ -f "$file" ]; then
        echo "Checking links in $file..."
        markdown-link-check "$file" || exit 1
    fi
done

Best Practices

1. Regular Checks

  • Run link checks before commits
  • Run in CI/CD pipeline
  • Schedule periodic checks
  • Fix broken links immediately
  • Update outdated links
  • Remove dead links
  • Prefer relative links for internal docs
  • Use absolute paths only when necessary
  • Test links after moving files
  • Check external links periodically
  • Update or remove broken external links
  • Document external link dependencies

5. Handle False Positives

  • Some links may be false positives
  • Document exceptions
  • Use ignore patterns when appropriate

Ignore Patterns

Create .markdown-link-check.json:

{
  "ignorePatterns": [
    {
      "pattern": "^http://localhost"
    },
    {
      "pattern": "^https://example.com"
    }
  ]
}

lychee

Create lychee.toml:

[output]
format = "markdown"

[exclude]
domains = ["localhost", "example.com"]

Last Updated: 2025-01-27