Ios 如何找出触发警告的铿锵静态分析器步骤?

Ios 如何找出触发警告的铿锵静态分析器步骤?,ios,clang-static-analyzer,Ios,Clang Static Analyzer,以下方法来自的DDAbstractDatabaseLogger: 触发叮当作响的静态分析器警告: CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.m:207:13: Null pointer passed as an argument to a 'nonnull' parameter 步骤的屏幕截图: 我查看了构建输出,发现了以下plist: <?xml version="1.0" encoding="UTF-8"?> &l

以下方法来自的
DDAbstractDatabaseLogger

触发叮当作响的静态分析器警告:

CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.m:207:13: Null pointer passed as an argument to a 'nonnull' parameter
步骤的屏幕截图:

我查看了构建输出,发现了以下plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>clang_version</key>
<string>Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)</string>
 <key>files</key>
 <array>
  <string>CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.m</string>
 </array>
 <key>diagnostics</key>
 <array>
  <dict>
   <key>path</key>
   <array>
    <dict>
     <key>kind</key><string>control</string>
     <key>edges</key>
      <array>
       <dict>
        <key>start</key>
         <array>
          <dict>
           <key>line</key><integer>194</integer>
           <key>col</key><integer>2</integer>
           <key>file</key><integer>0</integer>
          </dict>
          <dict>
           <key>line</key><integer>194</integer>
           <key>col</key><integer>3</integer>
           <key>file</key><integer>0</integer>
          </dict>
         </array>
        <key>end</key>
         <array>
          <dict>
           <key>line</key><integer>194</integer>
           <key>col</key><integer>7</integer>
           <key>file</key><integer>0</integer>
          </dict>
          <dict>
           <key>line</key><integer>194</integer>
           <key>col</key><integer>17</integer>
           <key>file</key><integer>0</integer>
          </dict>
         </array>
       </dict>
      </array>
    </dict>

<!-- Lots of the same style of line, col, file key-values in dicts and arrays -->

   </array>
   <key>description</key><string>Null pointer passed as an argument to a &apos;nonnull&apos; parameter</string>
   <key>category</key><string>API</string>
   <key>type</key><string>Argument with &apos;nonnull&apos; attribute passed null</string>
  <key>issue_context_kind</key><string>Objective-C method</string>
  <key>issue_context</key><string>createAndStartDeleteTimer</string>
  <key>issue_hash</key><integer>14</integer>
  <key>location</key>
  <dict>
   <key>line</key><integer>207</integer>
   <key>col</key><integer>13</integer>
   <key>file</key><integer>0</integer>
  </dict>
  </dict>
 </array>
</dict>
</plist>

叮当声
苹果LLVM版本4.2(clang-425.0.28)(基于LLVM 3.2svn)
文件夹
cocoalamberjack/Lumberjack/DDAbstractDatabaseLogger.m
诊断学
路径
亲情控制
边缘
开始
第194行
可乐
文件0
第194行
可乐
文件0
结束
第194行
可乐
文件0
第194行
col17
文件0
descriptionNull指针作为参数传递给&apos;非空&apos;参数
分类
带&apos;非空&apos;属性传递为null
问题\背景\目标-C方法
issue_ContextCreateandStartDeletTimer
第14期
位置
第207行
col13
文件0

是否有任何方法可以获取静态分析器认为会导致传入空指针的抽象值?我想不出来。

可能晚了,但是对于所看到的步骤,您可以运行独立的命令行实用程序,它使用相同的clang静态分析器,但向您展示了它触发警告的步骤

如果是死代码,则只有我或第二个
中的代码?如果
dateTimer!=null
那么第一个if将不会执行。我们需要查看updateDeleteTimer的源代码-我的猜测是,您可能会在该方法中释放并将其清空(取决于一系列if语句)。我添加了updateDeleteTimer的源代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>clang_version</key>
<string>Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)</string>
 <key>files</key>
 <array>
  <string>CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.m</string>
 </array>
 <key>diagnostics</key>
 <array>
  <dict>
   <key>path</key>
   <array>
    <dict>
     <key>kind</key><string>control</string>
     <key>edges</key>
      <array>
       <dict>
        <key>start</key>
         <array>
          <dict>
           <key>line</key><integer>194</integer>
           <key>col</key><integer>2</integer>
           <key>file</key><integer>0</integer>
          </dict>
          <dict>
           <key>line</key><integer>194</integer>
           <key>col</key><integer>3</integer>
           <key>file</key><integer>0</integer>
          </dict>
         </array>
        <key>end</key>
         <array>
          <dict>
           <key>line</key><integer>194</integer>
           <key>col</key><integer>7</integer>
           <key>file</key><integer>0</integer>
          </dict>
          <dict>
           <key>line</key><integer>194</integer>
           <key>col</key><integer>17</integer>
           <key>file</key><integer>0</integer>
          </dict>
         </array>
       </dict>
      </array>
    </dict>

<!-- Lots of the same style of line, col, file key-values in dicts and arrays -->

   </array>
   <key>description</key><string>Null pointer passed as an argument to a &apos;nonnull&apos; parameter</string>
   <key>category</key><string>API</string>
   <key>type</key><string>Argument with &apos;nonnull&apos; attribute passed null</string>
  <key>issue_context_kind</key><string>Objective-C method</string>
  <key>issue_context</key><string>createAndStartDeleteTimer</string>
  <key>issue_hash</key><integer>14</integer>
  <key>location</key>
  <dict>
   <key>line</key><integer>207</integer>
   <key>col</key><integer>13</integer>
   <key>file</key><integer>0</integer>
  </dict>
  </dict>
 </array>
</dict>
</plist>