Code Metrics

Lines of Code

The following repository-wide code line count report is generated automatically during the documentation build using cloc. The report excludes generated outputs and dependency directories to keep the results focused on source and documentation files. Both a language-level summary and a per-file breakdown are produced.

This report is refreshed automatically on every docs build.

Generated with cloc 2.06 in 0.11 seconds.

Lines by language

Language

Files

Blank

Comment

Code

TypeScript

39

966

584

8,170

JSON

8

0

0

6,441

JavaScript

13

692

408

6,144

Markdown

19

558

1

1,545

CSS

5

251

4

1,509

Python

2

114

50

500

make

1

20

1

144

Text

1

0

0

6

SVG

1

0

0

5

reStructuredText

1

7

11

2

Lines by file

File

Language

Blank

Comment

Code

.prettierrc.json

JSON

0

0

8

AGENTS.md

Markdown

23

0

81

CHANGELOG.md

Markdown

213

0

461

CODE_OF_CONDUCT.md

Markdown

35

0

88

CONTRIBUTING.md

Markdown

23

0

81

cspell.json

JSON

0

0

60

docs/requirements.txt

Text

0

0

6

docs/source/_generated/coverage-report.md

Markdown

2

1

40

docs/source/_static/css/custom.css

CSS

4

4

26

docs/source/api/index.rst

reStructuredText

7

11

2

docs/source/automated-testing.md

Markdown

10

0

36

docs/source/changelog.md

Markdown

0

0

3

docs/source/code-development.md

Markdown

0

0

3

docs/source/code-metrics.md

Markdown

44

0

85

docs/source/code-of-conduct.md

Markdown

0

0

3

docs/source/complexity_report.js

JavaScript

116

1

962

docs/source/conf.py

Python

83

38

364

docs/source/coverage_report.py

Python

31

12

136

docs/source/detailed-usage.md

Markdown

34

0

117

docs/source/developer-guide.md

Markdown

70

0

187

docs/source/docgen.md

Markdown

10

0

30

docs/source/extension-overview.md

Markdown

56

0

245

docs/source/index.md

Markdown

2

0

21

docs/source/license.md

Markdown

0

0

2

docs/source/security-issues.md

Markdown

0

0

3

eslint.config.mjs

JavaScript

7

37

182

Makefile

make

20

1

144

media/deviceManager.css

CSS

54

0

297

media/deviceManager.js

JavaScript

79

0

686

media/loggerPanel.css

CSS

84

0

554

media/loggerPanel.js

JavaScript

207

271

1,634

media/loggerPanel/messaging.js

JavaScript

1

11

130

media/loggerPanel/rendering.js

JavaScript

16

14

84

media/loggerPanel/state.js

JavaScript

19

26

230

media/sftpExplorer.css

CSS

86

0

487

media/sftpExplorer.js

JavaScript

166

26

1,700

media/sidebarView.css

CSS

23

0

145

media/sidebarView.js

JavaScript

31

20

211

package-lock.json

JSON

0

0

5,877

package.json

JSON

0

0

444

README.md

Markdown

30

0

49

resources/terminal.svg

SVG

0

0

5

SECURITY.md

Markdown

6

0

10

src/configuration.ts

TypeScript

7

23

62

src/deviceColor.ts

TypeScript

6

8

17

src/deviceManagerPanel.ts

TypeScript

62

5

530

src/deviceTree.ts

TypeScript

11

39

77

src/extension.ts

TypeScript

69

37

496

src/highlights.ts

TypeScript

1

5

7

src/hostEndpoints.ts

TypeScript

6

17

27

src/logPanel/autoSaveManager.ts

TypeScript

13

20

67

src/logPanel/html.ts

TypeScript

4

12

182

src/logPanel/index.ts

TypeScript

1

5

1

src/logPanel/logPanel.ts

TypeScript

55

41

444

src/logPanel/messageParser.ts

TypeScript

7

9

92

src/logPanel/stateStore.ts

TypeScript

9

24

50

src/logPanel/types.ts

TypeScript

6

7

22

src/logSession/authenticationProvider.ts

TypeScript

16

24

102

src/logSession/connectionManager.ts

TypeScript

20

18

196

src/logSession/errors.ts

TypeScript

2

7

12

src/logSession/fingerprintPersistence.ts

TypeScript

11

24

99

src/logSession/hostKeyVerifier.ts

TypeScript

17

22

88

src/logSession/index.ts

TypeScript

1

5

3

src/logSession/logSession.ts

TypeScript

27

21

277

src/logSession/reconnectionController.ts

TypeScript

11

10

46

src/logSession/types.ts

TypeScript

1

7

7

src/passwordManager.ts

TypeScript

40

39

260

src/sftpExplorer.ts

TypeScript

269

37

2,978

src/sidebarView.ts

TypeScript

23

52

162

src/ssh2.d.ts

TypeScript

4

6

35

src/sshCommandRunner.ts

TypeScript

44

27

373

src/sshTerminal.ts

TypeScript

68

33

463

tests/e2e/runTest.js

JavaScript

4

0

30

tests/e2e/suite/extension.test.js

JavaScript

4

1

10

tests/e2e/suite/index.js

JavaScript

7

0

37

tests/e2e/suite/sftpExplorer.test.js

JavaScript

35

1

248

tests/integration/logSession.integration.test.ts

TypeScript

7

0

65

tests/integration/sidebar.integration.test.ts

TypeScript

11

0

108

tests/mocks/ssh.ts

TypeScript

15

0

68

tests/mocks/vscode.ts

TypeScript

39

0

319

tests/unit/loggerPanelMessaging.test.ts

TypeScript

9

0

42

tests/unit/logPanel.test.ts

TypeScript

26

0

113

tests/unit/logSession.test.ts

TypeScript

20

0

137

tests/unit/passwordManager.test.ts

TypeScript

15

0

54

tests/unit/sshCommandRunner.test.ts

TypeScript

12

0

66

tsconfig.eslint.json

JSON

0

0

9

tsconfig.json

JSON

0

0

15

tsconfig.vitest.json

JSON

0

0

8

typedoc.json

JSON

0

0

20

vitest.config.ts

TypeScript

1

0

23


Code Complexity

Complexity metrics are generated during the documentation build using a TypeScript and JavaScript parser. The report covers .ts and .js files under the repository (excluding build outputs) and includes:

  • Cyclomatic complexity (decision points and boolean operators)

  • Halstead complexity measures (volume, difficulty, effort, bugs, time)

  • Maintainability index (standard formula using LOC, Halstead volume, and cyclomatic complexity which translates to time for developer onboarding and for code reviews)

  • Cognitive complexity (nesting-aware approximation)

  • Depth of inheritance (in-repo inheritance depth)

  • Coupling between objects (unique type references and new expressions per class)

Why bother? These metrics help you:

  • Catch potential bugs early

  • Make code easier to understand and maintain

  • Save time and money long-term

Here’s a quick comparison:

Metric

Measures

Why It Matters

Cyclomatic Complexity

Code paths

Higher = harder to test

LOC

Code size

Bigger isn’t always better

Maintainability Index

Ease of maintenance

Higher = easier to work with

Cognitive Complexity

Mental effort to understand

Lower = more readable

Benefits of Tracking Code Complexity

Tracking complexity offers key advantages:

Improved Software Quality

Teams can:

  • Spot potential bug hotspots

  • Cut error risk

  • Boost code readability

Cost-Effective Maintenance

Complex code often means:

  • Longer debugging

  • Tough updates

  • Hard onboarding

Tracking helps teams:

  • Find refactoring targets

  • Streamline maintenance

  • Cut long-term costs

Better Resource Allocation

Complexity metrics guide teams in:

  • Prioritizing refactoring

  • Allocating testing resources

  • Planning code reviews

Enhanced Team Collaboration

Complexity metrics provide:

  • A shared language for code quality

  • Objective measures for reviews

  • Clear improvement goals

Proactive Risk Management

Teams can:

  • Prevent technical debt buildup

  • Catch security issues early

  • Address scalability problems

A study of 12,000+ projects found quality issues caused over 20% of failures. Tracking complexity helps avoid these pitfalls.

Quantifiable Quality Standards

Teams can:

  • Set clear benchmarks

  • Measure progress

  • Compare solutions objectively


Code Complexity Report

Thresholds

Metric

Ideal Range

Action if Exceeded

Cyclomatic complexity (function)

< 10

Break down complex functions

LOC (function)

< 100

Modularize large functions

Depth of inheritance (class)

< 5

Simplify class hierarchies

Coupling between objects (class)

< 5

Reduce class dependencies

Maintainability Index

> 65

Improve the above metrics

Complexity overview

Metric

Count

Average

Max

Cyclomatic complexity (functions)

1,231

2.49

47

Cognitive complexity (functions)

1,231

1.71

82

Maintainability index (files)

49

28.4

74.0

Depth of inheritance (classes)

23

1.26

2

Coupling between objects (classes)

23

8.83

36

Halstead summary

Metric

Value

Operators (distinct)

100

Operators (total)

23,133

Operands (distinct)

2,791

Operands (total)

13,273

Vocabulary

2,891

Length

36,406

Volume

418,572.63

Difficulty

237.78

Effort

99,529,102.66

Bugs

139.52

Time (sec)

5,529,394.59

Complexity by file

File

LOC

Functions

Cyclomatic Avg

Cyclomatic Max

Cognitive Avg

Cognitive Max

Maintainability

media/deviceManager.js

686

61

2.66

27

1.75

26

0.0

media/loggerPanel.js

1,905

164

2.73

19

1.92

29

0.0

media/loggerPanel/messaging.js

141

2

23.00

45

31.50

63

20.6

media/loggerPanel/rendering.js

98

6

4.50

14

5.00

22

33.2

media/loggerPanel/state.js

256

13

4.15

29

3.23

28

11.9

media/sftpExplorer.js

1,726

180

2.94

31

2.16

37

0.0

media/sidebarView.js

231

24

1.54

5

0.58

5

19.1

src/configuration.ts

85

6

3.83

10

2.83

9

30.4

src/deviceColor.ts

25

3

1.33

2

0.33

1

50.8

src/deviceManagerPanel.ts

535

33

3.45

18

2.58

17

0.0

src/deviceTree.ts

116

6

1.33

3

0.33

2

29.6

src/extension.ts

533

40

3.08

24

2.43

31

0.0

src/highlights.ts

12

0

0.00

0

0.00

0

62.6

src/hostEndpoints.ts

44

1

3.00

3

2.00

2

43.4

src/logPanel/autoSaveManager.ts

87

10

2.20

5

1.40

6

32.5

src/logPanel/html.ts

194

2

1.50

2

0.50

1

20.9

src/logPanel/index.ts

6

0

0.00

0

0.00

0

74.0

src/logPanel/logPanel.ts

485

42

2.12

14

1.26

14

4.1

src/logPanel/messageParser.ts

101

6

5.83

20

5.83

25

26.5

src/logPanel/stateStore.ts

74

10

1.10

2

0.10

1

33.7

src/logPanel/types.ts

29

0

0.00

0

0.00

0

49.3

src/logSession/authenticationProvider.ts

126

8

2.88

4

2.00

4

26.2

src/logSession/connectionManager.ts

214

19

1.79

4

0.79

3

19.4

src/logSession/errors.ts

19

1

1.00

1

0.00

0

55.1

src/logSession/fingerprintPersistence.ts

123

7

4.00

7

3.29

6

25.3

src/logSession/hostKeyVerifier.ts

110

8

2.50

9

1.88

11

28.1

src/logSession/index.ts

8

0

0.00

0

0.00

0

67.0

src/logSession/logSession.ts

298

26

2.50

12

1.62

14

12.1

src/logSession/reconnectionController.ts

56

2

5.00

9

8.00

16

38.1

src/logSession/types.ts

14

0

0.00

0

0.00

0

57.9

src/passwordManager.ts

299

21

2.33

14

1.52

17

16.0

src/sftpExplorer.ts

3,015

192

2.99

47

2.49

82

0.0

src/sidebarView.ts

214

10

2.20

9

1.30

9

19.7

src/sshCommandRunner.ts

400

36

2.56

12

1.81

14

2.8

src/sshTerminal.ts

496

42

2.86

18

2.12

22

0.0

tests/e2e/runTest.js

30

5

1.60

2

0.60

1

45.1

tests/e2e/suite/extension.test.js

11

2

1.00

1

0.00

0

58.9

tests/e2e/suite/index.js

37

6

1.67

4

0.67

3

42.4

tests/e2e/suite/sftpExplorer.test.js

249

42

1.29

3

0.31

3

17.4

tests/integration/logSession.integration.test.ts

65

15

1.00

1

0.00

0

35.6

tests/integration/sidebar.integration.test.ts

108

26

1.08

2

0.08

1

26.1

tests/mocks/ssh.ts

68

12

1.25

3

0.25

2

33.2

tests/mocks/vscode.ts

319

67

1.10

3

0.10

2

5.5

tests/unit/loggerPanelMessaging.test.ts

42

6

1.33

2

0.33

1

40.6

tests/unit/logPanel.test.ts

113

19

1.00

1

0.00

0

26.1

tests/unit/logSession.test.ts

137

30

1.00

1

0.00

0

28.0

tests/unit/passwordManager.test.ts

54

7

1.00

1

0.00

0

37.7

tests/unit/sshCommandRunner.test.ts

66

13

1.23

4

0.23

3

33.4

vitest.config.ts

23

0

0.00

0

0.00

0

51.8

Halstead metrics by file

File

Vocabulary

Length

Volume

Difficulty

Effort

Bugs

Time (sec)

media/deviceManager.js

310

2,532

20,955.15

46.70

978,634.98

6.99

54,368.61

media/loggerPanel.js

413

2,487

21,612.02

53.83

1,163,379.38

7.20

64,632.19

media/loggerPanel/messaging.js

126

827

5,770.21

46.04

265,667.63

1.92

14,759.31

media/loggerPanel/rendering.js

43

122

662.00

16.56

10,962.79

0.22

609.04

media/loggerPanel/state.js

195

1,431

10,886.09

56.14

611,147.73

3.63

33,952.65

media/sftpExplorer.js

283

1,109

9,032.43

27.00

243,893.28

3.01

13,549.63

media/sidebarView.js

112

449

3,056.50

21.23

64,891.90

1.02

3,605.11

src/configuration.ts

89

474

3,069.50

49.26

151,201.18

1.02

8,400.07

src/deviceColor.ts

40

74

393.82

14.00

5,513.52

0.13

306.31

src/deviceManagerPanel.ts

317

1,708

14,190.64

56.92

807,758.83

4.73

44,875.49

src/deviceTree.ts

115

433

2,964.10

38.52

114,179.49

0.99

6,343.31

src/extension.ts

178

760

5,681.56

60.74

345,110.23

1.89

19,172.79

src/highlights.ts

14

25

95.18

4.00

380.74

0.03

21.15

src/hostEndpoints.ts

44

149

813.46

28.80

23,427.51

0.27

1,301.53

src/logPanel/autoSaveManager.ts

76

243

1,518.25

33.72

51,194.53

0.51

2,844.14

src/logPanel/html.ts

260

1,598

12,819.74

52.19

669,048.18

4.27

37,169.34

src/logPanel/index.ts

7

7

19.65

2.50

49.13

0.01

2.73

src/logPanel/logPanel.ts

168

572

4,228.41

36.72

155,261.77

1.41

8,625.65

src/logPanel/messageParser.ts

83

590

3,761.27

70.02

263,374.61

1.25

14,631.92

src/logPanel/stateStore.ts

81

426

2,700.78

61.86

167,071.27

0.90

9,281.74

src/logPanel/types.ts

33

96

484.26

8.84

4,281.89

0.16

237.88

src/logSession/authenticationProvider.ts

105

542

3,639.12

56.92

207,149.97

1.21

11,508.33

src/logSession/connectionManager.ts

135

554

3,920.56

42.86

168,032.57

1.31

9,335.14

src/logSession/errors.ts

31

52

257.62

11.08

2,855.27

0.09

158.63

src/logSession/fingerprintPersistence.ts

104

615

4,120.77

76.27

314,277.42

1.37

17,459.86

src/logSession/hostKeyVerifier.ts

116

481

3,298.69

45.41

149,778.30

1.10

8,321.02

src/logSession/index.ts

11

23

79.57

3.60

286.44

0.03

15.91

src/logSession/logSession.ts

146

549

3,947.21

32.94

130,011.35

1.32

7,222.85

src/logSession/reconnectionController.ts

74

260

1,614.46

63.54

102,577.87

0.54

5,698.77

src/logSession/types.ts

23

61

275.94

6.55

1,806.13

0.09

100.34

src/passwordManager.ts

100

326

2,165.90

25.47

55,171.84

0.72

3,065.10

src/sftpExplorer.ts

781

7,190

69,090.00

125.74

8,687,152.74

23.03

482,619.60

src/sidebarView.ts

167

826

6,098.94

44.42

270,894.57

2.03

15,049.70

src/sshCommandRunner.ts

216

1,299

10,073.60

96.42

971,335.10

3.36

53,963.06

src/sshTerminal.ts

172

529

3,928.49

38.83

152,556.52

1.31

8,475.36

tests/e2e/runTest.js

61

203

1,203.94

19.07

22,954.06

0.40

1,275.23

tests/e2e/suite/extension.test.js

30

78

382.74

9.19

3,516.40

0.13

195.36

tests/e2e/suite/index.js

67

229

1,389.13

18.09

25,127.90

0.46

1,395.99

tests/e2e/suite/sftpExplorer.test.js

74

318

1,974.61

25.56

50,478.50

0.66

2,804.36

tests/integration/logSession.integration.test.ts

82

287

1,824.62

16.76

30,585.54

0.61

1,699.20

tests/integration/sidebar.integration.test.ts

124

681

4,735.81

31.83

150,756.54

1.58

8,375.36

tests/mocks/ssh.ts

96

525

3,457.11

53.40

184,597.50

1.15

10,255.42

tests/mocks/vscode.ts

239

2,350

18,567.04

97.89

1,817,601.92

6.19

100,977.88

tests/unit/loggerPanelMessaging.test.ts

71

303

1,863.37

27.00

50,311.08

0.62

2,795.06

tests/unit/logPanel.test.ts

138

867

6,163.09

36.94

227,691.96

2.05

12,649.55

tests/unit/logSession.test.ts

65

187

1,126.18

12.18

13,722.29

0.38

762.35

tests/unit/passwordManager.test.ts

76

374

2,336.72

18.15

42,417.50

0.78

2,356.53

tests/unit/sshCommandRunner.test.ts

107

503

3,390.96

27.65

93,744.96

1.13

5,208.05

vitest.config.ts

40

82

436.40

6.98

3,046.71

0.15

169.26

Class coupling and inheritance by file

Class

File

DIT

CBO

DeviceManagerPanel

src/deviceManagerPanel.ts

1

16

DeviceItem

src/deviceTree.ts

2

2

DeviceTreeDataProvider

src/deviceTree.ts

1

8

AutoSaveManager

src/logPanel/autoSaveManager.ts

1

2

LogPanel

src/logPanel/logPanel.ts

1

17

WorkspaceStateStore

src/logPanel/stateStore.ts

1

5

AuthenticationProvider

src/logSession/authenticationProvider.ts

1

9

ConnectionManager

src/logSession/connectionManager.ts

1

12

HostKeyMismatchError

src/logSession/errors.ts

2

2

FingerprintPersistence

src/logSession/fingerprintPersistence.ts

1

6

HostKeyVerifier

src/logSession/hostKeyVerifier.ts

1

4

LogSession

src/logSession/logSession.ts

1

21

ReconnectionController

src/logSession/reconnectionController.ts

1

3

PasswordManager

src/passwordManager.ts

1

6

HostKeyMismatchError

src/sftpExplorer.ts

2

1

SftpExplorerPanel

src/sftpExplorer.ts

1

36

SidebarViewProvider

src/sidebarView.ts

1

8

SshCommandError

src/sshCommandRunner.ts

2

1

SshCommandRunner

src/sshCommandRunner.ts

1

17

SshTerminalSession

src/sshTerminal.ts

1

19

MockSshChannel

tests/mocks/ssh.ts

2

1

MockSshClient

tests/mocks/ssh.ts

2

7

MockLogSession

tests/unit/logPanel.test.ts

1

0

Complexity by function (outside thresholds)

Function

Class

Location

LOC

Cyclomatic

Cognitive

toViewDevice

media/deviceManager.js:70

37

27

26

createInput

media/deviceManager.js:388

70

13

12

<anonymous>

media/loggerPanel.js:26

1,882

10

9

handleLogLine

media/loggerPanel.js:616

53

19

29

handleBookmarkAction

media/loggerPanel.js:1107

34

11

12

renderStatusText

media/loggerPanel.js:1337

48

14

20

registerMessageHandlers

media/loggerPanel/messaging.js:10

133

1

0

<anonymous>

media/loggerPanel/messaging.js:20

122

45

63

buildHighlightedContent

media/loggerPanel/rendering.js:51

53

14

22

createStateController

media/loggerPanel/state.js:55

207

1

0

restoreStateFromSnapshot

media/loggerPanel/state.js:170

75

29

28

<anonymous>

media/sftpExplorer.js:7

1,721

2

1

handleTestCommand

media/sftpExplorer.js:344

34

12

13

selectNextQuickSearchMatch

media/sftpExplorer.js:486

35

10

10

handleEntryClick

media/sftpExplorer.js:682

36

12

15

updateContextMenuOptions

media/sftpExplorer.js:773

36

11

10

buildModeFromDialog

media/sftpExplorer.js:923

13

10

9

handleListResponse

media/sftpExplorer.js:1172

25

10

12

deleteSelected

media/sftpExplorer.js:1381

33

13

13

<anonymous>

media/sftpExplorer.js:1605

79

31

37

<anonymous>

media/sftpExplorer.js:1723

38

11

11

<anonymous>

media/sftpExplorer.js:1844

46

16

23

<anonymous>

media/sidebarView.js:7

226

1

0

renderDevices

media/sidebarView.js:109

120

2

1

<anonymous>

media/sidebarView.js:119

109

5

4

applyDeviceDefaults

src/configuration.ts:54

21

10

9

buildHtml

DeviceManagerPanel

src/deviceManagerPanel.ts:138

130

1

0

normalizeDevice

DeviceManagerPanel

src/deviceManagerPanel.ts:431

37

18

17

buildBastion

DeviceManagerPanel

src/deviceManagerPanel.ts:510

22

14

13

migrateLegacyPasswords

src/extension.ts:63

139

24

31

activate

src/extension.ts:230

316

2

1

openWebBrowser

src/extension.ts:241

36

12

13

buildLogPanelHtml

src/logPanel/html.ts:14

172

1

0

handleWebviewMessage

LogPanel

src/logPanel/logPanel.ts:158

43

14

14

parseWebviewMessage

src/logPanel/messageParser.ts:26

48

20

25

validateDeviceConfiguration

LogSession

src/logSession/logSession.ts:178

29

12

14

tryReuseStoredSecret

PasswordManager

src/passwordManager.ts:174

64

14

17

handleTestMessage

SftpExplorerPanel

src/sftpExplorer.ts:471

31

17

17

handleMessage

SftpExplorerPanel

src/sftpExplorer.ts:503

248

47

82

copyEntry

SftpExplorerPanel

src/sftpExplorer.ts:1108

57

16

20

applyPermissions

SftpExplorerPanel

src/sftpExplorer.ts:1657

44

10

12

createSftpConnection

SftpExplorerPanel

src/sftpExplorer.ts:2206

66

15

22

validateDeviceConfiguration

SftpExplorerPanel

src/sftpExplorer.ts:2282

29

12

14

getHtml

SftpExplorerPanel

src/sftpExplorer.ts:2675

564

2

1

run

SshCommandRunner

src/sshCommandRunner.ts:87

47

11

13

validateDeviceConfiguration

SshCommandRunner

src/sshCommandRunner.ts:143

29

12

14

start

SshTerminalSession

src/sshTerminal.ts:130

73

18

22

validateDeviceConfiguration

SshTerminalSession

src/sshTerminal.ts:219

29

12

14

<anonymous>

tests/e2e/suite/sftpExplorer.test.js:6

246

1

0

Halstead metrics by function (outside thresholds)

Function

Class

Location

Vocabulary

Length

Volume

Difficulty

Effort

Bugs

Time (sec)

toViewDevice

media/deviceManager.js:70

55

308

1,780.66

31.09

55,364.43

0.59

3,075.80

createInput

media/deviceManager.js:388

76

517

3,230.18

35.32

114,084.03

1.08

6,338.00

<anonymous>

media/loggerPanel.js:26

405

2,447

21,195.37

51.34

1,088,222.61

7.07

60,456.81

handleLogLine

media/loggerPanel.js:616

69

392

2,394.54

30.63

73,332.84

0.80

4,074.05

handleBookmarkAction

media/loggerPanel.js:1107

44

133

726.10

16.89

12,264.85

0.24

681.38

renderStatusText

media/loggerPanel.js:1337

63

266

1,589.96

34.88

55,449.73

0.53

3,080.54

registerMessageHandlers

media/loggerPanel/messaging.js:10

126

827

5,770.21

46.04

265,667.63

1.92

14,759.31

<anonymous>

media/loggerPanel/messaging.js:20

120

800

5,525.51

43.40

239,825.07

1.84

13,323.61

buildHighlightedContent

media/loggerPanel/rendering.js:51

67

296

1,795.56

44.59

80,072.38

0.60

4,448.47

createStateController

media/loggerPanel/state.js:55

138

1,214

8,629.75

73.15

631,302.41

2.88

35,072.36

restoreStateFromSnapshot

media/loggerPanel/state.js:170

94

613

4,017.96

49.09

197,258.69

1.34

10,958.82

<anonymous>

media/sftpExplorer.js:7

283

1,108

9,024.28

27.00

243,673.36

3.01

13,537.41

handleTestCommand

media/sftpExplorer.js:344

49

133

746.76

16.70

12,473.60

0.25

692.98

selectNextQuickSearchMatch

media/sftpExplorer.js:486

63

251

1,500.30

37.53

56,305.27

0.50

3,128.07

handleEntryClick

media/sftpExplorer.js:682

72

275

1,696.73

28.54

48,430.56

0.57

2,690.59

updateContextMenuOptions

media/sftpExplorer.js:773

61

258

1,530.13

31.78

48,633.33

0.51

2,701.85

buildModeFromDialog

media/sftpExplorer.js:923

36

122

630.73

16.39

10,338.50

0.21

574.36

handleListResponse

media/sftpExplorer.js:1172

51

209

1,185.54

26.60

31,535.28

0.40

1,751.96

deleteSelected

media/sftpExplorer.js:1381

48

113

631.10

19.46

12,282.19

0.21

682.34

<anonymous>

media/sftpExplorer.js:1605

63

388

2,319.18

27.21

63,103.40

0.77

3,505.74

<anonymous>

media/sftpExplorer.js:1723

57

209

1,219.07

24.51

29,884.73

0.41

1,660.26

<anonymous>

media/sftpExplorer.js:1844

65

239

1,439.35

25.31

36,433.44

0.48

2,024.08

<anonymous>

media/sidebarView.js:7

112

448

3,049.70

21.23

64,747.37

1.02

3,597.08

renderDevices

media/sidebarView.js:109

98

413

2,731.88

20.03

54,705.80

0.91

3,039.21

<anonymous>

media/sidebarView.js:119

82

351

2,231.50

15.96

35,605.56

0.74

1,978.09

applyDeviceDefaults

src/configuration.ts:54

40

142

755.71

23.32

17,621.87

0.25

978.99

buildHtml

DeviceManagerPanel

src/deviceManagerPanel.ts:138

202

1,031

7,895.62

28.45

224,625.84

2.63

12,479.21

normalizeDevice

DeviceManagerPanel

src/deviceManagerPanel.ts:431

52

315

1,795.64

31.95

57,378.81

0.60

3,187.71

buildBastion

DeviceManagerPanel

src/deviceManagerPanel.ts:510

44

146

797.08

21.67

17,270.00

0.27

959.44

migrateLegacyPasswords

src/extension.ts:63

82

364

2,314.15

50.56

117,003.37

0.77

6,500.19

activate

src/extension.ts:230

113

358

2,441.62

36.89

90,076.13

0.81

5,004.23

openWebBrowser

src/extension.ts:241

65

184

1,108.12

29.63

32,836.07

0.37

1,824.23

buildLogPanelHtml

src/logPanel/html.ts:14

254

1,584

12,654.08

46.36

586,655.47

4.22

32,591.97

handleWebviewMessage

LogPanel

src/logPanel/logPanel.ts:158

59

203

1,194.18

22.06

26,344.26

0.40

1,463.57

parseWebviewMessage

src/logPanel/messageParser.ts:26

58

263

1,540.65

43.08

66,366.42

0.51

3,687.02

validateDeviceConfiguration

LogSession

src/logSession/logSession.ts:178

41

208

1,114.37

38.85

43,293.31

0.37

2,405.18

tryReuseStoredSecret

PasswordManager

src/passwordManager.ts:174

56

131

760.76

23.28

17,707.43

0.25

983.75

handleTestMessage

SftpExplorerPanel

src/sftpExplorer.ts:471

49

148

830.98

12.75

10,594.96

0.28

588.61

handleMessage

SftpExplorerPanel

src/sftpExplorer.ts:503

117

1,055

7,248.23

71.55

518,628.05

2.42

28,812.67

copyEntry

SftpExplorerPanel

src/sftpExplorer.ts:1108

66

458

2,768.33

58.95

163,185.92

0.92

9,065.88

applyPermissions

SftpExplorerPanel

src/sftpExplorer.ts:1657

62

287

1,708.85

40.78

69,689.22

0.57

3,871.62

createSftpConnection

SftpExplorerPanel

src/sftpExplorer.ts:2206

76

240

1,499.50

28.37

42,540.24

0.50

2,363.35

validateDeviceConfiguration

SftpExplorerPanel

src/sftpExplorer.ts:2282

40

210

1,117.60

41.45

46,321.78

0.37

2,573.43

getHtml

SftpExplorerPanel

src/sftpExplorer.ts:2675

338

3,204

26,916.42

51.80

1,394,202.29

8.97

77,455.68

run

SshCommandRunner

src/sshCommandRunner.ts:87

77

265

1,660.70

41.63

69,126.57

0.55

3,840.37

validateDeviceConfiguration

SshCommandRunner

src/sshCommandRunner.ts:143

40

210

1,117.60

41.45

46,321.78

0.37

2,573.43

start

SshTerminalSession

src/sshTerminal.ts:130

90

367

2,382.51

47.60

113,407.48

0.79

6,300.42

validateDeviceConfiguration

SshTerminalSession

src/sshTerminal.ts:219

40

210

1,117.60

41.45

46,321.78

0.37

2,573.43

<anonymous>

tests/e2e/suite/sftpExplorer.test.js:6

67

298

1,807.69

25.00

45,192.36

0.60

2,510.69

Class coupling and inheritance by function (outside thresholds)

Function

Class

Location

DIT

CBO

toViewDevice

media/deviceManager.js:70

1

0

createInput

media/deviceManager.js:388

1

0

<anonymous>

media/loggerPanel.js:26

1

0

handleLogLine

media/loggerPanel.js:616

1

0

handleBookmarkAction

media/loggerPanel.js:1107

1

0

renderStatusText

media/loggerPanel.js:1337

1

0

registerMessageHandlers

media/loggerPanel/messaging.js:10

1

0

<anonymous>

media/loggerPanel/messaging.js:20

1

0

buildHighlightedContent

media/loggerPanel/rendering.js:51

1

0

createStateController

media/loggerPanel/state.js:55

1

0

restoreStateFromSnapshot

media/loggerPanel/state.js:170

1

0

<anonymous>

media/sftpExplorer.js:7

1

0

handleTestCommand

media/sftpExplorer.js:344

1

0

selectNextQuickSearchMatch

media/sftpExplorer.js:486

1

0

handleEntryClick

media/sftpExplorer.js:682

1

0

updateContextMenuOptions

media/sftpExplorer.js:773

1

0

buildModeFromDialog

media/sftpExplorer.js:923

1

0

handleListResponse

media/sftpExplorer.js:1172

1

0

deleteSelected

media/sftpExplorer.js:1381

1

0

<anonymous>

media/sftpExplorer.js:1605

1

0

<anonymous>

media/sftpExplorer.js:1723

1

0

<anonymous>

media/sftpExplorer.js:1844

1

0

<anonymous>

media/sidebarView.js:7

1

0

renderDevices

media/sidebarView.js:109

1

0

<anonymous>

media/sidebarView.js:119

1

0

applyDeviceDefaults

src/configuration.ts:54

1

0

buildHtml

DeviceManagerPanel

src/deviceManagerPanel.ts:138

1

16

normalizeDevice

DeviceManagerPanel

src/deviceManagerPanel.ts:431

1

16

buildBastion

DeviceManagerPanel

src/deviceManagerPanel.ts:510

1

16

migrateLegacyPasswords

src/extension.ts:63

1

0

activate

src/extension.ts:230

1

0

openWebBrowser

src/extension.ts:241

1

0

buildLogPanelHtml

src/logPanel/html.ts:14

1

0

handleWebviewMessage

LogPanel

src/logPanel/logPanel.ts:158

1

17

parseWebviewMessage

src/logPanel/messageParser.ts:26

1

0

validateDeviceConfiguration

LogSession

src/logSession/logSession.ts:178

1

21

tryReuseStoredSecret

PasswordManager

src/passwordManager.ts:174

1

6

handleTestMessage

SftpExplorerPanel

src/sftpExplorer.ts:471

1

36

handleMessage

SftpExplorerPanel

src/sftpExplorer.ts:503

1

36

copyEntry

SftpExplorerPanel

src/sftpExplorer.ts:1108

1

36

applyPermissions

SftpExplorerPanel

src/sftpExplorer.ts:1657

1

36

createSftpConnection

SftpExplorerPanel

src/sftpExplorer.ts:2206

1

36

validateDeviceConfiguration

SftpExplorerPanel

src/sftpExplorer.ts:2282

1

36

getHtml

SftpExplorerPanel

src/sftpExplorer.ts:2675

1

36

run

SshCommandRunner

src/sshCommandRunner.ts:87

1

17

validateDeviceConfiguration

SshCommandRunner

src/sshCommandRunner.ts:143

1

17

start

SshTerminalSession

src/sshTerminal.ts:130

1

19

validateDeviceConfiguration

SshTerminalSession

src/sshTerminal.ts:219

1

19

<anonymous>

tests/e2e/suite/sftpExplorer.test.js:6

1

0

Generated on 2026-02-15T01:15:39.799Z.


Test Coverage

The coverage summary is generated automatically when running the test suite (for example, via npm test or make test) and exported into the documentation metrics.

Overall coverage

Metric

Coverage

Lines

19.2% (515/2685)

Statements

19.1% (519/2713)

Functions

21.3% (113/530)

Branches

10.9% (181/1658)

Coverage by file

File

Lines

Statements

Functions

Branches

src/configuration.ts

81.2% (13/16)

76.5% (13/17)

33.3% (2/6)

23.5% (8/34)

src/deviceColor.ts

60.0% (6/10)

60.0% (6/10)

33.3% (1/3)

50.0% (1/2)

src/deviceManagerPanel.ts

0.0% (0/142)

0.0% (0/145)

0.0% (0/33)

0.0% (0/144)

src/deviceTree.ts

0.0% (0/21)

0.0% (0/22)

0.0% (0/6)

0.0% (0/4)

src/extension.ts

0.0% (0/272)

0.0% (0/277)

0.0% (0/40)

0.0% (0/137)

src/highlights.ts

100.0% (0/0)

100.0% (0/0)

100.0% (0/0)

100.0% (0/0)

src/hostEndpoints.ts

100.0% (8/8)

100.0% (8/8)

100.0% (1/1)

75.0% (3/4)

src/logPanel/autoSaveManager.ts

20.0% (7/35)

18.9% (7/37)

20.0% (2/10)

29.2% (7/24)

src/logPanel/html.ts

100.0% (11/11)

100.0% (12/12)

100.0% (2/2)

100.0% (0/0)

src/logPanel/index.ts

100.0% (0/0)

100.0% (0/0)

100.0% (0/0)

100.0% (0/0)

src/logPanel/logPanel.ts

43.9% (87/198)

44.0% (88/200)

40.5% (17/42)

34.7% (26/75)

src/logPanel/messageParser.ts

23.1% (6/26)

22.2% (6/27)

16.7% (1/6)

13.6% (6/44)

src/logPanel/stateStore.ts

21.1% (4/19)

19.0% (4/21)

20.0% (2/10)

0.0% (0/2)

src/logPanel/types.ts

100.0% (0/0)

100.0% (0/0)

100.0% (0/0)

100.0% (0/0)

src/logSession/authenticationProvider.ts

30.0% (12/40)

30.0% (12/40)

37.5% (3/8)

24.1% (7/29)

src/logSession/connectionManager.ts

32.9% (23/70)

32.9% (23/70)

36.8% (7/19)

16.7% (5/30)

src/logSession/errors.ts

100.0% (5/5)

100.0% (5/5)

100.0% (1/1)

100.0% (0/0)

src/logSession/fingerprintPersistence.ts

63.9% (23/36)

63.9% (23/36)

85.7% (6/7)

36.8% (14/38)

src/logSession/hostKeyVerifier.ts

38.1% (16/42)

38.1% (16/42)

75.0% (6/8)

13.6% (3/22)

src/logSession/index.ts

100.0% (0/0)

100.0% (0/0)

100.0% (0/0)

100.0% (0/0)

src/logSession/logSession.ts

71.2% (84/118)

70.0% (84/120)

69.2% (18/26)

51.4% (36/70)

src/logSession/reconnectionController.ts

79.2% (19/24)

79.2% (19/24)

100.0% (2/2)

58.3% (7/12)

src/logSession/types.ts

100.0% (0/0)

100.0% (0/0)

100.0% (0/0)

100.0% (0/0)

src/passwordManager.ts

68.0% (66/97)

68.0% (66/97)

75.0% (15/20)

38.3% (18/47)

src/sftpExplorer.ts

0.0% (0/1055)

0.0% (0/1061)

0.0% (0/192)

0.0% (0/677)

src/sidebarView.ts

63.3% (31/49)

64.7% (33/51)

80.0% (8/10)

28.6% (4/14)

src/ssh2.d.ts

100.0% (0/0)

100.0% (0/0)

100.0% (0/0)

100.0% (0/0)

src/sshCommandRunner.ts

57.0% (94/165)

57.0% (94/165)

52.8% (19/36)

34.3% (36/105)

src/sshTerminal.ts

0.0% (0/226)

0.0% (0/226)

0.0% (0/42)

0.0% (0/144)

Generated from coverage/coverage-summary.json.