SonarQube 및 Flutter를 사용한 CI - 1부
이 기사에서는 SonarQube 도구를 Flutter 프레임워크와 함께 사용하여 코드 품질을 개선하는 방법을 보여주고 이를 위해 사용할 버전을 설명하겠습니다.
Flutter는 모바일에서 데스크톱, 심지어 내장형 장치에 이르기까지 거의 모든 일반 플랫폼에서 컴파일되고 실행되는 Google에서 만든 프레임워크이므로 이것이 출발점이 될 것입니다. 시간이 흐르고 앱이 특정 요구 사항에 맞아야 하므로 이를 염두에 두고 테스트는 코드가 설계한대로 작동하는지 이해하는 좋은 방법입니다. 기본적으로 Flutter에는 세 가지 유형의 테스트가 있습니다.
계속해서 다음 명령을 사용하여 새 Flutter 프로젝트를 만들어야 합니다.
flutter create project_name
여기서 project_name에서 프로젝트에 이름을 지정할 수 있습니다.완료되면 다음과 같은 내용이 표시됩니다.
`
All done!
In order to run your application, type:
$ cd project_name
$ flutter run
Your application code is in project_name/lib/main.dart.
Visual Studio 코드를 사용하는 경우
cd project_name
를 입력한 다음 code .
를 입력하십시오.처음에 프로젝트 구조에는 아래에서 볼 수 있는 것과 같은 간단한 카운터 앱과 위젯 테스트가 함께 제공됩니다.
lib/main.dart
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}
test/widget_test.dart
// This is a basic Flutter widget test.
//
// To perform an interaction with a widget in your test, use the WidgetTester
// utility in the flutter_test package. For example, you can send tap and scroll
// gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct.
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:project_name/main.dart';
void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(const MyApp());
// Verify that our counter starts at 0.
expect(find.text('0'), findsOneWidget);
expect(find.text('1'), findsNothing);
// Tap the '+' icon and trigger a frame.
await tester.tap(find.byIcon(Icons.add));
await tester.pump();
// Verify that our counter has incremented.
expect(find.text('0'), findsNothing);
expect(find.text('1'), findsOneWidget);
});
}
프로젝트가 생성되면 다음 부분에서는 OS에 따라 Docker Desktop을 다운로드한 다음 SonarQube website으로 이동하여 소프트웨어를 다운로드하는 방법을 알아봅니다. 이를 염두에 두고 첫 번째 부분을 즐기시기 바라며 다음 부분에서 뵙기를 기대합니다.
Reference
이 문제에 관하여(SonarQube 및 Flutter를 사용한 CI - 1부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/matteuus/ci-with-sonarqube-and-flutter-part-1-4hoi텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)