mirror of
https://github.com/flutter/flutter
synced 2024-10-02 14:34:22 +00:00
Set up Kotlin linting step in ci with ktlint (#143478)
Adds a kotlin linting step to the linux analyze check, using a version of [ktlint](https://github.com/pinterest/ktlint) hosted on [CIPD](https://chrome-infra-packages.appspot.com/p/flutter/ktlint/linux-amd64/+/version_1_1_1). Configured to disallow trailing commas, because of (and now acting as a test for) https://github.com/flutter/flutter/pull/145718. Because of this configuration the PR also removes some trailing commas in some kotlin files. Also checks in a baseline file.
This commit is contained in:
parent
64af93b707
commit
29ed214e7f
4
.ci.yaml
4
.ci.yaml
|
@ -298,6 +298,10 @@ targets:
|
|||
timeout: 60
|
||||
properties:
|
||||
shard: analyze
|
||||
dependencies: >-
|
||||
[
|
||||
{"dependency": "ktlint", "version": "version_1_1_1"}
|
||||
]
|
||||
tags: >
|
||||
["framework","hostonly","shard","linux"]
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ class MainActivity : FragmentActivity() {
|
|||
root.layoutParams =
|
||||
LinearLayout.LayoutParams(
|
||||
LinearLayout.LayoutParams.MATCH_PARENT,
|
||||
LinearLayout.LayoutParams.MATCH_PARENT,
|
||||
LinearLayout.LayoutParams.MATCH_PARENT
|
||||
)
|
||||
root.orientation = LinearLayout.VERTICAL
|
||||
root.weightSum = numberOfFlutters.toFloat()
|
||||
|
@ -36,7 +36,7 @@ class MainActivity : FragmentActivity() {
|
|||
val dartEntrypoint =
|
||||
DartExecutor.DartEntrypoint(
|
||||
FlutterInjector.instance().flutterLoader().findAppBundlePath(),
|
||||
"main",
|
||||
"main"
|
||||
)
|
||||
val engines =
|
||||
generateSequence(0) { it + 1 }
|
||||
|
@ -51,7 +51,7 @@ class MainActivity : FragmentActivity() {
|
|||
LinearLayout.LayoutParams(
|
||||
FrameLayout.LayoutParams.MATCH_PARENT,
|
||||
FrameLayout.LayoutParams.MATCH_PARENT,
|
||||
1.0f,
|
||||
1.0f
|
||||
)
|
||||
val engine = engines[i]
|
||||
FlutterEngineCache.getInstance().put(i.toString(), engine)
|
||||
|
@ -61,7 +61,7 @@ class MainActivity : FragmentActivity() {
|
|||
.beginTransaction()
|
||||
.add(
|
||||
12345 + i,
|
||||
flutterFragment,
|
||||
flutterFragment
|
||||
)
|
||||
.commit()
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ class MainActivity : FlutterActivity() {
|
|||
flutterEngine.dartExecutor,
|
||||
"dev.flutter.echo.background.standard",
|
||||
StandardMessageCodec.INSTANCE,
|
||||
taskQueue,
|
||||
taskQueue
|
||||
)
|
||||
backgroundStandard.setMessageHandler { message, reply -> reply.reply(message) }
|
||||
super.configureFlutterEngine(flutterEngine)
|
||||
|
|
|
@ -153,6 +153,9 @@ Future<void> run(List<String> arguments) async {
|
|||
printProgress('Taboo words...');
|
||||
await verifyTabooDocumentation(flutterRoot);
|
||||
|
||||
printProgress('Lint Kotlin files...');
|
||||
await lintKotlinFiles(flutterRoot);
|
||||
|
||||
// Ensure that all package dependencies are in sync.
|
||||
printProgress('Package dependencies...');
|
||||
await runCommand(flutter, <String>['update-packages', '--verify-only'],
|
||||
|
@ -1973,6 +1976,22 @@ Future<void> verifyTabooDocumentation(String workingDirectory, { int minimumMatc
|
|||
}
|
||||
}
|
||||
|
||||
Future<void> lintKotlinFiles(String workingDirectory) async {
|
||||
const String baselineRelativePath = 'dev/bots/test/analyze-test-input/ktlint-baseline.xml';
|
||||
const String editorConfigRelativePath = 'dev/bots/test/analyze-test-input/.editorconfig';
|
||||
final EvalResult lintResult = await _evalCommand('ktlint',
|
||||
<String>['--baseline=$flutterRoot/$baselineRelativePath', '--editorconfig=$flutterRoot/$editorConfigRelativePath'],
|
||||
workingDirectory: workingDirectory);
|
||||
if (lintResult.exitCode != 0) {
|
||||
final String errorMessage = 'Found lint violations in Kotlin files:\n ${lintResult.stdout}\n\n'
|
||||
'To reproduce this lint locally:\n'
|
||||
'1. Identify the CIPD version tag used to resolve this particular version of ktlint (check the dependencies section of this shard in the ci.yaml). \n'
|
||||
'2. Download that version from https://chrome-infra-packages.appspot.com/p/flutter/ktlint/linux-amd64/+/<version_tag>\n'
|
||||
'3. From the repository root, run `<path_to_ktlint>/ktlint --editorconfig=$editorConfigRelativePath --baseline=$baselineRelativePath`';
|
||||
foundError(<String>[errorMessage]);
|
||||
}
|
||||
}
|
||||
|
||||
const List<String> _kIgnoreList = <String>[
|
||||
'Runner.rc.tmpl',
|
||||
'flutter_window.cpp',
|
||||
|
|
4
dev/bots/test/analyze-test-input/.editorconfig
Normal file
4
dev/bots/test/analyze-test-input/.editorconfig
Normal file
|
@ -0,0 +1,4 @@
|
|||
[*.{kt,kts}]
|
||||
# Disable trailing commas to allow compatibility with Kotlin versions less than 1.4.
|
||||
ij_kotlin_allow_trailing_comma = false
|
||||
ij_kotlin_allow_trailing_comma_on_call_site = false
|
33
dev/bots/test/analyze-test-input/ktlint-baseline.xml
Normal file
33
dev/bots/test/analyze-test-input/ktlint-baseline.xml
Normal file
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<baseline version="1.0">
|
||||
<file name="dev/a11y_assessments/android/app/src/main/kotlin/com/example/a11y_assessments/MainActivity.kt">
|
||||
<error line="1" column="9" source="standard:package-name" />
|
||||
</file>
|
||||
<file name="dev/benchmarks/platform_channels_benchmarks/android/app/src/main/kotlin/com/example/platform_channels_benchmarks/MainActivity.kt">
|
||||
<error line="5" column="9" source="standard:package-name" />
|
||||
</file>
|
||||
<file name="dev/integration_tests/abstract_method_smoke_test/android/app/src/main/kotlin/com/example/abstract_method_smoke_test/MainActivity.kt">
|
||||
<error line="1" column="9" source="standard:package-name" />
|
||||
</file>
|
||||
<file name="dev/integration_tests/android_embedding_v2_smoke_test/android/app/src/main/kotlin/com/example/android_embedding_v2_smoke_test/MainActivity.kt">
|
||||
<error line="1" column="9" source="standard:package-name" />
|
||||
</file>
|
||||
<file name="dev/integration_tests/deferred_components_test/android/app/src/main/kotlin/io/flutter/integration/deferred_components_test/MainActivity.kt">
|
||||
<error line="1" column="9" source="standard:package-name" />
|
||||
</file>
|
||||
<file name="dev/integration_tests/non_nullable/android/app/src/main/kotlin/com/example/non_nullable/MainActivity.kt">
|
||||
<error line="1" column="9" source="standard:package-name" />
|
||||
</file>
|
||||
<file name="dev/integration_tests/spell_check/android/app/src/main/kotlin/com/example/sc_int_test/MainActivity.kt">
|
||||
<error line="1" column="9" source="standard:package-name" />
|
||||
</file>
|
||||
<file name="dev/manual_tests/android/app/src/main/kotlin/dev/flutter/manual_tests/MainActivity.kt">
|
||||
<error line="1" column="9" source="standard:package-name" />
|
||||
</file>
|
||||
<file name="dev/tracing_tests/android/app/src/main/kotlin/com/example/tracing_tests/MainActivity.kt">
|
||||
<error line="1" column="9" source="standard:package-name" />
|
||||
</file>
|
||||
<file name="examples/api/android/app/src/main/kotlin/dev/flutter/flutter_api_samples/MainActivity.kt">
|
||||
<error line="1" column="9" source="standard:package-name" />
|
||||
</file>
|
||||
</baseline>
|
|
@ -30,7 +30,7 @@ class MainActivity : FlutterActivity() {
|
|||
}
|
||||
|
||||
override fun configureFlutterEngine(
|
||||
@NonNull flutterEngine: FlutterEngine,
|
||||
@NonNull flutterEngine: FlutterEngine
|
||||
) {
|
||||
GeneratedPluginRegistrant.registerWith(flutterEngine)
|
||||
|
||||
|
@ -43,11 +43,11 @@ class MainActivity : FlutterActivity() {
|
|||
override fun create(
|
||||
context: Context?,
|
||||
viewId: Int,
|
||||
args: Any?,
|
||||
args: Any?
|
||||
): PlatformView {
|
||||
return SimplePlatformView(this@MainActivity)
|
||||
}
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
// Triggers the Android keyboard, which causes the resize of the Flutter view.
|
||||
|
|
|
@ -7,7 +7,7 @@ import io.flutter.plugins.GeneratedPluginRegistrant
|
|||
|
||||
class MainActivity : FlutterActivity() {
|
||||
override fun configureFlutterEngine(
|
||||
@NonNull flutterEngine: FlutterEngine,
|
||||
@NonNull flutterEngine: FlutterEngine
|
||||
) {
|
||||
GeneratedPluginRegistrant.registerWith(flutterEngine)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue