Skip to content

Commit 8613124

Browse files
authored
Merge pull request #378 from HannesVDB/feature/observability
feat: observability
2 parents 266036e + 6d3ef4f commit 8613124

168 files changed

Lines changed: 1450 additions & 998 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.fvmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"flutter": "3.24.0"
2+
"flutter": "3.38.9"
33
}

.vscode/settings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"dart.flutterSdkPath": ".fvm/flutter_sdk",
33
"dart.sdkPath": ".fvm/flutter_sdk/bin/cache/dart-sdk",
4+
"dart.lineLength": 180,
45
// Remove .fvm files from search
56
"search.exclude": {
67
"**/.fvm": true

analysis_options.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ linter:
2222
rules:
2323
- unawaited_futures
2424
- always_declare_return_types
25-
- unsafe_html
2625
- use_full_hex_values_for_flutter_colors
2726
- prefer_final_in_for_each
2827
- prefer_final_fields

coverage/lcov_cobertura.py

Lines changed: 0 additions & 403 deletions
This file was deleted.

coverage/test_coverage_filter.dart

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
import 'dart:io';
2+
3+
void main() {
4+
printMessage('Start filtering the lcov.info file');
5+
final file = File('coverage/lcov.info');
6+
if (!file.existsSync()) {
7+
printMessage('"lcov.info" does not exist');
8+
return;
9+
}
10+
const endOfRecord = 'end_of_record';
11+
final sections = <LcovSection>[];
12+
final lines = file.readAsLinesSync();
13+
LcovSection? currentSection;
14+
for (final line in lines) {
15+
if (line.endsWith('.dart')) {
16+
final filePath = line.replaceAll('SF:', '');
17+
currentSection = LcovSection()
18+
..header = line
19+
..filePath = filePath;
20+
} else if (line == endOfRecord) {
21+
final currentSectionTmp = currentSection;
22+
if (currentSectionTmp != null) {
23+
currentSectionTmp.footer = line;
24+
sections.add(currentSectionTmp);
25+
}
26+
} else {
27+
currentSection?.body.add(line);
28+
}
29+
}
30+
final filteredSections = getFilteredSections(sections);
31+
final sb = StringBuffer();
32+
for (final section in filteredSections) {
33+
sb.write(section.toString());
34+
}
35+
file.writeAsStringSync(sb.toString());
36+
printMessage('Filtered the lcov.info file');
37+
}
38+
39+
class LcovSection {
40+
String? filePath;
41+
String? header;
42+
final body = <String>[];
43+
String? footer;
44+
45+
String? getBodyString() {
46+
final filePathTmp = filePath;
47+
if (filePathTmp == null) return null;
48+
final file = File(filePathTmp);
49+
final content = file.readAsLinesSync();
50+
final sb = StringBuffer();
51+
getFilteredBody(body, content).forEach((item) => sb..write(item)..write('\n'));
52+
return sb.toString();
53+
}
54+
55+
@override
56+
String toString() {
57+
return '$header\n${getBodyString()}$footer\n';
58+
}
59+
}
60+
61+
List<LcovSection> getFilteredSections(List<LcovSection> sections) {
62+
return sections.where((section) {
63+
final header = section.header;
64+
if (header == null) return false;
65+
if (header.endsWith('.g.dart')) {
66+
return false;
67+
} else if (header.endsWith('dummy_service.dart')) {
68+
return false;
69+
} else if (header.startsWith('SF:lib/vendor/')) {
70+
return false;
71+
} else if (header.startsWith('SF:lib/util/locale')) {
72+
return false;
73+
} else if (header.contains('widgetbook/')) {
74+
return false;
75+
}
76+
return true;
77+
}).toList();
78+
}
79+
80+
List<String> getFilteredBody(List<String> body, List<String> lines) {
81+
return body.where((line) {
82+
if (line.startsWith('DA:')) {
83+
final sections = line.split(',');
84+
final lineNr = int.parse(sections[0].replaceAll('DA:', ''));
85+
final callCount = int.parse(sections[1]);
86+
if (callCount == 0) {
87+
final fileLine = lines[lineNr - 1].trim();
88+
if (excludedLines.contains(fileLine)) {
89+
return false;
90+
}
91+
for (final line in excludedStartsWithLines) {
92+
if (fileLine.trim().startsWith(line)) {
93+
return false;
94+
}
95+
}
96+
}
97+
}
98+
return true;
99+
}).toList();
100+
}
101+
102+
const excludedLines = [
103+
'AppConstants._();',
104+
'EnvUtils._();',
105+
'FlutterTemplateLogger._();',
106+
'FlutterTemplateThemeData._();',
107+
'Keys._();',
108+
'LicenseUtil._();',
109+
'ThemeAssets._();',
110+
'ThemeColors._();',
111+
'ThemeDimens._();',
112+
'ThemeDurations._();',
113+
'ThemeFonts._();',
114+
'ThemeTextStyles._();',
115+
];
116+
117+
const excludedStartsWithLines = [
118+
'IntColumn get ',
119+
'TextColumn get ',
120+
'BoolColumn get ',
121+
'DateTimeColumn get ',
122+
];
123+
124+
void printMessage(String message) {
125+
// ignore: avoid_print
126+
print(message);
127+
}

fastlane/Fastfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ lane :pr do
5151
checkCompilationAndAnalyzer
5252
Dir.chdir ".." do
5353
sh("fvm", "flutter", "test")
54-
#sh("fvm", "flutter", "test", "--coverage")
55-
#sh("dart", "--version")
56-
#sh("dart", "coverage/filter_test_coverage.dart")
57-
#sh("python3", "coverage/lcov_cobertura.py", "coverage/lcov.info", "--output", "coverage/coverage.xml")
54+
sh("fvm", "flutter", "test", "--coverage")
55+
sh("fvm", "dart", "--version")
56+
sh("fvm", "dart", "coverage/test_coverage_filter.dart")
57+
sh("cobertura", "convert", "-i", "coverage/lcov.info", "-o", "coverage/coverage.xml")
5858
end
5959
git_reset
6060
end

fastlane/analysis_options_check_compilation.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ analyzer:
77
unused_import: ignore
88
unused_element: ignore
99
unused_local_variable: ignore
10+
unused_element_parameter: ignore
11+
deprecated_member_use: ignore
12+
invalid_use_of_internal_member: ignore
1013

1114
linter:
1215
rules:

fastlane/report.xml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<testsuites>
3+
<testsuite name="fastlane.lanes">
4+
5+
6+
7+
8+
<testcase classname="fastlane.lanes" name="0: Verifying fastlane version" time="0.000183">
9+
10+
</testcase>
11+
12+
13+
<testcase classname="fastlane.lanes" name="1: is_ci" time="8.0e-05">
14+
15+
</testcase>
16+
17+
18+
<testcase classname="fastlane.lanes" name="2: install_provisioning_profiles" time="0.105418">
19+
20+
</testcase>
21+
22+
23+
<testcase classname="fastlane.lanes" name="3: is_ci" time="0.000176">
24+
25+
</testcase>
26+
27+
28+
<testcase classname="fastlane.lanes" name="4: echo No\ build\ nr\ set,\ USING\ DEFAULT\ \(1\)" time="0.006442">
29+
30+
</testcase>
31+
32+
33+
<testcase classname="fastlane.lanes" name="5: clean_build_artifacts" time="0.000139">
34+
35+
</testcase>
36+
37+
38+
<testcase classname="fastlane.lanes" name="6: cobertura convert -i coverage/lcov.info -o coverage/coverage.xml" time="0.270353">
39+
40+
</testcase>
41+
42+
</testsuite>
43+
</testsuites>

ios/Flutter/AppFrameworkInfo.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@
2121
<key>CFBundleVersion</key>
2222
<string>1.0</string>
2323
<key>MinimumOSVersion</key>
24-
<string>12.0</string>
24+
<string>13.0</string>
2525
</dict>
2626
</plist>

ios/Flutter/Release.xcconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
1+
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.$(CONFIGURATION).xcconfig"
22
#include "Generated.xcconfig"

0 commit comments

Comments
 (0)