name: Static Analysis on: pull_request: {} push: branches: [develop, master] merge_group: types: [checks_requested] repository_dispatch: types: [element-web-notify] env: # These must be set for fetchdep.sh to get the right branch REPOSITORY: ${{ github.repository }} PR_NUMBER: ${{ github.event.pull_request.number }} jobs: ts_lint: name: "Typescript Syntax Check" runs-on: ubuntu-latest 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 with: hardcoded-words: "Element" js_lint: name: "ESLint" runs-on: ubuntu-latest 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-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: cache: "yarn" node-version: "lts/*" # Needs branch matching as it inherits .stylelintrc.js from matrix-react-sdk - name: Install Dependencies run: "./scripts/layered.sh" - name: Run Linter run: "yarn run lint:style" workflow_lint: name: "Workflow Lint" runs-on: ubuntu-latest 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-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: cache: "yarn" node-version: "lts/*" - name: Install Deps run: "scripts/layered.sh" - name: Dead Code Analysis run: "yarn run analyse:unused-exports"