no-unused-props
✅ recommended を使用した場合、このルールが有効になります。
このルールは、CDK Construct の Props (interface) で定義されたすべてのプロパティが、Construct のコンストラクタ内で実際に使用されることを保証します。
CDK Construct の開発では、複数のプロパティを持つ Props (interface) を定義することが一般的ですが、開発者が Construct の実装でこれらのプロパティの一部を使用するのを忘れ、デッドコードが発生する場合があります。
このルールを使用すると、Props (interface) で定義された未使用のプロパティを検出することができます。
🔧 使用方法
js
// eslint.config.mjs
export default defineConfig([
{
// ... some configs
rules: {
"awscdk/no-unused-props": "error",
},
},
]);✅ 適切な例
ts
import { Construct } from "constructs";
import { Bucket } from "aws-cdk-lib/aws-s3";
interface MyConstructProps {
readonly bucketName: string;
readonly enableVersioning: boolean;
}
export class MyConstruct extends Construct {
constructor(scope: Construct, id: string, props: MyConstructProps) {
super(scope, id);
// ✅ すべてのプロパティが使用されている
new Bucket(this, "MyBucket", {
bucketName: props.bucketName,
versioned: props.enableVersioning,
});
}
}❌ 不適切な例
ts
import { Construct } from "constructs";
import { Bucket } from "aws-cdk-lib/aws-s3";
interface MyConstructProps {
readonly bucketName: string;
readonly enableVersioning: boolean;
readonly unusedProp: string; // ❌ このプロパティは使用されていない
}
export class MyConstruct extends Construct {
constructor(scope: Construct, id: string, props: MyConstructProps) {
super(scope, id);
new Bucket(this, "MyBucket", {
bucketName: props.bucketName,
versioned: props.enableVersioning,
});
}
}