-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(model): アプリバージョンのモデルを追加 #654
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
export 'src/config/app_config.dart'; | ||
export 'src/config/app_version.dart'; | ||
export 'src/config/flavor.dart'; | ||
export 'src/config/remote_config.dart'; | ||
export 'src/config/update_version.dart'; |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,46 @@ | ||||||||||||||||||||||||||||||||||||||||||
import 'package:freezed_annotation/freezed_annotation.dart'; | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
part 'app_version.freezed.dart'; | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
/// アプリバージョン | ||||||||||||||||||||||||||||||||||||||||||
/// | ||||||||||||||||||||||||||||||||||||||||||
/// {@category Model} | ||||||||||||||||||||||||||||||||||||||||||
@freezed | ||||||||||||||||||||||||||||||||||||||||||
class AppVersion with _$AppVersion { | ||||||||||||||||||||||||||||||||||||||||||
const factory AppVersion({ | ||||||||||||||||||||||||||||||||||||||||||
required int major, | ||||||||||||||||||||||||||||||||||||||||||
required int minor, | ||||||||||||||||||||||||||||||||||||||||||
required int patch, | ||||||||||||||||||||||||||||||||||||||||||
}) = _AppVersion; | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
factory AppVersion.parse(String version) { | ||||||||||||||||||||||||||||||||||||||||||
final versionList = version.split('.').map(int.parse).toList(); | ||||||||||||||||||||||||||||||||||||||||||
return AppVersion( | ||||||||||||||||||||||||||||||||||||||||||
major: versionList[0], | ||||||||||||||||||||||||||||||||||||||||||
minor: versionList[1], | ||||||||||||||||||||||||||||||||||||||||||
patch: versionList[2], | ||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+16
to
+23
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
現在の 以下の差分を適用して、入力値の検証を強化できます: factory AppVersion.parse(String version) {
+ final versionParts = version.split('.');
+ if (versionParts.length != 3) {
+ throw FormatException('バージョン文字列の形式が不正です。期待される形式: major.minor.patch');
+ }
+ final versionList = versionParts.map(int.parse).toList();
return AppVersion(
major: versionList[0],
minor: versionList[1],
patch: versionList[2],
);
} 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
const AppVersion._(); | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
String get value => '$major.$minor.$patch'; | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
int compareTo(AppVersion other) { | ||||||||||||||||||||||||||||||||||||||||||
if (major != other.major) { | ||||||||||||||||||||||||||||||||||||||||||
return major.compareTo(other.major); | ||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
if (minor != other.minor) { | ||||||||||||||||||||||||||||||||||||||||||
return minor.compareTo(other.minor); | ||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
return patch.compareTo(other.patch); | ||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
bool operator >(AppVersion other) => compareTo(other) > 0; | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
bool operator <(AppVersion other) => compareTo(other) < 0; | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
bool operator >=(AppVersion other) => compareTo(other) >= 0; | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
bool operator <=(AppVersion other) => compareTo(other) <= 0; | ||||||||||||||||||||||||||||||||||||||||||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
AppVersion.parse
メソッドにエラーハンドリングが存在しません。AppVersion.parse
メソッド内でバージョン文字列のパース時にエラーハンドリングが実装されていないようです。無効な文字列が渡された場合に適切に対処するために、try-catch
ブロックやエラーチェックを追加することを検討してください。core/model/lib/src/config/app_version.dart
AppVersion.parse
🔗 Analysis chain
アプリケーションバージョンモデルの導入を承認します。
この変更は、文字列バージョンを
AppVersion
オブジェクトに変換することで、型安全性を向上させています。これはPRの目的であるアプリケーションバージョンモデルの追加に合致しています。以下の点を確認するために、次のスクリプトを実行してください:
改善の提案:
AppVersion.parse
メソッドが失敗した場合のエラーハンドリングを検討してください。AppVersion.parse
メソッドで期待される形式であることを確認してください。これらの改善により、コードの堅牢性がさらに向上します。
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
Length of output: 559
Script:
Length of output: 154
Script:
Length of output: 211