質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

コーディング規約

コーディング規約とは、コードの書き方についての決め事のことです。 文法のことではなく、そのチームなどの中の約束事としてどのような書き方で行うかを定めるもの。 項目の例として、関数や変数の命名規則、コーディングのスタイル、括弧やインデントの書き方などが挙げられます。

Q&A

解決済

1回答

1558閲覧

コーディングチェックをするにはどのような方法がありますか?

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

コーディング規約

コーディング規約とは、コードの書き方についての決め事のことです。 文法のことではなく、そのチームなどの中の約束事としてどのような書き方で行うかを定めるもの。 項目の例として、関数や変数の命名規則、コーディングのスタイル、括弧やインデントの書き方などが挙げられます。

0グッド

0クリップ

投稿2021/09/20 01:10

編集2021/09/20 02:01

現在1000ファイルぐらいあり、コーディングチェックをするために、

■ 困りごととして、以下のチェックをする方法がないか考えています。

サーバーサイドはC#で、開発ツールの名前指定で以下のケースのみ対応はできているのですが、

・クラス名: パスカルケース
・インターフェース: Iではじまるパスカルケース
・Enum名: パスカルケース
・メソッド名: パスカルケース
・public field(モデルのプロパティ): パスカルケース
・private field: _(アンダーバー)で始まるキャメルケース
・フィールド以外のメンバー: キャメルケース

以下の困りごとがあります。
①タイプとメソッド名が合わない時
②タイプがリスト等の複数の時(Listなど)、変数名がsで終わっていること ※英語なのでiesとかはあるのでsを末尾としてます。

(追記)
ツールはVisual Studio 2019 Professionalを使用しています。
試したこととして。コーディングチェックの方法の1つとして、StyleCopという方法がありました。
②を解決できるかはわからないですが。
使ってみましたが、大量の警告がでて、不要なコメントが大量に追加されて、
それを消す方法がわからなくて困ってます。

C#

1// ① 2Food food = new Car(); // NG 3Food food = new Food(); // OK 4 5IList<Food> foods = new List<Car>(); // NG 6IList<Food> foods = new List<Food>(); // OK 7 8// ② 9IList<Car> car = new List<Car>(); // NG 10IList<Car> cars = new List<Car>(); // OK

■ クライアントサイドはjavascriptを使っていますが、サーバーサイドと違ってツールの名前指定機能が使えないので、
キャメルケースとかのチェックもできません。
※ファイル数は少ないので目視でもいいかもしれないですが。

なにか便利なフリーソフトとかがあればいいですけれど。

どなたかご教授お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2021/09/20 01:18

「言語名 コーディングチェック」等で検索されましたか?
gentaro

2021/09/20 01:43

少なくとも > Food food = new Car(); // NG > Food food = new Food(); // OK この規則がおかしいんで、これを満たすツールは無いと思う。 例えば「Car taxi = new Car();」もNGになって、そんな規則自体が現実的じゃない。 こんな規則を汎用的に設計できるわけないし。
Zuishin

2021/09/20 01:56 編集

> ①タイプとメソッド名が合わない時 例として挙げられているのは、メソッドではなくコンストラクタ。 Car が Food を継承しているのでなければ、そもそもコンパイルできません。 > ①タイプがリスト等の複数の時(Listなど)、変数名がsで終わっていること ※英語なのでiesとかはあるのでsを末尾としてます。 ①ではなく②だと思います。 アナライザーは自作できるので、ローカル変数を収集してメッセージを出す方法があります。 https://docs.microsoft.com/ja-jp/dotnet/csharp/roslyn-sdk/tutorials/how-to-write-csharp-analyzer-code-fix またサードパーティーのアナライザーも探せばあるんじゃないかと思いますが、探しましたか?
退会済みユーザー

退会済みユーザー

2021/09/20 01:56 編集

>> gentaroさん コメントありがとうございます。 エラーでなく一時的に警告のみにすれば問題ないと思います。 ただ普通じゃないので、目視するしかないかもしれないですが。
退会済みユーザー

退会済みユーザー

2021/09/20 01:56

>>Zuishinさん コメントありがとうございます。 教えて頂いたリンクのもので試してみたいと思います。 実はStyleCopというものを使ってみましたが、大量の警告がでて、設定を調べていましたが、 問題としては、不要なコメントが大量に追加されて、それを消す方法がわからなくて困りました。 細かい制御はできそうなので、もう一度トライしてみたいと思いますが。
Zuishin

2021/09/20 01:57

> 実はStyleCopというものを使ってみましたが、大量の警告がでて、設定を調べていましたが、 問題としては、不要なコメントが大量に追加されて、それを消す方法がわからなくて困りました。 試したこととその問題点を質問に追記すれば、より精度の高い回答がつく可能性が上がるでしょう。
退会済みユーザー

退会済みユーザー

2021/09/20 01:58

すみませんが①を②に修正しました。
退会済みユーザー

退会済みユーザー

2021/09/20 02:02

ご指摘ありがとうございます。質問欄のほうに追記しました。 (追記) ツールはVisual Studio 2019 Professionalを使用しています。 試したこととして。コーディングチェックの方法の1つとして、StyleCopという方法がありました。 ②を解決できるかはわからないですが。 使ってみましたが、大量の警告がでて、不要なコメントが大量に追加されて、 それを消す方法がわからなくて困ってます
Zuishin

2021/09/20 02:18

StyleCop.Analyzer ですよね? 緑の波線のところにキャレットを置いて Ctrl+. を押すとメニューが出ます。 「問題の抑制または構成」で重要度を None にすれば、その警告を表示しないようにできます。
gentaro

2021/09/20 02:24 編集

> エラーでなく一時的に警告のみにすれば問題ないと思います。 エラーでも警告でも一緒で、つまり変数名はクラス名と一致しないと駄目、という規則を作るという事? じゃあ同一クラスのインスタンスが複数存在する場合はどうなるの?という話。 そもそもその理屈なら > IList<Food> foods = new List<Food>(); // OK の時点で矛盾してる。(List<Food>はfoodsという「クラス名」ではない) どうも想定している規則が現実のモノとしてありえないようにしか見えないけども。
退会済みユーザー

退会済みユーザー

2021/09/20 02:27 編集

そういうわけではないので、①はチェックしないことにするのがいいかもしれません。 目視でやることかもしれません。
退会済みユーザー

退会済みユーザー

2021/09/20 02:26

>> Zuishinさん StyleCop.Analyzeの警告OFFの方法をいまから検証してみます。
gentaro

2021/09/20 02:30

??? 既にある規則についてのチェックについて困ってるんじゃないの? 実際のそのコーディング規約はどういう規定になってるの? OK,NGという例ではなく、規則そのものを明確に説明して欲しい。
退会済みユーザー

退会済みユーザー

2021/09/20 02:35 編集

>> gentaroさん OK、NG例が全てでして、gentaroさんが言われているとおり、①のチェックをするのは非現実的なのだと思います。 ②末尾のsはもしかしたらできるかもしれませんが。
gentaro

2021/09/20 02:37

え?それは存在しないコーディング規約をチェックしようとして困って質問したということ? 今ある規約を教えて欲しい、というだけの話なんだけども。 存在しない規約について困る事は論理的にあり得ないんで、もしそういう質問をしているなら愉快犯みたいなもんだと思うけど。
退会済みユーザー

退会済みユーザー

2021/09/20 03:00 編集

>> Zuishinさん Noneだと余計なコメントが追加され、Silentだと期待する動作でした。 editorconfigはすでに標準の機能で使っていましたが、StyleCopとの連携方法がまだよくわかっていませんでした。
退会済みユーザー

退会済みユーザー

2021/09/20 02:41

規約は質問文の通りです。 これはツールの機能でチェック済みです。 ・クラス名: パスカルケース ・インターフェース: Iではじまるパスカルケース ・Enum名: パスカルケース ・メソッド名: パスカルケース ・public field(モデルのプロパティ): パスカルケース ・private field: _(アンダーバー)で始まるキャメルケース ・フィールド以外のメンバー: キャメルケース これができないかの意見を確認したかったです。 ①タイプとメソッド名が合わない時 ②タイプがリスト等の複数の時(Listなど)、変数名がsで終わっていること ※英語なのでiesとかはあるのでsを末尾としてます。 なので何かご意見を伺いたかったと書いておけばよかったのですが、質問がわかりにくくてすみませんが。
退会済みユーザー

退会済みユーザー

2021/09/20 03:00 編集

>>SurferOnWww もう一度書いたら運営に報告しますので、迷惑行為はご遠慮ください。リンクは書く必要ないですよね。 2度とあなたに質問することはありません。
gentaro

2021/09/20 02:50

あぁなるほど…。コーディング規約じゃないけどもこういうチェックが可能なのか、という話か…。 だとすると、①はそもそもそのルール設定がおかしい(1つの型に1つの変数名しか許せなくなり、プログラミングに必要以上の意味不明な縛りをする事になる)ので、対象から外すという判断は良いかと。 ②はまだ理解できるし、定義可能なルールではあるけど、そういうチェックをできるツールは見たことがない。そんなに需要なさそうだから自作してみては。
退会済みユーザー

退会済みユーザー

2021/09/20 02:54 編集

>>gentaroさん ありがとうございます。おっしゃられているとおり、②は需要がないかもしれませんので、自力チェックのほう無難かもしれませんね。 ファイル数が多いので大変ではありますが。 一緒に作業していた人が雑で Food food = new Car(); とか結構やっていたので困ってました。これも自力チェックしかないですね。
退会済みユーザー

退会済みユーザー

2021/09/20 02:54

こういう人だと閲覧者・回答者の皆さんに知らしめて、皆さんが無駄な労力をすることがないようにしているのです。通報? どうぞご自由に。小学生が「先生に言ってやる」みたいで聞いてる方が恥ずかしい。
退会済みユーザー

退会済みユーザー

2021/09/20 02:59 編集

>>SurferOnWww もう運営に連絡しました。さようなら。
gentaro

2021/09/20 02:56

いやまぁ正直、そんな状況で後からチェックする、という事にあんまり意味を感じないけども。 単体テスト通ってて動作に問題がないなら、そのコードを将来メンテする際にリファクタリングすればいいだけでは? そもそも最初からコードレビューをちゃんとやってれば発見できる問題だし。
退会済みユーザー

退会済みユーザー

2021/09/20 02:59

>>gentaroさん 動いていればいいって考え方の人と、そうでない人がいて。 全数コードレビュー、リファクタリングできれば何とかなるかなって思います。 それが必要かというと微妙なので発見した時に修正すればいいですね。 gentaroさんのおっしゃられている通りだと思います。
gentaro

2021/09/20 03:09

動いていればいい、という後ろ向きな理由じゃなく、動いているのに不用意に触る方が害悪、と考えるのが普通で、修正理由がそれだけなら、その1000ファイルを分を今一気にやる意味あるのか?という話。 今から書くコードは、新規追加分も修正分も当然レビューでチェックする前提。(普通それをやるし、普通の環境ならそれができてる) まぁ然るべき責任を負ってる人間がやりたいなら、部外者の立場で止められる話じゃないんで、お好きにどうぞ、としか言えないけど。
退会済みユーザー

退会済みユーザー

2021/09/20 04:20 編集

単体テスト前なので、確認してからテストを始めればいいかな程度で考えています。 たしかにすでに稼働しているものなら、何か修正対応の時に、動いている部分は触るべきではないですね。
guest

回答1

0

ベストアンサー

以下の方法は現実的でない。

①タイプとメソッド名が合わない時
②タイプがリスト等の複数の時(Listなど)、変数名がsで終わっていること

テスト前であれば目視で確認する。
すでに稼働中のものであれば触らない。

・Visual Studio 2019についている、ESLintの機能を使うとjavascriptのおかしな部分を指摘してくれました。

・NugetのStyleCop.Analyzerもコードチェックで使える。
.editorconfig の設定はこのようにしました。警告を無視する番号を指定しています。
※StyleCop.Analyzerの警告を1つずつ見て、どれが不要かを判断したら
私のケースでは以下のような感じになりました。

txt

1### StyleCop Ignore ### 2dotnet_diagnostic.SA0001.severity = none 3 4dotnet_diagnostic.SA1009.severity = none 5dotnet_diagnostic.SA1101.severity = none 6dotnet_diagnostic.SA1111.severity = none 7dotnet_diagnostic.SA1118.severity = none 8dotnet_diagnostic.SA1119.severity = none 9dotnet_diagnostic.SA1121.severity = none 10dotnet_diagnostic.SA1122.severity = none 11dotnet_diagnostic.SA1129.severity = none 12dotnet_diagnostic.SA1131.severity = none 13dotnet_diagnostic.SA1133.severity = none 14 15dotnet_diagnostic.SA1200.severity = none 16dotnet_diagnostic.SA1201.severity = none 17dotnet_diagnostic.SA1203.severity = none 18dotnet_diagnostic.SA1208.severity = none 19dotnet_diagnostic.SA1214.severity = none 20 21dotnet_diagnostic.SA1309.severity = none 22dotnet_diagnostic.SA1310.severity = none 23 24dotnet_diagnostic.SA1400.severity = none 25dotnet_diagnostic.SA1413.severity = none 26 27dotnet_diagnostic.SA1500.severity = none 28dotnet_diagnostic.SA1505.severity = none 29dotnet_diagnostic.SA1512.severity = none 30 31dotnet_diagnostic.SA1600.severity = none 32dotnet_diagnostic.SA1601.severity = none 33dotnet_diagnostic.SA1602.severity = none 34dotnet_diagnostic.SA1623.severity = none 35dotnet_diagnostic.SA1624.severity = none 36dotnet_diagnostic.SA1629.severity = none 37dotnet_diagnostic.SA1630.severity = none 38dotnet_diagnostic.SA1631.severity = none 39dotnet_diagnostic.SA1633.severity = none 40dotnet_diagnostic.SA1635.severity = none 41dotnet_diagnostic.SA1637.severity = none 42dotnet_diagnostic.SA1638.severity = none 43dotnet_diagnostic.SA1639.severity = none 44dotnet_diagnostic.SA1640.severity = none 45dotnet_diagnostic.SA1642.severity = none 46dotnet_diagnostic.SA1643.severity = none 47dotnet_diagnostic.SA1649.severity = none 48dotnet_diagnostic.SA1650.severity = none

投稿2021/09/20 04:22

編集2021/09/21 08:16
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/09/23 09:21 編集

コメント荒らし、低評価の迷惑行為がある以上、C#、ASP.NETの分野ではもう質問できないね。 聞くこともないけど。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問