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.20 seconds.

Lines by language

Language

Files

Blank

Comment

Code

TypeScript

80

2,331

628

24,670

JavaScript

14

832

409

7,356

JSON

23

0

0

7,331

Markdown

19

798

1

2,215

CSS

5

311

4

1,823

Python

2

141

147

524

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

87

CHANGELOG.md

Markdown

349

0

716

CODE_OF_CONDUCT.md

Markdown

35

0

88

CONTRIBUTING.md

Markdown

23

0

87

cspell.json

JSON

0

0

62

docs/requirements.txt

Text

0

0

6

docs/source/_generated/coverage-report.md

Markdown

2

1

56

docs/source/_static/css/custom.css

CSS

8

4

38

docs/source/api/index.rst

reStructuredText

7

11

2

docs/source/automated-testing.md

Markdown

50

0

96

docs/source/changelog.md

Markdown

0

0

3

docs/source/code-development.md

Markdown

0

0

3

docs/source/code-metrics.md

Markdown

45

0

86

docs/source/code-of-conduct.md

Markdown

0

0

3

docs/source/complexity_report.js

JavaScript

116

1

962

docs/source/conf.py

Python

107

134

377

docs/source/coverage_report.py

Python

34

13

147

docs/source/detailed-usage.md

Markdown

87

0

320

docs/source/developer-guide.md

Markdown

73

0

190

docs/source/docgen.md

Markdown

10

0

30

docs/source/extension-overview.md

Markdown

63

0

361

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

203

Makefile

make

20

1

144

media/deviceManager.css

CSS

79

0

430

media/deviceManager.js

JavaScript

154

0

1,286

media/loggerPanel.css

CSS

84

0

554

media/loggerPanel.js

JavaScript

209

271

1,653

media/loggerPanel/messaging.js

JavaScript

3

11

135

media/loggerPanel/rendering.js

JavaScript

18

14

95

media/loggerPanel/state.js

JavaScript

19

26

230

media/sftpExplorer.css

CSS

108

0

593

media/sftpExplorer.js

JavaScript

189

26

2,020

media/sidebarView.css

CSS

32

0

208

media/sidebarView.js

JavaScript

49

20

344

package-lock.json

JSON

0

0

6,434

package.json

JSON

0

0

669

package.nls.cs.json

JSON

0

0

7

package.nls.de.json

JSON

0

0

7

package.nls.es.json

JSON

0

0

7

package.nls.fr.json

JSON

0

0

7

package.nls.hu.json

JSON

0

0

7

package.nls.it.json

JSON

0

0

7

package.nls.ja.json

JSON

0

0

7

package.nls.json

JSON

0

0

7

package.nls.ko.json

JSON

0

0

7

package.nls.pl.json

JSON

0

0

7

package.nls.pt-br.json

JSON

0

0

7

package.nls.ru.json

JSON

0

0

7

package.nls.tr.json

JSON

0

0

7

package.nls.zh-cn.json

JSON

0

0

7

package.nls.zh-tw.json

JSON

0

0

7

README.md

Markdown

30

0

53

resources/terminal.svg

SVG

0

0

5

scripts/esbuild.mjs

JavaScript

9

1

49

SECURITY.md

Markdown

6

0

10

src/configuration.ts

TypeScript

43

23

228

src/deviceColor.ts

TypeScript

6

8

17

src/deviceManagerPanel.ts

TypeScript

146

5

1,284

src/devicePing.ts

TypeScript

11

5

44

src/deviceTree.ts

TypeScript

16

39

117

src/extension.ts

TypeScript

113

37

851

src/highlights.ts

TypeScript

1

5

7

src/hostEndpoints.ts

TypeScript

6

17

27

src/localization/cs.ts

TypeScript

1

1

314

src/localization/de.ts

TypeScript

1

1

325

src/localization/en.ts

TypeScript

0

0

313

src/localization/es.ts

TypeScript

1

1

321

src/localization/fr.ts

TypeScript

1

1

328

src/localization/hu.ts

TypeScript

1

1

323

src/localization/index.ts

TypeScript

15

1

125

src/localization/it.ts

TypeScript

1

1

318

src/localization/ja.ts

TypeScript

1

0

316

src/localization/ko.ts

TypeScript

1

0

309

src/localization/pl.ts

TypeScript

1

1

324

src/localization/pt-br.ts

TypeScript

1

1

322

src/localization/ru.ts

TypeScript

1

0

321

src/localization/tr.ts

TypeScript

1

1

318

src/localization/zh-cn.ts

TypeScript

1

0

307

src/localization/zh-tw.ts

TypeScript

1

0

307

src/logPanel/autoSaveManager.ts

TypeScript

13

20

67

src/logPanel/html.ts

TypeScript

5

13

188

src/logPanel/index.ts

TypeScript

1

5

1

src/logPanel/logPanel.ts

TypeScript

55

41

503

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

106

src/logSession/connectionManager.ts

TypeScript

21

18

202

src/logSession/errors.ts

TypeScript

2

7

12

src/logSession/fingerprintPersistence.ts

TypeScript

11

24

100

src/logSession/hostKeyVerifier.ts

TypeScript

17

22

88

src/logSession/index.ts

TypeScript

1

5

3

src/logSession/logSession.ts

TypeScript

30

21

296

src/logSession/reconnectionController.ts

TypeScript

11

10

46

src/logSession/types.ts

TypeScript

2

7

9

src/passwordManager.ts

TypeScript

51

39

374

src/sftpExplorer.ts

TypeScript

303

37

3,433

src/sftpSearch.ts

TypeScript

21

14

144

src/sidebarView.ts

TypeScript

26

53

223

src/ssh2.d.ts

TypeScript

5

6

42

src/sshCommandExecution.ts

TypeScript

20

5

106

src/sshCommandRunner.ts

TypeScript

44

24

378

src/sshTerminal.ts

TypeScript

72

35

513

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

44

1

302

tests/integration/logSession.integration.test.ts

TypeScript

7

0

67

tests/integration/sidebar.integration.test.ts

TypeScript

19

0

224

tests/mocks/ssh.ts

TypeScript

20

0

93

tests/mocks/vscode.ts

TypeScript

57

0

494

tests/unit/authenticationProvider.test.ts

TypeScript

28

0

231

tests/unit/autoSaveManager.test.ts

TypeScript

28

0

107

tests/unit/configuration.test.ts

TypeScript

42

0

345

tests/unit/connectionManager.test.ts

TypeScript

36

0

483

tests/unit/deviceManagerPanel.test.ts

TypeScript

69

0

922

tests/unit/devicePing.test.ts

TypeScript

16

0

72

tests/unit/deviceTree.test.ts

TypeScript

17

0

95

tests/unit/extensionPasswordCommands.test.ts

TypeScript

34

0

218

tests/unit/extensionSftpPresetMigration.test.ts

TypeScript

9

0

52

tests/unit/extensionWebBrowserCommands.test.ts

TypeScript

79

0

471

tests/unit/fingerprintPersistence.test.ts

TypeScript

19

0

138

tests/unit/hostEndpoints.test.ts

TypeScript

3

0

38

tests/unit/hostKeyVerifier.test.ts

TypeScript

16

0

89

tests/unit/localization.test.ts

TypeScript

16

1

66

tests/unit/loggerPanelMessaging.test.ts

TypeScript

9

0

42

tests/unit/logPanel.test.ts

TypeScript

78

0

429

tests/unit/logSession.test.ts

TypeScript

51

0

384

tests/unit/messageParser.test.ts

TypeScript

10

0

112

tests/unit/packageNls.test.ts

TypeScript

14

1

79

tests/unit/passwordManager.test.ts

TypeScript

46

0

188

tests/unit/reconnectionController.test.ts

TypeScript

13

0

67

tests/unit/sftpExplorer.test.ts

TypeScript

276

0

3,108

tests/unit/sftpSearch.test.ts

TypeScript

15

0

131

tests/unit/sidebarView.test.ts

TypeScript

14

0

132

tests/unit/sshCommandRunner.test.ts

TypeScript

59

0

486

tests/unit/sshTerminal.test.ts

TypeScript

95

0

720

tests/unit/stateStore.test.ts

TypeScript

15

0

105

tsconfig.eslint.json

JSON

0

0

9

tsconfig.json

JSON

0

0

16

tsconfig.vitest.json

JSON

0

0

8

typedoc.json

JSON

0

0

20

vitest.config.ts

TypeScript

1

7

18


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)

2,312

2.05

45

Cognitive complexity (functions)

2,312

1.21

63

Maintainability index (files)

90

23.5

74.0

Depth of inheritance (classes)

31

1.32

2

Coupling between objects (classes)

31

8.23

40

Halstead summary

Metric

Value

Operators (distinct)

108

Operators (total)

63,878

Operands (distinct)

8,543

Operands (total)

37,368

Vocabulary

8,651

Length

101,246

Volume

1,324,161.12

Difficulty

236.20

Effort

312,769,243.23

Bugs

441.39

Time (sec)

17,376,069.07

Complexity by file

File

LOC

Functions

Cyclomatic Avg

Cyclomatic Max

Cognitive Avg

Cognitive Max

Maintainability

media/deviceManager.js

1,286

112

2.69

29

1.80

28

0.0

media/loggerPanel.js

1,924

167

2.74

19

1.92

29

0.0

media/loggerPanel/messaging.js

146

4

12.25

45

16.00

63

19.6

media/loggerPanel/rendering.js

109

9

3.56

14

3.56

22

25.9

media/loggerPanel/state.js

256

13

4.15

29

3.23

28

11.9

media/sftpExplorer.js

2,046

204

3.04

31

2.26

37

0.0

media/sidebarView.js

364

40

1.90

10

0.93

9

8.6

src/configuration.ts

251

23

3.35

16

2.83

22

8.7

src/deviceColor.ts

25

3

1.33

2

0.33

1

50.8

src/deviceManagerPanel.ts

1,289

79

3.18

24

2.30

23

0.0

src/devicePing.ts

49

7

1.57

2

0.57

1

38.9

src/deviceTree.ts

156

12

1.58

5

0.58

4

23.7

src/extension.ts

888

67

3.28

24

2.66

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/localization/cs.ts

315

0

0.00

0

0.00

0

17.3

src/localization/de.ts

326

0

0.00

0

0.00

0

16.9

src/localization/en.ts

313

0

0.00

0

0.00

0

17.3

src/localization/es.ts

322

0

0.00

0

0.00

0

17.0

src/localization/fr.ts

329

0

0.00

0

0.00

0

16.8

src/localization/hu.ts

324

0

0.00

0

0.00

0

17.0

src/localization/index.ts

126

12

2.25

8

1.25

7

24.1

src/localization/it.ts

319

0

0.00

0

0.00

0

17.1

src/localization/ja.ts

316

0

0.00

0

0.00

0

17.2

src/localization/ko.ts

309

0

0.00

0

0.00

0

17.4

src/localization/pl.ts

325

0

0.00

0

0.00

0

17.0

src/localization/pt-br.ts

323

0

0.00

0

0.00

0

17.0

src/localization/ru.ts

321

0

0.00

0

0.00

0

17.1

src/localization/tr.ts

319

0

0.00

0

0.00

0

17.1

src/localization/zh-cn.ts

307

0

0.00

0

0.00

0

17.5

src/localization/zh-tw.ts

307

0

0.00

0

0.00

0

17.5

src/logPanel/autoSaveManager.ts

87

10

2.20

5

1.40

6

32.5

src/logPanel/html.ts

201

2

1.50

2

0.50

1

20.2

src/logPanel/index.ts

6

0

0.00

0

0.00

0

74.0

src/logPanel/logPanel.ts

544

43

2.09

14

1.23

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

130

8

2.88

4

2.00

4

25.9

src/logSession/connectionManager.ts

220

19

1.79

4

0.79

3

19.1

src/logSession/errors.ts

19

1

1.00

1

0.00

0

55.1

src/logSession/fingerprintPersistence.ts

124

7

4.00

7

3.29

6

25.2

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

317

28

2.46

12

1.57

14

10.9

src/logSession/reconnectionController.ts

56

2

5.00

9

8.00

16

38.1

src/logSession/types.ts

16

0

0.00

0

0.00

0

55.6

src/passwordManager.ts

413

28

2.21

15

1.36

18

10.3

src/sftpExplorer.ts

3,470

206

3.08

30

2.59

40

0.0

src/sftpSearch.ts

158

8

4.38

20

5.13

33

21.1

src/sidebarView.ts

276

12

2.08

10

1.17

10

15.4

src/sshCommandExecution.ts

111

10

2.50

6

1.50

5

26.6

src/sshCommandRunner.ts

402

37

2.57

12

1.81

14

2.5

src/sshTerminal.ts

548

45

2.91

18

2.16

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

303

53

1.30

3

0.34

3

13.5

tests/integration/logSession.integration.test.ts

67

15

1.00

1

0.00

0

35.3

tests/integration/sidebar.integration.test.ts

224

52

1.04

2

0.04

1

13.7

tests/mocks/ssh.ts

93

16

1.19

3

0.19

2

28.7

tests/mocks/vscode.ts

494

102

1.15

3

0.15

2

0.0

tests/unit/authenticationProvider.test.ts

231

20

1.05

2

0.05

1

18.4

tests/unit/autoSaveManager.test.ts

107

16

1.00

1

0.00

0

26.8

tests/unit/configuration.test.ts

345

21

1.05

2

0.05

1

12.3

tests/unit/connectionManager.test.ts

483

90

1.06

4

0.06

3

0.0

tests/unit/deviceManagerPanel.test.ts

922

62

1.10

2

0.10

1

0.0

tests/unit/devicePing.test.ts

72

19

1.00

1

0.00

0

31.9

tests/unit/deviceTree.test.ts

95

6

1.00

1

0.00

0

30.6

tests/unit/extensionPasswordCommands.test.ts

218

19

1.11

2

0.11

1

24.4

tests/unit/extensionSftpPresetMigration.test.ts

52

5

1.00

1

0.00

0

39.0

tests/unit/extensionWebBrowserCommands.test.ts

471

27

1.11

2

0.11

1

15.6

tests/unit/fingerprintPersistence.test.ts

138

10

1.00

1

0.00

0

25.5

tests/unit/hostEndpoints.test.ts

38

2

1.00

1

0.00

0

44.9

tests/unit/hostKeyVerifier.test.ts

89

8

1.00

1

0.00

0

36.6

tests/unit/localization.test.ts

67

10

2.20

5

1.30

4

35.6

tests/unit/loggerPanelMessaging.test.ts

42

6

1.33

2

0.33

1

40.7

tests/unit/logPanel.test.ts

429

60

1.00

1

0.00

0

3.4

tests/unit/logSession.test.ts

384

64

1.00

1

0.00

0

13.5

tests/unit/messageParser.test.ts

112

6

1.00

1

0.00

0

29.3

tests/unit/packageNls.test.ts

80

6

1.50

3

0.67

3

33.3

tests/unit/passwordManager.test.ts

188

22

1.05

2

0.05

1

25.3

tests/unit/reconnectionController.test.ts

67

11

1.00

1

0.00

0

34.4

tests/unit/sftpExplorer.test.ts

3,108

187

1.17

4

0.18

4

0.0

tests/unit/sftpSearch.test.ts

131

11

1.00

1

0.00

0

26.4

tests/unit/sidebarView.test.ts

132

13

1.00

1

0.00

0

25.8

tests/unit/sshCommandRunner.test.ts

486

56

1.14

4

0.14

3

2.8

tests/unit/sshTerminal.test.ts

720

53

1.17

3

0.17

2

0.0

tests/unit/stateStore.test.ts

105

8

1.00

1

0.00

0

30.4

vitest.config.ts

25

0

0.00

0

0.00

0

50.8

Halstead metrics by file

File

Vocabulary

Length

Volume

Difficulty

Effort

Bugs

Time (sec)

media/deviceManager.js

476

5,337

47,471.64

97.31

4,619,297.07

15.82

256,627.62

media/loggerPanel.js

443

3,406

29,942.70

71.06

2,127,774.96

9.98

118,209.72

media/loggerPanel/messaging.js

141

892

6,368.48

48.59

309,426.32

2.12

17,190.35

media/loggerPanel/rendering.js

120

611

4,220.11

52.24

220,461.68

1.41

12,247.87

media/loggerPanel/state.js

195

1,431

10,886.09

56.14

611,147.73

3.63

33,952.65

media/sftpExplorer.js

350

1,416

11,966.91

29.49

352,948.96

3.99

19,608.28

media/sidebarView.js

137

575

4,081.37

29.86

121,868.90

1.36

6,770.49

src/configuration.ts

188

1,585

11,974.02

90.40

1,082,434.36

3.99

60,135.24

src/deviceColor.ts

40

74

393.82

14.00

5,513.52

0.13

306.31

src/deviceManagerPanel.ts

490

3,513

31,394.41

86.67

2,721,029.21

10.46

151,168.29

src/devicePing.ts

80

281

1,776.46

32.73

58,138.75

0.59

3,229.93

src/deviceTree.ts

149

688

4,966.79

49.19

244,306.96

1.66

13,572.61

src/extension.ts

247

1,693

13,456.59

84.08

1,131,369.45

4.49

62,853.86

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/localization/cs.ts

563

1,182

10,799.92

6.77

73,135.12

3.60

4,063.06

src/localization/de.ts

566

1,182

10,808.99

6.74

72,799.40

3.60

4,044.41

src/localization/en.ts

562

1,171

10,696.41

4.64

49,613.56

3.57

2,756.31

src/localization/es.ts

565

1,182

10,805.97

6.75

72,910.94

3.60

4,050.61

src/localization/fr.ts

566

1,182

10,808.99

6.74

72,799.40

3.60

4,044.41

src/localization/hu.ts

564

1,182

10,802.95

6.76

73,022.84

3.60

4,056.82

src/localization/index.ts

155

817

5,944.59

51.49

306,064.77

1.98

17,003.60

src/localization/it.ts

565

1,182

10,805.97

6.75

72,910.94

3.60

4,050.61

src/localization/ja.ts

563

1,182

10,799.92

6.77

73,135.12

3.60

4,063.06

src/localization/ko.ts

555

1,182

10,775.52

6.87

74,046.90

3.59

4,113.72

src/localization/pl.ts

564

1,182

10,802.95

6.76

73,022.84

3.60

4,056.82

src/localization/pt-br.ts

566

1,182

10,808.99

6.74

72,799.40

3.60

4,044.41

src/localization/ru.ts

565

1,182

10,805.97

6.75

72,910.94

3.60

4,050.61

src/localization/tr.ts

565

1,182

10,805.97

6.75

72,910.94

3.60

4,050.61

src/localization/zh-cn.ts

560

1,182

10,790.81

6.81

73,474.19

3.60

4,081.90

src/localization/zh-tw.ts

564

1,182

10,802.95

6.76

73,022.84

3.60

4,056.82

src/logPanel/autoSaveManager.ts

76

243

1,518.25

33.72

51,194.53

0.51

2,844.14

src/logPanel/html.ts

254

1,817

14,515.44

57.03

827,775.96

4.84

45,987.55

src/logPanel/index.ts

7

7

19.65

2.50

49.13

0.01

2.73

src/logPanel/logPanel.ts

118

404

2,780.59

29.46

81,924.36

0.93

4,551.35

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

139

564

4,015.08

41.93

168,332.34

1.34

9,351.80

src/logSession/errors.ts

31

52

257.62

11.08

2,855.27

0.09

158.63

src/logSession/fingerprintPersistence.ts

104

619

4,147.57

77.00

319,363.06

1.38

17,742.39

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

147

554

3,988.62

32.80

130,812.57

1.33

7,267.36

src/logSession/reconnectionController.ts

74

260

1,614.46

63.54

102,577.87

0.54

5,698.77

src/logSession/types.ts

30

80

392.55

8.50

3,336.69

0.13

185.37

src/passwordManager.ts

128

420

2,940.00

23.96

70,444.71

0.98

3,913.59

src/sftpExplorer.ts

916

8,565

84,272.78

128.53

10,831,228.34

28.09

601,734.91

src/sftpSearch.ts

146

788

5,665.58

55.85

316,417.40

1.89

17,578.74

src/sidebarView.ts

216

1,284

9,957.28

60.00

597,436.53

3.32

33,190.92

src/sshCommandExecution.ts

134

605

4,274.98

44.69

191,062.64

1.42

10,614.59

src/sshCommandRunner.ts

215

1,252

9,700.74

93.25

904,545.58

3.23

50,252.53

src/sshTerminal.ts

146

416

2,990.97

29.06

86,910.09

1.00

4,828.34

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

162

1,249

9,167.47

44.00

403,368.80

3.06

22,409.38

tests/mocks/ssh.ts

109

724

4,900.17

66.63

326,473.52

1.63

18,137.42

tests/mocks/vscode.ts

348

3,796

32,049.41

121.13

3,882,041.64

10.68

215,668.98

tests/unit/authenticationProvider.test.ts

137

1,087

7,715.56

36.53

281,856.95

2.57

15,658.72

tests/unit/autoSaveManager.test.ts

112

996

6,780.13

44.86

304,181.09

2.26

16,898.95

tests/unit/configuration.test.ts

209

2,008

15,476.38

57.49

889,675.53

5.16

49,426.42

tests/unit/connectionManager.test.ts

195

3,174

24,145.67

92.72

2,238,700.80

8.05

124,372.27

tests/unit/deviceManagerPanel.test.ts

264

2,359

18,976.73

67.00

1,271,524.59

6.33

70,640.26

tests/unit/devicePing.test.ts

93

577

3,773.09

34.57

130,429.02

1.26

7,246.06

tests/unit/deviceTree.test.ts

109

647

4,379.02

23.96

104,926.07

1.46

5,829.23

tests/unit/extensionPasswordCommands.test.ts

74

209

1,297.78

14.81

19,226.31

0.43

1,068.13

tests/unit/extensionSftpPresetMigration.test.ts

69

302

1,844.77

17.48

32,246.66

0.61

1,791.48

tests/unit/extensionWebBrowserCommands.test.ts

93

217

1,419.00

16.58

23,533.53

0.47

1,307.42

tests/unit/fingerprintPersistence.test.ts

106

894

6,014.76

41.43

249,177.77

2.00

13,843.21

tests/unit/hostEndpoints.test.ts

47

148

822.08

10.82

8,893.40

0.27

494.08

tests/unit/hostKeyVerifier.test.ts

46

123

679.40

10.06

6,836.44

0.23

379.80

tests/unit/localization.test.ts

76

194

1,212.10

20.54

24,900.71

0.40

1,383.37

tests/unit/loggerPanelMessaging.test.ts

71

299

1,838.77

26.69

49,082.74

0.61

2,726.82

tests/unit/logPanel.test.ts

291

3,334

27,288.37

65.36

1,783,580.84

9.10

99,087.82

tests/unit/logSession.test.ts

66

194

1,172.61

12.73

14,932.10

0.39

829.56

tests/unit/messageParser.test.ts

70

653

4,002.42

25.50

102,061.76

1.33

5,670.10

tests/unit/packageNls.test.ts

102

394

2,628.94

27.01

71,017.27

0.88

3,945.40

tests/unit/passwordManager.test.ts

73

221

1,367.95

16.56

22,650.12

0.46

1,258.34

tests/unit/reconnectionController.test.ts

70

482

2,954.31

30.60

90,402.02

0.98

5,022.33

tests/unit/sftpExplorer.test.ts

515

5,984

53,906.44

117.55

6,336,766.25

17.97

352,042.57

tests/unit/sftpSearch.test.ts

121

742

5,133.80

22.48

115,387.01

1.71

6,410.39

tests/unit/sidebarView.test.ts

123

781

5,422.10

35.11

190,388.51

1.81

10,577.14

tests/unit/sshCommandRunner.test.ts

262

2,422

19,456.95

83.36

1,622,010.30

6.49

90,111.68

tests/unit/sshTerminal.test.ts

398

5,048

43,597.68

138.82

6,052,080.46

14.53

336,226.69

tests/unit/stateStore.test.ts

84

487

3,113.06

31.11

96,836.54

1.04

5,379.81

vitest.config.ts

42

86

463.74

6.95

3,222.19

0.15

179.01

Class coupling and inheritance by file

Class

File

DIT

CBO

DeviceManagerPanel

src/deviceManagerPanel.ts

1

23

DeviceItem

src/deviceTree.ts

2

2

DeviceTreeDataProvider

src/deviceTree.ts

1

10

GroupItem

src/deviceTree.ts

2

2

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

9

HostKeyMismatchError

src/sftpExplorer.ts

2

1

SftpExplorerPanel

src/sftpExplorer.ts

1

40

SidebarViewProvider

src/sidebarView.ts

1

12

SshCommandError

src/sshCommandRunner.ts

2

1

SshCommandRunner

src/sshCommandRunner.ts

1

18

SshTerminalSession

src/sshTerminal.ts

1

19

MockSftpWrapper

tests/mocks/ssh.ts

1

5

MockSshChannel

tests/mocks/ssh.ts

2

1

MockSshClient

tests/mocks/ssh.ts

2

9

MockWriteStream

tests/unit/autoSaveManager.test.ts

2

1

MockLogSession

tests/unit/logPanel.test.ts

1

1

MemorySftp

tests/unit/sftpExplorer.test.ts

1

8

MockClient

tests/unit/sshTerminal.test.ts

2

7

MockEmitter

tests/unit/sshTerminal.test.ts

1

2

MockSftpSession

tests/unit/sshTerminal.test.ts

1

2

MockShellChannel

tests/unit/sshTerminal.test.ts

2

1

Complexity by function (outside thresholds)

Function

Class

Location

LOC

Cyclomatic

Cognitive

toViewDevice

media/deviceManager.js:140

38

29

28

renderSshCommandsEditor

media/deviceManager.js:513

208

3

2

<anonymous>

media/deviceManager.js:572

150

7

6

createInput

media/deviceManager.js:863

112

16

15

buildHelpJson

media/deviceManager.js:1274

71

10

9

<anonymous>

media/loggerPanel.js:26

1,901

11

10

handleLogLine

media/loggerPanel.js:631

53

19

29

handleBookmarkAction

media/loggerPanel.js:1122

34

11

12

renderStatusText

media/loggerPanel.js:1352

50

14

20

registerMessageHandlers

media/loggerPanel/messaging.js:17

133

1

0

<anonymous>

media/loggerPanel/messaging.js:27

122

45

63

buildHighlightedContent

media/loggerPanel/rendering.js:64

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

2,041

3

2

handleTestCommand

media/sftpExplorer.js:423

47

18

20

selectNextQuickSearchMatch

media/sftpExplorer.js:578

35

10

10

<anonymous>

media/sftpExplorer.js:723

56

10

9

handleEntryClick

media/sftpExplorer.js:793

36

12

15

updateContextMenuOptions

media/sftpExplorer.js:884

36

11

10

buildModeFromDialog

media/sftpExplorer.js:1034

13

10

9

applyFindOptions

media/sftpExplorer.js:1227

17

10

9

openFindDialog

media/sftpExplorer.js:1284

29

11

10

handleListResponse

media/sftpExplorer.js:1449

34

13

18

deleteSelected

media/sftpExplorer.js:1678

33

13

13

<anonymous>

media/sftpExplorer.js:1934

79

31

37

<anonymous>

media/sftpExplorer.js:2063

38

11

11

<anonymous>

media/sftpExplorer.js:2184

49

17

24

<anonymous>

media/sidebarView.js:7

359

2

1

createDeviceCard

media/sidebarView.js:155

145

10

9

normalizeSshCommands

src/configuration.ts:55

32

16

22

applyDeviceDefaults

src/configuration.ts:168

31

12

11

buildHtml

DeviceManagerPanel

src/deviceManagerPanel.ts:214

238

1

0

saveConfiguration

DeviceManagerPanel

src/deviceManagerPanel.ts:472

118

8

11

getDefaultsFromConfiguration

DeviceManagerPanel

src/deviceManagerPanel.ts:798

18

11

10

normalizeDevice

DeviceManagerPanel

src/deviceManagerPanel.ts:919

54

24

23

<anonymous>

src/deviceManagerPanel.ts:1129

44

13

12

buildBastion

DeviceManagerPanel

src/deviceManagerPanel.ts:1306

22

14

13

migrateLegacyPasswords

src/extension.ts:97

137

24

31

<anonymous>

src/extension.ts:272

42

10

9

activate

src/extension.ts:355

566

2

1

buildLogPanelHtml

src/logPanel/html.ts:17

177

1

0

handleWebviewMessage

LogPanel

src/logPanel/logPanel.ts:160

43

14

14

parseWebviewMessage

src/logPanel/messageParser.ts:26

48

20

25

validateDeviceConfiguration

LogSession

src/logSession/logSession.ts:179

29

12

14

tryReuseStoredSecret

PasswordManager

src/passwordManager.ts:194

70

15

18

collectTestSearchEntries

SftpExplorerPanel

src/sftpExplorer.ts:538

53

18

40

handleTestMessage

SftpExplorerPanel

src/sftpExplorer.ts:594

57

20

21

handleMessage

SftpExplorerPanel

src/sftpExplorer.ts:652

192

30

36

copyEntry

SftpExplorerPanel

src/sftpExplorer.ts:1412

57

16

20

refreshRemoteViewsAfterReconnect

SftpExplorerPanel

src/sftpExplorer.ts:1665

19

10

9

applyPermissions

SftpExplorerPanel

src/sftpExplorer.ts:1973

44

10

12

createSftpConnection

SftpExplorerPanel

src/sftpExplorer.ts:2522

66

15

22

validateDeviceConfiguration

SftpExplorerPanel

src/sftpExplorer.ts:2598

29

12

14

getHtml

SftpExplorerPanel

src/sftpExplorer.ts:2991

732

2

1

compileSftpSearchCommand

src/sftpSearch.ts:89

61

20

33

<anonymous>

src/sidebarView.ts:139

39

10

10

run

SshCommandRunner

src/sshCommandRunner.ts:82

50

12

14

validateDeviceConfiguration

SshCommandRunner

src/sshCommandRunner.ts:141

29

12

14

start

SshTerminalSession

src/sshTerminal.ts:142

73

18

22

validateDeviceConfiguration

SshTerminalSession

src/sshTerminal.ts:231

29

12

14

<anonymous>

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

300

1

0

<anonymous>

tests/integration/sidebar.integration.test.ts:24

204

1

0

<anonymous>

tests/unit/authenticationProvider.test.ts:30

209

1

0

<anonymous>

tests/unit/configuration.test.ts:37

316

1

0

<anonymous>

tests/unit/connectionManager.test.ts:27

462

1

0

<anonymous>

tests/unit/deviceManagerPanel.test.ts:47

882

1

0

<anonymous>

tests/unit/deviceManagerPanel.test.ts:355

131

1

0

<anonymous>

tests/unit/deviceManagerPanel.test.ts:742

107

1

0

<anonymous>

tests/unit/extensionPasswordCommands.test.ts:77

153

1

0

<anonymous>

tests/unit/extensionWebBrowserCommands.test.ts:67

414

1

0

<anonymous>

tests/unit/extensionWebBrowserCommands.test.ts:211

108

1

0

<anonymous>

tests/unit/fingerprintPersistence.test.ts:25

118

1

0

<anonymous>

tests/unit/logPanel.test.ts:64

374

1

0

<anonymous>

tests/unit/logSession.test.ts:46

346

1

0

<anonymous>

tests/unit/messageParser.test.ts:5

110

1

0

<anonymous>

tests/unit/passwordManager.test.ts:42

153

1

0

<anonymous>

tests/unit/sftpExplorer.test.ts:314

2,823

1

0

<anonymous>

tests/unit/sftpExplorer.test.ts:756

111

1

0

<anonymous>

tests/unit/sftpExplorer.test.ts:880

163

4

3

<anonymous>

tests/unit/sftpExplorer.test.ts:1052

181

1

0

<anonymous>

tests/unit/sftpExplorer.test.ts:1593

201

2

1

<anonymous>

tests/unit/sftpExplorer.test.ts:2034

173

1

0

<anonymous>

tests/unit/sftpExplorer.test.ts:2402

153

1

0

<anonymous>

tests/unit/sftpExplorer.test.ts:2652

130

2

1

<anonymous>

tests/unit/sftpSearch.test.ts:9

125

1

0

<anonymous>

tests/unit/sidebarView.test.ts:16

121

1

0

<anonymous>

tests/unit/sshCommandRunner.test.ts:27

464

1

0

<anonymous>

tests/unit/sshTerminal.test.ts:215

528

1

0

<anonymous>

tests/unit/sshTerminal.test.ts:401

120

1

0

<anonymous>

tests/unit/stateStore.test.ts:8

101

1

0

Halstead metrics by function (outside thresholds)

Function

Class

Location

Vocabulary

Length

Volume

Difficulty

Effort

Bugs

Time (sec)

toViewDevice

media/deviceManager.js:140

57

324

1,889.86

26.79

50,621.15

0.63

2,812.29

renderSshCommandsEditor

media/deviceManager.js:513

137

1,481

10,512.19

74.50

783,109.60

3.50

43,506.09

<anonymous>

media/deviceManager.js:572

104

1,073

7,189.57

69.17

497,278.72

2.40

27,626.60

createInput

media/deviceManager.js:863

104

844

5,655.17

45.30

256,179.25

1.89

14,232.18

buildHelpJson

media/deviceManager.js:1274

104

358

2,398.76

19.72

47,302.33

0.80

2,627.91

<anonymous>

media/loggerPanel.js:26

435

3,366

29,502.56

68.17

2,011,329.35

9.83

111,740.52

handleLogLine

media/loggerPanel.js:631

69

392

2,394.54

30.63

73,332.84

0.80

4,074.05

handleBookmarkAction

media/loggerPanel.js:1122

44

133

726.10

16.89

12,264.85

0.24

681.38

renderStatusText

media/loggerPanel.js:1352

65

273

1,644.11

34.11

56,072.68

0.55

3,115.15

registerMessageHandlers

media/loggerPanel/messaging.js:17

127

836

5,842.54

46.02

268,846.28

1.95

14,935.90

<anonymous>

media/loggerPanel/messaging.js:27

121

809

5,597.36

43.37

242,770.62

1.87

13,487.26

buildHighlightedContent

media/loggerPanel/rendering.js:64

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

350

1,415

11,958.46

29.49

352,699.71

3.99

19,594.43

handleTestCommand

media/sftpExplorer.js:423

68

207

1,260.10

16.87

21,253.77

0.42

1,180.76

selectNextQuickSearchMatch

media/sftpExplorer.js:578

63

251

1,500.30

37.53

56,305.27

0.50

3,128.07

<anonymous>

media/sftpExplorer.js:723

50

161

908.66

17.52

15,915.33

0.30

884.19

handleEntryClick

media/sftpExplorer.js:793

72

275

1,696.73

28.54

48,430.56

0.57

2,690.59

updateContextMenuOptions

media/sftpExplorer.js:884

61

258

1,530.13

31.78

48,633.33

0.51

2,701.85

buildModeFromDialog

media/sftpExplorer.js:1034

36

122

630.73

16.39

10,338.50

0.21

574.36

applyFindOptions

media/sftpExplorer.js:1227

52

180

1,026.08

11.27

11,562.16

0.34

642.34

openFindDialog

media/sftpExplorer.js:1284

49

153

859.05

16.20

13,919.30

0.29

773.29

handleListResponse

media/sftpExplorer.js:1449

54

269

1,548.06

31.82

49,256.61

0.52

2,736.48

deleteSelected

media/sftpExplorer.js:1678

48

113

631.10

19.46

12,282.19

0.21

682.34

<anonymous>

media/sftpExplorer.js:1934

63

388

2,319.18

27.21

63,103.40

0.77

3,505.74

<anonymous>

media/sftpExplorer.js:2063

57

209

1,219.07

24.51

29,884.73

0.41

1,660.26

<anonymous>

media/sftpExplorer.js:2184

67

249

1,510.46

25.00

37,761.41

0.50

2,097.86

<anonymous>

media/sidebarView.js:7

137

574

4,074.27

29.86

121,656.95

1.36

6,758.72

createDeviceCard

media/sidebarView.js:155

69

319

1,948.62

21.09

41,089.64

0.65

2,282.76

normalizeSshCommands

src/configuration.ts:55

53

212

1,214.32

44.35

53,852.41

0.40

2,991.80

applyDeviceDefaults

src/configuration.ts:168

52

223

1,271.20

28.79

36,598.20

0.42

2,033.23

buildHtml

DeviceManagerPanel

src/deviceManagerPanel.ts:214

239

1,998

15,785.93

42.53

671,379.35

5.26

37,298.85

saveConfiguration

DeviceManagerPanel

src/deviceManagerPanel.ts:472

114

586

4,004.07

43.38

173,715.19

1.33

9,650.84

getDefaultsFromConfiguration

DeviceManagerPanel

src/deviceManagerPanel.ts:798

54

190

1,093.43

18.14

19,830.82

0.36

1,101.71

normalizeDevice

DeviceManagerPanel

src/deviceManagerPanel.ts:919

61

431

2,556.15

37.56

96,011.40

0.85

5,333.97

<anonymous>

src/deviceManagerPanel.ts:1129

45

149

818.29

16.48

13,488.52

0.27

749.36

buildBastion

DeviceManagerPanel

src/deviceManagerPanel.ts:1306

44

146

797.08

21.67

17,270.00

0.27

959.44

migrateLegacyPasswords

src/extension.ts:97

82

364

2,314.15

50.56

117,003.37

0.77

6,500.19

<anonymous>

src/extension.ts:272

58

287

1,681.24

39.00

65,568.38

0.56

3,642.69

activate

src/extension.ts:355

203

1,473

11,291.04

70.95

801,150.60

3.76

44,508.37

buildLogPanelHtml

src/logPanel/html.ts:17

247

1,792

14,243.47

50.46

718,737.52

4.75

39,929.86

handleWebviewMessage

LogPanel

src/logPanel/logPanel.ts:160

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:179

41

208

1,114.37

38.85

43,293.31

0.37

2,405.18

tryReuseStoredSecret

PasswordManager

src/passwordManager.ts:194

56

131

760.76

23.28

17,707.43

0.25

983.75

collectTestSearchEntries

SftpExplorerPanel

src/sftpExplorer.ts:538

77

345

2,162.04

44.28

95,733.18

0.72

5,318.51

handleTestMessage

SftpExplorerPanel

src/sftpExplorer.ts:594

66

269

1,625.94

21.23

34,524.17

0.54

1,918.01

handleMessage

SftpExplorerPanel

src/sftpExplorer.ts:652

129

990

6,941.11

56.46

391,925.10

2.31

21,773.62

copyEntry

SftpExplorerPanel

src/sftpExplorer.ts:1412

66

458

2,768.33

58.95

163,185.92

0.92

9,065.88

refreshRemoteViewsAfterReconnect

SftpExplorerPanel

src/sftpExplorer.ts:1665

44

170

928.10

34.50

32,019.57

0.31

1,778.86

applyPermissions

SftpExplorerPanel

src/sftpExplorer.ts:1973

62

287

1,708.85

40.78

69,689.22

0.57

3,871.62

createSftpConnection

SftpExplorerPanel

src/sftpExplorer.ts:2522

76

240

1,499.50

28.37

42,540.24

0.50

2,363.35

validateDeviceConfiguration

SftpExplorerPanel

src/sftpExplorer.ts:2598

40

210

1,117.60

41.45

46,321.78

0.37

2,573.43

getHtml

SftpExplorerPanel

src/sftpExplorer.ts:2991

444

4,369

38,422.80

56.29

2,162,654.91

12.81

120,147.49

compileSftpSearchCommand

src/sftpSearch.ts:89

93

308

2,014.06

27.87

56,126.21

0.67

3,118.12

<anonymous>

src/sidebarView.ts:139

47

181

1,005.38

13.58

13,648.80

0.34

758.27

run

SshCommandRunner

src/sshCommandRunner.ts:82

80

275

1,738.53

40.44

70,309.40

0.58

3,906.08

validateDeviceConfiguration

SshCommandRunner

src/sshCommandRunner.ts:141

40

210

1,117.60

41.45

46,321.78

0.37

2,573.43

start

SshTerminalSession

src/sshTerminal.ts:142

90

367

2,382.51

47.60

113,407.48

0.79

6,300.42

validateDeviceConfiguration

SshTerminalSession

src/sshTerminal.ts:231

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

<anonymous>

tests/integration/sidebar.integration.test.ts:24

139

1,102

7,845.07

39.94

313,339.35

2.62

17,407.74

<anonymous>

tests/unit/authenticationProvider.test.ts:30

115

929

6,359.46

33.18

210,978.48

2.12

11,721.03

<anonymous>

tests/unit/configuration.test.ts:37

188

1,839

13,892.89

52.91

735,071.89

4.63

40,837.33

<anonymous>

tests/unit/connectionManager.test.ts:27

179

3,052

22,840.61

90.77

2,073,241.78

7.61

115,180.10

<anonymous>

tests/unit/deviceManagerPanel.test.ts:47

238

2,163

17,076.49

68.02

1,161,498.73

5.69

64,527.71

<anonymous>

tests/unit/deviceManagerPanel.test.ts:355

88

394

2,545.02

21.94

55,831.29

0.85

3,101.74

<anonymous>

tests/unit/deviceManagerPanel.test.ts:742

132

442

3,113.62

15.54

48,372.34

1.04

2,687.35

<anonymous>

tests/unit/extensionPasswordCommands.test.ts:77

115

1,192

8,159.82

49.44

403,428.72

2.72

22,412.71

<anonymous>

tests/unit/extensionWebBrowserCommands.test.ts:67

269

3,206

25,877.11

63.38

1,640,028.85

8.63

91,112.71

<anonymous>

tests/unit/extensionWebBrowserCommands.test.ts:211

117

808

5,551.25

37.55

208,440.66

1.85

11,580.04

<anonymous>

tests/unit/fingerprintPersistence.test.ts:25

89

794

5,141.73

38.26

196,727.15

1.71

10,929.29

<anonymous>

tests/unit/logPanel.test.ts:64

252

3,008

23,995.66

53.21

1,276,760.12

8.00

70,931.12

<anonymous>

tests/unit/logSession.test.ts:46

82

300

1,907.27

22.29

42,504.78

0.64

2,361.38

<anonymous>

tests/unit/messageParser.test.ts:5

64

629

3,774.00

22.81

86,099.00

1.26

4,783.28

<anonymous>

tests/unit/passwordManager.test.ts:42

132

1,246

8,777.32

46.95

412,090.92

2.93

22,893.94

<anonymous>

tests/unit/sftpExplorer.test.ts:314

607

8,962

82,858.64

125.68

10,413,925.83

27.62

578,551.44

<anonymous>

tests/unit/sftpExplorer.test.ts:756

116

1,033

7,084.29

63.66

451,005.95

2.36

25,055.89

<anonymous>

tests/unit/sftpExplorer.test.ts:880

185

1,437

10,822.60

53.90

583,337.88

3.61

32,407.66

<anonymous>

tests/unit/sftpExplorer.test.ts:1052

164

1,490

10,962.75

72.98

800,065.13

3.65

44,448.06

<anonymous>

tests/unit/sftpExplorer.test.ts:1593

156

1,507

10,979.10

52.48

576,193.29

3.66

32,010.74

<anonymous>

tests/unit/sftpExplorer.test.ts:2034

160

1,448

10,602.15

67.68

717,584.67

3.53

39,865.82

<anonymous>

tests/unit/sftpExplorer.test.ts:2402

179

1,160

8,681.23

45.94

398,793.83

2.89

22,155.21

<anonymous>

tests/unit/sftpExplorer.test.ts:2652

125

696

4,848.19

21.01

101,879.24

1.62

5,659.96

<anonymous>

tests/unit/sftpSearch.test.ts:9

115

713

4,880.83

19.88

97,006.58

1.63

5,389.25

<anonymous>

tests/unit/sidebarView.test.ts:16

108

695

4,694.65

33.14

155,594.01

1.56

8,644.11

<anonymous>

tests/unit/sshCommandRunner.test.ts:27

236

2,255

17,775.36

81.51

1,448,875.10

5.93

80,493.06

<anonymous>

tests/unit/sshTerminal.test.ts:215

319

3,682

30,624.71

97.31

2,980,041.67

10.21

165,557.87

<anonymous>

tests/unit/sshTerminal.test.ts:401

93

791

5,172.47

38.11

197,145.18

1.72

10,952.51

<anonymous>

tests/unit/stateStore.test.ts:8

75

435

2,709.54

30.51

82,666.41

0.90

4,592.58

Class coupling and inheritance by function (outside thresholds)

Function

Class

Location

DIT

CBO

toViewDevice

media/deviceManager.js:140

1

0

renderSshCommandsEditor

media/deviceManager.js:513

1

0

<anonymous>

media/deviceManager.js:572

1

0

createInput

media/deviceManager.js:863

1

0

buildHelpJson

media/deviceManager.js:1274

1

0

<anonymous>

media/loggerPanel.js:26

1

0

handleLogLine

media/loggerPanel.js:631

1

0

handleBookmarkAction

media/loggerPanel.js:1122

1

0

renderStatusText

media/loggerPanel.js:1352

1

0

registerMessageHandlers

media/loggerPanel/messaging.js:17

1

0

<anonymous>

media/loggerPanel/messaging.js:27

1

0

buildHighlightedContent

media/loggerPanel/rendering.js:64

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:423

1

0

selectNextQuickSearchMatch

media/sftpExplorer.js:578

1

0

<anonymous>

media/sftpExplorer.js:723

1

0

handleEntryClick

media/sftpExplorer.js:793

1

0

updateContextMenuOptions

media/sftpExplorer.js:884

1

0

buildModeFromDialog

media/sftpExplorer.js:1034

1

0

applyFindOptions

media/sftpExplorer.js:1227

1

0

openFindDialog

media/sftpExplorer.js:1284

1

0

handleListResponse

media/sftpExplorer.js:1449

1

0

deleteSelected

media/sftpExplorer.js:1678

1

0

<anonymous>

media/sftpExplorer.js:1934

1

0

<anonymous>

media/sftpExplorer.js:2063

1

0

<anonymous>

media/sftpExplorer.js:2184

1

0

<anonymous>

media/sidebarView.js:7

1

0

createDeviceCard

media/sidebarView.js:155

1

0

normalizeSshCommands

src/configuration.ts:55

1

0

applyDeviceDefaults

src/configuration.ts:168

1

0

buildHtml

DeviceManagerPanel

src/deviceManagerPanel.ts:214

1

23

saveConfiguration

DeviceManagerPanel

src/deviceManagerPanel.ts:472

1

23

getDefaultsFromConfiguration

DeviceManagerPanel

src/deviceManagerPanel.ts:798

1

23

normalizeDevice

DeviceManagerPanel

src/deviceManagerPanel.ts:919

1

23

<anonymous>

src/deviceManagerPanel.ts:1129

1

0

buildBastion

DeviceManagerPanel

src/deviceManagerPanel.ts:1306

1

23

migrateLegacyPasswords

src/extension.ts:97

1

0

<anonymous>

src/extension.ts:272

1

0

activate

src/extension.ts:355

1

0

buildLogPanelHtml

src/logPanel/html.ts:17

1

0

handleWebviewMessage

LogPanel

src/logPanel/logPanel.ts:160

1

17

parseWebviewMessage

src/logPanel/messageParser.ts:26

1

0

validateDeviceConfiguration

LogSession

src/logSession/logSession.ts:179

1

21

tryReuseStoredSecret

PasswordManager

src/passwordManager.ts:194

1

9

collectTestSearchEntries

SftpExplorerPanel

src/sftpExplorer.ts:538

1

40

handleTestMessage

SftpExplorerPanel

src/sftpExplorer.ts:594

1

40

handleMessage

SftpExplorerPanel

src/sftpExplorer.ts:652

1

40

copyEntry

SftpExplorerPanel

src/sftpExplorer.ts:1412

1

40

refreshRemoteViewsAfterReconnect

SftpExplorerPanel

src/sftpExplorer.ts:1665

1

40

applyPermissions

SftpExplorerPanel

src/sftpExplorer.ts:1973

1

40

createSftpConnection

SftpExplorerPanel

src/sftpExplorer.ts:2522

1

40

validateDeviceConfiguration

SftpExplorerPanel

src/sftpExplorer.ts:2598

1

40

getHtml

SftpExplorerPanel

src/sftpExplorer.ts:2991

1

40

compileSftpSearchCommand

src/sftpSearch.ts:89

1

0

<anonymous>

src/sidebarView.ts:139

1

0

run

SshCommandRunner

src/sshCommandRunner.ts:82

1

18

validateDeviceConfiguration

SshCommandRunner

src/sshCommandRunner.ts:141

1

18

start

SshTerminalSession

src/sshTerminal.ts:142

1

19

validateDeviceConfiguration

SshTerminalSession

src/sshTerminal.ts:231

1

19

<anonymous>

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

1

0

<anonymous>

tests/integration/sidebar.integration.test.ts:24

1

0

<anonymous>

tests/unit/authenticationProvider.test.ts:30

1

0

<anonymous>

tests/unit/configuration.test.ts:37

1

0

<anonymous>

tests/unit/connectionManager.test.ts:27

1

0

<anonymous>

tests/unit/deviceManagerPanel.test.ts:47

1

0

<anonymous>

tests/unit/deviceManagerPanel.test.ts:355

1

0

<anonymous>

tests/unit/deviceManagerPanel.test.ts:742

1

0

<anonymous>

tests/unit/extensionPasswordCommands.test.ts:77

1

0

<anonymous>

tests/unit/extensionWebBrowserCommands.test.ts:67

1

0

<anonymous>

tests/unit/extensionWebBrowserCommands.test.ts:211

1

0

<anonymous>

tests/unit/fingerprintPersistence.test.ts:25

1

0

<anonymous>

tests/unit/logPanel.test.ts:64

1

0

<anonymous>

tests/unit/logSession.test.ts:46

1

0

<anonymous>

tests/unit/messageParser.test.ts:5

1

0

<anonymous>

tests/unit/passwordManager.test.ts:42

1

0

<anonymous>

tests/unit/sftpExplorer.test.ts:314

1

0

<anonymous>

tests/unit/sftpExplorer.test.ts:756

1

0

<anonymous>

tests/unit/sftpExplorer.test.ts:880

1

0

<anonymous>

tests/unit/sftpExplorer.test.ts:1052

1

0

<anonymous>

tests/unit/sftpExplorer.test.ts:1593

1

0

<anonymous>

tests/unit/sftpExplorer.test.ts:2034

1

0

<anonymous>

tests/unit/sftpExplorer.test.ts:2402

1

0

<anonymous>

tests/unit/sftpExplorer.test.ts:2652

1

0

<anonymous>

tests/unit/sftpSearch.test.ts:9

1

0

<anonymous>

tests/unit/sidebarView.test.ts:16

1

0

<anonymous>

tests/unit/sshCommandRunner.test.ts:27

1

0

<anonymous>

tests/unit/sshTerminal.test.ts:215

1

0

<anonymous>

tests/unit/sshTerminal.test.ts:401

1

0

<anonymous>

tests/unit/stateStore.test.ts:8

1

0

Generated on 2026-06-06T21:53:09.934Z.


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.

The target is to reach more than 80 percent of code being tested per file.

Overall coverage

Metric

Coverage

Lines

90.9% (3215/3536)

Statements

91.0% (3247/3570)

Functions

91.5% (634/693)

Branches

83.9% (1902/2268)

Coverage by file

File

Lines

Statements

Functions

Branches

src/configuration.ts

100.0% (97/97)

100.0% (98/98)

100.0% (23/23)

88.0% (88/100)

src/deviceColor.ts

100.0% (10/10)

100.0% (10/10)

100.0% (3/3)

100.0% (2/2)

src/deviceManagerPanel.ts

90.7% (311/343)

90.8% (316/348)

97.5% (77/79)

82.6% (256/310)

src/devicePing.ts

100.0% (18/18)

100.0% (20/20)

100.0% (7/7)

100.0% (8/8)

src/deviceTree.ts

100.0% (36/36)

100.0% (40/40)

100.0% (12/12)

100.0% (13/13)

src/extension.ts

87.9% (400/455)

88.0% (403/458)

85.1% (57/67)

80.1% (213/266)

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)

100.0% (4/4)

src/localization/cs.ts

100.0% (1/1)

100.0% (1/1)

100.0% (0/0)

100.0% (0/0)

src/localization/de.ts

100.0% (1/1)

100.0% (1/1)

100.0% (0/0)

100.0% (0/0)

src/localization/en.ts

100.0% (1/1)

100.0% (1/1)

100.0% (0/0)

100.0% (0/0)

src/localization/es.ts

100.0% (1/1)

100.0% (1/1)

100.0% (0/0)

100.0% (0/0)

src/localization/fr.ts

100.0% (1/1)

100.0% (1/1)

100.0% (0/0)

100.0% (0/0)

src/localization/hu.ts

100.0% (1/1)

100.0% (1/1)

100.0% (0/0)

100.0% (0/0)

src/localization/index.ts

96.5% (28/29)

96.5% (28/29)

100.0% (12/12)

85.7% (30/35)

src/localization/it.ts

100.0% (1/1)

100.0% (1/1)

100.0% (0/0)

100.0% (0/0)

src/localization/ja.ts

100.0% (1/1)

100.0% (1/1)

100.0% (0/0)

100.0% (0/0)

src/localization/ko.ts

100.0% (1/1)

100.0% (1/1)

100.0% (0/0)

100.0% (0/0)

src/localization/pl.ts

100.0% (1/1)

100.0% (1/1)

100.0% (0/0)

100.0% (0/0)

src/localization/pt-br.ts

100.0% (1/1)

100.0% (1/1)

100.0% (0/0)

100.0% (0/0)

src/localization/ru.ts

100.0% (1/1)

100.0% (1/1)

100.0% (0/0)

100.0% (0/0)

src/localization/tr.ts

100.0% (1/1)

100.0% (1/1)

100.0% (0/0)

100.0% (0/0)

src/localization/zh-cn.ts

100.0% (1/1)

100.0% (1/1)

100.0% (0/0)

100.0% (0/0)

src/localization/zh-tw.ts

100.0% (1/1)

100.0% (1/1)

100.0% (0/0)

100.0% (0/0)

src/logPanel/autoSaveManager.ts

94.3% (33/35)

94.6% (35/37)

100.0% (10/10)

83.3% (20/24)

src/logPanel/html.ts

100.0% (15/15)

100.0% (16/16)

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

94.0% (187/199)

94.0% (189/201)

93.0% (40/43)

81.3% (61/75)

src/logPanel/messageParser.ts

96.2% (25/26)

96.3% (26/27)

100.0% (6/6)

97.7% (43/44)

src/logPanel/stateStore.ts

100.0% (19/19)

100.0% (21/21)

100.0% (10/10)

100.0% (2/2)

src/logSession/authenticationProvider.ts

100.0% (42/42)

100.0% (42/42)

100.0% (8/8)

93.1% (27/29)

src/logSession/connectionManager.ts

93.0% (67/72)

93.0% (67/72)

94.7% (18/19)

86.7% (26/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

94.6% (35/37)

94.6% (35/37)

100.0% (7/7)

84.2% (32/38)

src/logSession/hostKeyVerifier.ts

97.6% (41/42)

97.6% (41/42)

100.0% (8/8)

90.9% (20/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

94.5% (121/128)

93.1% (122/131)

82.1% (23/28)

90.5% (67/74)

src/logSession/reconnectionController.ts

95.8% (23/24)

95.8% (23/24)

100.0% (2/2)

91.7% (11/12)

src/passwordManager.ts

95.5% (127/133)

95.5% (127/133)

96.3% (26/27)

84.7% (50/59)

src/sftpExplorer.ts

86.4% (1017/1177)

86.5% (1023/1183)

84.5% (174/206)

80.1% (604/754)

src/sftpSearch.ts

100.0% (51/51)

100.0% (51/51)

100.0% (8/8)

98.1% (53/54)

src/sidebarView.ts

95.1% (58/61)

95.2% (60/63)

100.0% (12/12)

86.7% (13/15)

src/sshCommandExecution.ts

95.5% (42/44)

95.5% (42/44)

100.0% (10/10)

90.0% (27/30)

src/sshCommandRunner.ts

95.8% (161/168)

95.8% (161/168)

94.6% (35/37)

89.0% (97/109)

src/sshTerminal.ts

90.3% (223/247)

90.3% (223/247)

93.3% (42/45)

84.9% (135/159)

Generated from coverage/coverage-summary.json.