adlint 1.12.0 → 1.14.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,8 @@
1
1
  <html lang="ja">
2
2
  <head>
3
- <title>AdLint 1.12.0 利用者ガイド</title>
3
+ <title>AdLint 1.14.0 利用者ガイド</title>
4
4
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
- <meta name="description" content="AdLint 1.12.0 利用者ガイド">
5
+ <meta name="description" content="AdLint 1.14.0 利用者ガイド">
6
6
  <meta name="generator" content="makeinfo 4.13">
7
7
  <link title="Top" rel="top" href="#Top">
8
8
  <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
@@ -44,7 +44,7 @@ td { border: 1px solid black; }
44
44
  --></style>
45
45
  </head>
46
46
  <body>
47
- <h1 class="settitle">AdLint 1.12.0 利用者ガイド</h1>
47
+ <h1 class="settitle">AdLint 1.14.0 利用者ガイド</h1>
48
48
  <div class="node">
49
49
  <a name="Top"></a>
50
50
  <p><hr>
@@ -30894,14 +30894,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
30894
30894
 
30895
30895
  <h4 class="subsection">6.527.2 内容</h4>
30896
30896
 
30897
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
30898
-
30899
- <p>未定義の動作のため、予期しない動作を引き起こす可能性があります。
30897
+ <p>未定義の動作のため、予期しない動作を引き起こす可能性があります。
30900
30898
 
30901
30899
  <h4 class="subsection">6.527.3 サンプルコード</h4>
30902
30900
 
30903
- <!-- {未実装} -->
30904
- <pre class="verbatim">/* 追記予定 */
30901
+ <pre class="verbatim">extern void func(a) /* W0645 */
30902
+ void a;
30903
+ {
30904
+ }
30905
30905
  </pre>
30906
30906
 
30907
30907
  <h4 class="subsection">6.527.4 関連メッセージ</h4>
@@ -30915,7 +30915,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
30915
30915
 
30916
30916
  <h4 class="subsection">6.527.5 対応バージョン</h4>
30917
30917
 
30918
- <p>2.0.0 の予定
30918
+ <p>1.14.0
30919
30919
 
30920
30920
  <div class="node">
30921
30921
  <a name="W0646"></a>
@@ -33778,9 +33778,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33778
33778
 
33779
33779
  <h4 class="subsection">6.575.2 内容</h4>
33780
33780
 
33781
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
33782
-
33783
- <p>式を持たない <code>return</code> 文は不定値を返します。
33781
+ <p>式を持たない <code>return</code> 文は不定値を返します。
33784
33782
 
33785
33783
  <h4 class="subsection">6.575.3 サンプルコード</h4>
33786
33784
 
@@ -33789,7 +33787,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33789
33787
  if (value == 0) {
33790
33788
  return 0;
33791
33789
  }
33792
- // No return statement at the end of the function.
33790
+ /* No return statement at the end of this function. */
33793
33791
  }
33794
33792
  </pre>
33795
33793
 
@@ -33803,7 +33801,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33803
33801
 
33804
33802
  <h4 class="subsection">6.575.5 対応バージョン</h4>
33805
33803
 
33806
- <p>2.0.0 の予定
33804
+ <p>1.14.0
33807
33805
 
33808
33806
  <div class="node">
33809
33807
  <a name="W0698"></a>
@@ -33906,14 +33904,13 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33906
33904
 
33907
33905
  <h4 class="subsection">6.578.2 内容</h4>
33908
33906
 
33909
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
33910
-
33911
- <p>式を持たない <code>return</code> 文は不定値を返します。
33907
+ <p>式を持たない <code>return</code> 文は不定値を返します。
33912
33908
 
33913
33909
  <h4 class="subsection">6.578.3 サンプルコード</h4>
33914
33910
 
33915
- <!-- {未実装} -->
33916
- <pre class="verbatim">/* 追記予定 */
33911
+ <pre class="verbatim">extern func(void) /* W0700 */
33912
+ {
33913
+ }
33917
33914
  </pre>
33918
33915
 
33919
33916
  <h4 class="subsection">6.578.4 関連メッセージ</h4>
@@ -33926,7 +33923,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
33926
33923
 
33927
33924
  <h4 class="subsection">6.578.5 対応バージョン</h4>
33928
33925
 
33929
- <p>2.0.0 の予定
33926
+ <p>1.14.0
33930
33927
 
33931
33928
  <div class="node">
33932
33929
  <a name="W0703"></a>
@@ -40838,9 +40835,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40838
40835
 
40839
40836
  <h4 class="subsection">6.731.2 内容</h4>
40840
40837
 
40841
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
40842
-
40843
- <p>例えばサンプルコードでは <code>float</code> 型変数 <code>a</code> の 2 乗した値が <code>float</code> 型の範囲に収まらないことを想定して
40838
+ <p>例えばサンプルコードでは <code>float</code> 型変数 <code>a</code> の 2 乗した値が <code>float</code> 型の範囲に収まらないことを想定して
40844
40839
  <code>double</code> 型変数 <code>b</code> へ代入しています。しかし、環境によっては <code>a * a</code> の演算はいったん <code>float</code> 型として
40845
40840
  結果を出したあとに <code>double</code> 型にキャストされ、<code>b</code> へ代入される場合があります。その場合、<code>a</code> の値によっては精度落ちが起こります。
40846
40841
 
@@ -40861,7 +40856,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40861
40856
 
40862
40857
  <h4 class="subsection">6.731.5 対応バージョン</h4>
40863
40858
 
40864
- <p>2.0.0 の予定
40859
+ <p>1.14.0
40865
40860
 
40866
40861
  <div class="node">
40867
40862
  <a name="W1067"></a>
@@ -40882,9 +40877,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40882
40877
 
40883
40878
  <h4 class="subsection">6.732.2 内容</h4>
40884
40879
 
40885
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
40886
-
40887
- <p>例えばサンプルコードでは <code>float</code> 型変数 <code>a</code> の 2 乗した値が <code>float</code> 型の範囲に収まらないことを想定して
40880
+ <p>例えばサンプルコードでは <code>float</code> 型変数 <code>a</code> の 2 乗した値が <code>float</code> 型の範囲に収まらないことを想定して
40888
40881
  <code>long double</code> 型変数 <code>b</code> へ代入しています。しかし、環境によっては <code>a * a</code> の演算はいったん <code>float</code> 型として
40889
40882
  結果を出したあとに <code>long double</code> 型にキャストされ、<code>b</code> へ代入される場合があります。その場合、<code>a</code> の値によっては精度落ちが起こります。
40890
40883
 
@@ -40905,7 +40898,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40905
40898
 
40906
40899
  <h4 class="subsection">6.732.5 対応バージョン</h4>
40907
40900
 
40908
- <p>2.0.0 の予定
40901
+ <p>1.14.0
40909
40902
 
40910
40903
  <div class="node">
40911
40904
  <a name="W1068"></a>
@@ -40926,9 +40919,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40926
40919
 
40927
40920
  <h4 class="subsection">6.733.2 内容</h4>
40928
40921
 
40929
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
40930
-
40931
- <p>例えばサンプルコードでは <code>double</code> 型変数 <code>a</code> の 2 乗した値が <code>double</code> 型の範囲に収まらないことを想定して
40922
+ <p>例えばサンプルコードでは <code>double</code> 型変数 <code>a</code> の 2 乗した値が <code>double</code> 型の範囲に収まらないことを想定して
40932
40923
  <code>long double</code> 型変数 <code>b</code> へ代入しています。しかし、環境によっては <code>a * a</code> の演算はいったん <code>double</code> 型として
40933
40924
  結果を出したあとに <code>long double</code> 型にキャストされ、<code>b</code> へ代入される場合があります。その場合、<code>a</code> の値によっては精度落ちが起こります。
40934
40925
 
@@ -40949,7 +40940,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40949
40940
 
40950
40941
  <h4 class="subsection">6.733.5 対応バージョン</h4>
40951
40942
 
40952
- <p>2.0.0 の予定
40943
+ <p>1.14.0
40953
40944
 
40954
40945
  <div class="node">
40955
40946
  <a name="W1069"></a>
@@ -40970,13 +40961,20 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40970
40961
 
40971
40962
  <h4 class="subsection">6.734.2 内容</h4>
40972
40963
 
40973
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
40974
-
40975
- <p><code>else</code> 節がないと、 <code>else</code> 節を書き忘れているのか、 <code>else</code> 節が発生しない <code>if-else if</code> 文なのかが分からず、混乱を招きます。
40964
+ <p><code>else</code> 節がないと、 <code>else</code> 節を書き忘れているのか、 <code>else</code> 節が発生しない <code>if-else if</code> 文なのかが分からず、混乱を招きます。
40976
40965
 
40977
40966
  <h4 class="subsection">6.734.3 サンプルコード</h4>
40978
40967
 
40979
- <pre class="verbatim">/* 追記予定 */
40968
+ <pre class="verbatim">static int func(int i)
40969
+ {
40970
+ if (i == 2) { /* W1069 */
40971
+ return 0;
40972
+ }
40973
+ else if (i == 4) {
40974
+ return 1;
40975
+ }
40976
+ return 2;
40977
+ }
40980
40978
  </pre>
40981
40979
 
40982
40980
  <h4 class="subsection">6.734.4 関連メッセージ</h4>
@@ -40985,7 +40983,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
40985
40983
 
40986
40984
  <h4 class="subsection">6.734.5 対応バージョン</h4>
40987
40985
 
40988
- <p>2.0.0 の予定
40986
+ <p>1.14.0
40989
40987
 
40990
40988
  <div class="node">
40991
40989
  <a name="W1070"></a>
@@ -41006,14 +41004,12 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
41006
41004
 
41007
41005
  <h4 class="subsection">6.735.2 内容</h4>
41008
41006
 
41009
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
41010
-
41011
- <p>深刻な問題ではありませんが、通常 <code>switch</code> 文は 2 つ以上の分岐があることが想定されるので、
41007
+ <p>深刻な問題ではありませんが、通常 <code>switch</code> 文は 2 つ以上の分岐があることが想定されるので、
41012
41008
  <code>case</code> 節が 1 つしかない <code>switch</code> 文では、実行パスの定義漏れが疑われます。
41013
41009
 
41014
41010
  <h4 class="subsection">6.735.3 サンプルコード</h4>
41015
41011
 
41016
- <pre class="verbatim">switch (x) {
41012
+ <pre class="verbatim">switch (x) { /* W1070 */
41017
41013
  case 1:
41018
41014
  ...
41019
41015
  break;
@@ -41028,7 +41024,7 @@ default:
41028
41024
 
41029
41025
  <h4 class="subsection">6.735.5 対応バージョン</h4>
41030
41026
 
41031
- <p>2.0.0 の予定
41027
+ <p>1.14.0
41032
41028
 
41033
41029
  <div class="node">
41034
41030
  <a name="W1071"></a>
@@ -41093,13 +41089,24 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
41093
41089
 
41094
41090
  <h4 class="subsection">6.737.2 内容</h4>
41095
41091
 
41096
- <p><b>このメッセージは AdLint 2.0.0 で出力する予定です。</b>
41097
-
41098
- <p>ファイル内で <code>goto</code> 文が使用されています。
41092
+ <p>ファイル内で <code>goto</code> 文が使用されています。
41099
41093
 
41100
41094
  <h4 class="subsection">6.737.3 サンプルコード</h4>
41101
41095
 
41102
- <pre class="verbatim">/* 追記予定 */
41096
+ <pre class="verbatim">static int func(int i)
41097
+ {
41098
+ if (i == 1) {
41099
+ goto Label1; /* W1072 */
41100
+ }
41101
+
41102
+ goto Label2; /* W1072 */
41103
+
41104
+ Label1:
41105
+ i = 10;
41106
+ Label2:
41107
+ i = 20;
41108
+ return i;
41109
+ }
41103
41110
  </pre>
41104
41111
 
41105
41112
  <h4 class="subsection">6.737.4 関連メッセージ</h4>
@@ -41108,7 +41115,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
41108
41115
 
41109
41116
  <h4 class="subsection">6.737.5 対応バージョン</h4>
41110
41117
 
41111
- <p>2.0.0 の予定
41118
+ <p>1.14.0
41112
41119
 
41113
41120
  <div class="node">
41114
41121
  <a name="W1073"></a>
@@ -42168,11 +42175,12 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Metrics">Metrics</a>
42168
42175
 
42169
42176
  <h4 class="subsection">7.12.1 メトリック名</h4>
42170
42177
 
42171
- <p>関数内の完結していない <code>if</code> 文の数
42178
+ <p>関数内の完結していない <code>if-else</code> 文の数
42172
42179
 
42173
42180
  <h4 class="subsection">7.12.2 内容</h4>
42174
42181
 
42175
- <p>関数内の <code>if</code> 文中で、明示的な <code>else</code> 節を持たないものの数を示します。
42182
+ <p>関数内の <code>if-else</code> 文で、明示的な <code>else</code> 節を持たないものの数を示しま
42183
+ す。
42176
42184
 
42177
42185
  <h4 class="subsection">7.12.3 サンプルコード</h4>
42178
42186
 
@@ -42190,7 +42198,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Metrics">Metrics</a>
42190
42198
  if (j % 2) {
42191
42199
  return -1;
42192
42200
  }
42193
- /* An implicit else clause makes foo's FN_UELS += 1 */
42201
+ /* A standalone if-statement does nothing to the FN_UELS metric */
42194
42202
 
42195
42203
  if (i == 2) {
42196
42204
  return 0;
@@ -42202,11 +42210,11 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Metrics">Metrics</a>
42202
42210
 
42203
42211
  return 5;
42204
42212
 
42205
- /* foo's FN_UELS == 2 */
42213
+ /* foo's FN_UELS == 1 */
42206
42214
  }
42207
42215
  </pre>
42208
42216
 
42209
- <pre class="example"> MET,FN_UELS,foo,int foo(int),test.c,1,5,2
42217
+ <pre class="example"> MET,FN_UELS,foo,int foo(int),test.c,1,5,1
42210
42218
  </pre>
42211
42219
  <h4 class="subsection">7.12.4 対応バージョン</h4>
42212
42220
 
@@ -2,7 +2,7 @@
2
2
  @setfilename users_guide_ja.info
3
3
  @documentlanguage ja
4
4
  @documentencoding utf-8
5
- @settitle AdLint 1.12.0 利用者ガイド
5
+ @settitle AdLint 1.14.0 利用者ガイド
6
6
 
7
7
  @copying
8
8
  Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
@@ -26680,15 +26680,15 @@ if(func() == 0) { /* W0644 */
26680
26680
 
26681
26681
  @subsection 内容
26682
26682
 
26683
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
26684
-
26685
26683
  未定義の動作のため、予期しない動作を引き起こす可能性があります。
26686
26684
 
26687
26685
  @subsection サンプルコード
26688
26686
 
26689
- @c{未実装}
26690
26687
  @verbatim
26691
- /* 追記予定 */
26688
+ extern void func(a) /* W0645 */
26689
+ void a;
26690
+ {
26691
+ }
26692
26692
  @end verbatim
26693
26693
 
26694
26694
  @subsection 関連メッセージ
@@ -26702,7 +26702,7 @@ if(func() == 0) { /* W0644 */
26702
26702
 
26703
26703
  @subsection 対応バージョン
26704
26704
 
26705
- 2.0.0 の予定
26705
+ 1.14.0
26706
26706
 
26707
26707
  @node W0646
26708
26708
  @section W0646
@@ -29179,8 +29179,6 @@ extern void assert(int a);
29179
29179
 
29180
29180
  @subsection 内容
29181
29181
 
29182
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
29183
-
29184
29182
  式を持たない @code{return} 文は不定値を返します。
29185
29183
 
29186
29184
  @subsection サンプルコード
@@ -29191,7 +29189,7 @@ int func(int value) /* W0697 */
29191
29189
  if (value == 0) {
29192
29190
  return 0;
29193
29191
  }
29194
- // No return statement at the end of the function.
29192
+ /* No return statement at the end of this function. */
29195
29193
  }
29196
29194
  @end verbatim
29197
29195
 
@@ -29205,7 +29203,7 @@ int func(int value) /* W0697 */
29205
29203
 
29206
29204
  @subsection 対応バージョン
29207
29205
 
29208
- 2.0.0 の予定
29206
+ 1.14.0
29209
29207
 
29210
29208
  @node W0698
29211
29209
  @section W0698
@@ -29283,15 +29281,14 @@ extern func(void)
29283
29281
 
29284
29282
  @subsection 内容
29285
29283
 
29286
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
29287
-
29288
29284
  式を持たない @code{return} 文は不定値を返します。
29289
29285
 
29290
29286
  @subsection サンプルコード
29291
29287
 
29292
- @c{未実装}
29293
29288
  @verbatim
29294
- /* 追記予定 */
29289
+ extern func(void) /* W0700 */
29290
+ {
29291
+ }
29295
29292
  @end verbatim
29296
29293
 
29297
29294
  @subsection 関連メッセージ
@@ -29304,7 +29301,7 @@ extern func(void)
29304
29301
 
29305
29302
  @subsection 対応バージョン
29306
29303
 
29307
- 2.0.0 の予定
29304
+ 1.14.0
29308
29305
 
29309
29306
  @node W0703
29310
29307
  @section W0703
@@ -35002,8 +34999,6 @@ int func(enum Color c)
35002
34999
 
35003
35000
  @subsection 内容
35004
35001
 
35005
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
35006
-
35007
35002
  例えばサンプルコードでは @code{float} 型変数 @code{a} の 2 乗した値が @code{float} 型の範囲に収まらないことを想定して
35008
35003
  @code{double} 型変数 @code{b} へ代入しています。しかし、環境によっては @code{a * a} の演算はいったん @code{float} 型として
35009
35004
  結果を出したあとに @code{double} 型にキャストされ、@code{b} へ代入される場合があります。その場合、@code{a} の値によっては精度落ちが起こります。
@@ -35026,7 +35021,7 @@ void func(float a)
35026
35021
 
35027
35022
  @subsection 対応バージョン
35028
35023
 
35029
- 2.0.0 の予定
35024
+ 1.14.0
35030
35025
 
35031
35026
  @node W1067
35032
35027
  @section W1067
@@ -35038,8 +35033,6 @@ void func(float a)
35038
35033
 
35039
35034
  @subsection 内容
35040
35035
 
35041
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
35042
-
35043
35036
  例えばサンプルコードでは @code{float} 型変数 @code{a} の 2 乗した値が @code{float} 型の範囲に収まらないことを想定して
35044
35037
  @code{long double} 型変数 @code{b} へ代入しています。しかし、環境によっては @code{a * a} の演算はいったん @code{float} 型として
35045
35038
  結果を出したあとに @code{long double} 型にキャストされ、@code{b} へ代入される場合があります。その場合、@code{a} の値によっては精度落ちが起こります。
@@ -35062,7 +35055,7 @@ void func(float a)
35062
35055
 
35063
35056
  @subsection 対応バージョン
35064
35057
 
35065
- 2.0.0 の予定
35058
+ 1.14.0
35066
35059
 
35067
35060
  @node W1068
35068
35061
  @section W1068
@@ -35074,8 +35067,6 @@ void func(float a)
35074
35067
 
35075
35068
  @subsection 内容
35076
35069
 
35077
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
35078
-
35079
35070
  例えばサンプルコードでは @code{double} 型変数 @code{a} の 2 乗した値が @code{double} 型の範囲に収まらないことを想定して
35080
35071
  @code{long double} 型変数 @code{b} へ代入しています。しかし、環境によっては @code{a * a} の演算はいったん @code{double} 型として
35081
35072
  結果を出したあとに @code{long double} 型にキャストされ、@code{b} へ代入される場合があります。その場合、@code{a} の値によっては精度落ちが起こります。
@@ -35098,7 +35089,7 @@ void func(double a)
35098
35089
 
35099
35090
  @subsection 対応バージョン
35100
35091
 
35101
- 2.0.0 の予定
35092
+ 1.14.0
35102
35093
 
35103
35094
  @node W1069
35104
35095
  @section W1069
@@ -35108,17 +35099,23 @@ void func(double a)
35108
35099
 
35109
35100
  この `if-else-if' 文には、末尾の `else' 節がありません。
35110
35101
 
35111
-
35112
35102
  @subsection 内容
35113
35103
 
35114
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
35115
-
35116
35104
  @code{else} 節がないと、 @code{else} 節を書き忘れているのか、 @code{else} 節が発生しない @code{if-else if} 文なのかが分からず、混乱を招きます。
35117
35105
 
35118
35106
  @subsection サンプルコード
35119
35107
 
35120
35108
  @verbatim
35121
- /* 追記予定 */
35109
+ static int func(int i)
35110
+ {
35111
+ if (i == 2) { /* W1069 */
35112
+ return 0;
35113
+ }
35114
+ else if (i == 4) {
35115
+ return 1;
35116
+ }
35117
+ return 2;
35118
+ }
35122
35119
  @end verbatim
35123
35120
 
35124
35121
  @subsection 関連メッセージ
@@ -35127,7 +35124,7 @@ void func(double a)
35127
35124
 
35128
35125
  @subsection 対応バージョン
35129
35126
 
35130
- 2.0.0 の予定
35127
+ 1.14.0
35131
35128
 
35132
35129
  @node W1070
35133
35130
  @section W1070
@@ -35139,15 +35136,13 @@ void func(double a)
35139
35136
 
35140
35137
  @subsection 内容
35141
35138
 
35142
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
35143
-
35144
35139
  深刻な問題ではありませんが、通常 @code{switch} 文は 2 つ以上の分岐があることが想定されるので、
35145
35140
  @code{case} 節が 1 つしかない @code{switch} 文では、実行パスの定義漏れが疑われます。
35146
35141
 
35147
35142
  @subsection サンプルコード
35148
35143
 
35149
35144
  @verbatim
35150
- switch (x) {
35145
+ switch (x) { /* W1070 */
35151
35146
  case 1:
35152
35147
  ...
35153
35148
  break;
@@ -35162,7 +35157,7 @@ default:
35162
35157
 
35163
35158
  @subsection 対応バージョン
35164
35159
 
35165
- 2.0.0 の予定
35160
+ 1.14.0
35166
35161
 
35167
35162
  @node W1071
35168
35163
  @section W1071
@@ -35210,14 +35205,26 @@ int func(int a)
35210
35205
 
35211
35206
  @subsection 内容
35212
35207
 
35213
- @b{このメッセージは AdLint 2.0.0 で出力する予定です。}
35214
35208
 
35215
35209
  ファイル内で @code{goto} 文が使用されています。
35216
35210
 
35217
35211
  @subsection サンプルコード
35218
35212
 
35219
35213
  @verbatim
35220
- /* 追記予定 */
35214
+ static int func(int i)
35215
+ {
35216
+ if (i == 1) {
35217
+ goto Label1; /* W1072 */
35218
+ }
35219
+
35220
+ goto Label2; /* W1072 */
35221
+
35222
+ Label1:
35223
+ i = 10;
35224
+ Label2:
35225
+ i = 20;
35226
+ return i;
35227
+ }
35221
35228
  @end verbatim
35222
35229
 
35223
35230
  @subsection 関連メッセージ
@@ -35226,7 +35233,7 @@ int func(int a)
35226
35233
 
35227
35234
  @subsection 対応バージョン
35228
35235
 
35229
- 2.0.0 の予定
35236
+ 1.14.0
35230
35237
 
35231
35238
  @node W1073
35232
35239
  @section W1073
@@ -36122,11 +36129,12 @@ MET,FN_RETN,bar,int bar(int),test.c,20,5,3
36122
36129
 
36123
36130
  @subsection メトリック名
36124
36131
 
36125
- 関数内の完結していない @code{if} 文の数
36132
+ 関数内の完結していない @code{if-else} 文の数
36126
36133
 
36127
36134
  @subsection 内容
36128
36135
 
36129
- 関数内の @code{if} 文中で、明示的な @code{else} 節を持たないものの数を示します。
36136
+ 関数内の @code{if-else} 文で、明示的な @code{else} 節を持たないものの数を示しま
36137
+ す。
36130
36138
 
36131
36139
  @subsection サンプルコード
36132
36140
 
@@ -36145,7 +36153,7 @@ int foo(int i)
36145
36153
  if (j % 2) {
36146
36154
  return -1;
36147
36155
  }
36148
- /* An implicit else clause makes foo's FN_UELS += 1 */
36156
+ /* A standalone if-statement does nothing to the FN_UELS metric */
36149
36157
 
36150
36158
  if (i == 2) {
36151
36159
  return 0;
@@ -36157,12 +36165,12 @@ int foo(int i)
36157
36165
 
36158
36166
  return 5;
36159
36167
 
36160
- /* foo's FN_UELS == 2 */
36168
+ /* foo's FN_UELS == 1 */
36161
36169
  }
36162
36170
  @end verbatim
36163
36171
 
36164
36172
  @example
36165
- MET,FN_UELS,foo,int foo(int),test.c,1,5,2
36173
+ MET,FN_UELS,foo,int foo(int),test.c,1,5,1
36166
36174
  @end example
36167
36175
 
36168
36176
  @subsection 対応バージョン
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adlint
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.12.0
4
+ version: 1.14.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-20 00:00:00.000000000 Z
12
+ date: 2012-07-04 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: ! 'AdLint is a source code static analyzer.
15
15
 
@@ -68,15 +68,19 @@ files:
68
68
  - features/message_detection/W0010.feature
69
69
  - features/message_detection/W0013.feature
70
70
  - features/message_detection/W0093.feature
71
+ - features/message_detection/W0104.feature
71
72
  - features/message_detection/W0109.feature
72
73
  - features/message_detection/W0583.feature
73
74
  - features/message_detection/W0606.feature
75
+ - features/message_detection/W0645.feature
74
76
  - features/message_detection/W0687.feature
75
77
  - features/message_detection/W0688.feature
76
78
  - features/message_detection/W0689.feature
77
79
  - features/message_detection/W0690.feature
80
+ - features/message_detection/W0697.feature
78
81
  - features/message_detection/W0698.feature
79
82
  - features/message_detection/W0699.feature
83
+ - features/message_detection/W0700.feature
80
84
  - features/message_detection/W0703.feature
81
85
  - features/message_detection/W0716.feature
82
86
  - features/message_detection/W0717.feature
@@ -88,6 +92,12 @@ files:
88
92
  - features/message_detection/W0735.feature
89
93
  - features/message_detection/W1031.feature
90
94
  - features/message_detection/W1052.feature
95
+ - features/message_detection/W1066.feature
96
+ - features/message_detection/W1067.feature
97
+ - features/message_detection/W1068.feature
98
+ - features/message_detection/W1069.feature
99
+ - features/message_detection/W1070.feature
100
+ - features/message_detection/W1072.feature
91
101
  - features/message_detection/W9001.feature
92
102
  - features/message_detection/W9003.feature
93
103
  - features/step_definitions/message_detection_steps.rb