name: Static Analysis on: pull_request: {} push: branches: [develop, master] merge_group: types: [checks_requested] repository_dispatch: types: [element-web-notify] concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} cancel-in-progress: true env: # These must be set for fetchdep.sh to get the right branch REPOSITORY: ${{ github.repository }} PR_NUMBER: ${{ github.event.pull_request.number }} permissions: {} # No permissions required jobs: ts_lint: name: "Typescript Syntax Check" runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: cache: "yarn" node-version: "lts/*" - name: Install Dependencies run: "./scripts/layered.sh" - name: Typecheck run: "yarn run lint:types" i18n_lint: name: "i18n Check" uses: matrix-org/matrix-web-i18n/.github/workflows/i18n_check.yml@main permissions: pull-requests: read with: hardcoded-words: "Element" allowed-hardcoded-keys: | console_dev_note labs|element_call_video_rooms labs|feature_disable_call_per_sender_encryption voip|element_call error|invalid_json error|misconfigured welcome_to_element rethemendex_lint: name: "Rethemendex Check" runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - run: ./res/css/rethemendex.sh - run: git diff --exit-code js_lint: name: "ESLint" runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: cache: "yarn" node-version: "lts/*" # Does not need branch matching as only analyses this layer - name: Install Deps run: "yarn install --frozen-lockfile" - name: Run Linter run: "yarn run lint:js" style_lint: name: "Style Lint" runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: cache: "yarn" node-version: "lts/*" # Does not need branch matching as only analyses this layer - name: Install Deps run: "yarn install" - name: Run Linter run: "yarn run lint:style" workflow_lint: name: "Workflow Lint" runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: cache: "yarn" node-version: "lts/*" # Does not need branch matching as only analyses this layer - name: Install Deps run: "yarn install --frozen-lockfile" - name: Run Linter run: "yarn lint:workflows" analyse_dead_code: name: "Analyse Dead Code" runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: cache: "yarn" node-version: "lts/*" - name: Install Deps run: "yarn install --frozen-lockfile" - name: Run linter run: "yarn run lint:knip" - name: Install Deps run: "scripts/layered.sh" - name: Dead Code Analysis run: "yarn run analyse:unused-exports"