两个IDEA项目之间的不同检查行为

时间:2017-03-15 18:14:50

标签: android intellij-idea android-permissions code-inspection

我在IDEA 2016.3.3中仅在几天前创建的项目中遇到了一个奇怪的问题,当我遇到此问题时,我将其升级到2016.3.5。即使在缓存和重新启动无效之后,问题仍然存在于旧项目中。我无法在2016.3.5中创建的新项目中重现它。

两个项目都具有相同的Sub MyMacro() Application.DisplayAlerts = False Sheets("P H T Funnel Summary_1").Select ActiveWindow.SelectedSheets.Delete Rows("1:21").Select Selection.ClearContents Selection.Delete Shift:=xlUp 'Joyce's Macro Rows("1:1").RowHeight = 51 Rows("1:1").RowHeight = 44.25 Range("A1").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Columns("F:F").Select Selection.Cut Columns("B:B").Select ActiveSheet.Paste Selection.ColumnWidth = 14.29 Columns("B:B").Select With Selection .HorizontalAlignment = xlGeneral .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Selection .HorizontalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Columns("G:G").Select Selection.Cut Columns("C:C").Select ActiveSheet.Paste Range("D1").Select ActiveCell.FormulaR1C1 = "Quote Account Name" Range("D1").Select With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlTop .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Font.Bold = True Range("D1:D534").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With Columns("AB:AB").Select Selection.Cut Columns("E:E").Select ActiveSheet.Paste Columns("K:K").Select Selection.Cut Columns("G:G").Select ActiveSheet.Paste Columns("G:G").Select With Selection .HorizontalAlignment = xlGeneral .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Selection .HorizontalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("H1").Select Columns("L:L").Select Selection.Cut Columns("H:H").Select ActiveSheet.Paste Columns("H:H").EntireColumn.AutoFit Columns("I:I").Select Selection.Cut Columns("I:I").Select Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft Selection.ColumnWidth = 12.29 With Selection .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Columns("AN:AN").Select Selection.Cut Columns("J:J").Select ActiveSheet.Paste Selection.ColumnWidth = 16 With Selection .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Columns("AI:AI").Select Selection.Cut Columns("K:K").Select ActiveSheet.Paste Range("K1").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("L1").Select ActiveCell.FormulaR1C1 = " " Columns("AJ:AJ").Select Selection.Cut Columns("L:L").Select ActiveSheet.Paste Columns("M:M").Select Selection.Cut Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft Range("N1").Select Selection.ClearContents Columns("X:X").Select Selection.Cut Range("N1").Select ActiveSheet.Paste Range("O1").Select Columns("N:N").EntireColumn.AutoFit With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("N1").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("O1").Select ActiveCell.FormulaR1C1 = " " Columns("U:U").Select Selection.Cut Columns("O:O").Select ActiveSheet.Paste Columns("Y:Y").Select Selection.Cut Columns("O:O").Select Selection.Insert Shift:=xlToRight Range("O1").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("P1").Select Columns("X:X").Select Selection.Cut Columns("Q:Q").Select Selection.Insert Shift:=xlToRight Range("Q1").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Columns("T:T").Select Selection.Cut Columns("R:R").Select Columns("T:T").Select Application.CutCopyMode = False Selection.Cut Columns("R:R").Select Selection.Insert Shift:=xlToRight Columns("R:R").Select With Selection .HorizontalAlignment = xlGeneral .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Selection .HorizontalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Columns("AN:AN").Select Selection.Cut Columns("T:T").Select ActiveSheet.Paste Columns("U:U").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range("A1").Select With Selection.Font .Name = "Arial" .Size = 7 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Range("A1").Select With Selection.Font .Name = "Arial" .Size = 8 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Range("A1").Select With Selection.Font .Name = "Arial" .Size = 7.5 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Range("A1").Select With Selection.Font .Name = "Arial" .Size = 7 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Range("A1").Select Range("D1").Select With Selection.Font .Name = "Tahoma" .Size = 8 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Range("D1").Select With Selection.Font .Name = "Arial" .Size = 8 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Columns("C:C").ColumnWidth = 47.14 Columns("F:F").ColumnWidth = 13.43 Columns("H:H").ColumnWidth = 18.57 Columns("I:I").EntireColumn.AutoFit Columns("J:J").ColumnWidth = 14.14 Columns("K:K").ColumnWidth = 12.14 Columns("K:K").ColumnWidth = 11 Columns("M:M").ColumnWidth = 20.43 Columns("N:N").ColumnWidth = 12.29 Columns("N:N").ColumnWidth = 12.71 Columns("O:O").ColumnWidth = 12.43 Columns("R:R").ColumnWidth = 13.57 Columns("S:S").ColumnWidth = 24.57 Columns("T:T").ColumnWidth = 28.57 Columns("A:A").ColumnWidth = 35 Columns("U:AU").Select Selection.Delete Shift:=xlToLeft 'End of Joyce's Macro Columns("D:D").Select Selection.Delete Shift:=xlToLeft Rows("1:19").Select Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=SEARCH(""CTC"",$S2)" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$I2>=10000" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$N2>=30" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent4 .TintAndShade = 0.399945066682943 End With Selection.FormatConditions(1).StopIfTrue = False Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=0" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 15773696 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=AND(D2>=TODAY()-7,D2<=TODAY())" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 5287936 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreaterEqual _ , Formula1:="=30" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent6 .TintAndShade = -0.249946592608417 End With Selection.FormatConditions(1).StopIfTrue = False Range("A2").Select Cells.FormatConditions.Delete Range("A2:A5000").Select Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=SEARCH(""CTC"",$S2)" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False Range("B2:B5000").Select Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$I2>=10000" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False Range("C2:C5000").Select Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$N2>=30" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent4 .TintAndShade = 0.399945066682943 End With Selection.FormatConditions(1).StopIfTrue = False Range("I2:I5000").Select Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=0" Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(COUNTBLANK($I2)=0,$I2=0)" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 15773696 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False Range("D2:D5000").Select Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=AND(D2<=TODAY()+7,D2>=TODAY())" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 5287936 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False Range("M2:M5000").Select Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=M2<=TODAY()-30" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent6 .TintAndShade = -0.249946592608417 End With Selection.FormatConditions(1).StopIfTrue = False Application.DisplayAlerts = True End Sub minSdkVersiontargetSdkVersioncompileSdkVersion还有什么可能导致检查行为的这种差异?

我在两个项目中创建了一个相同的类:

buildToolsVersion
  • public class PermissionWeirdness { public void foo() { bar(); baz(); } @RequiresPermission(Manifest.permission.ACCESS_FINE_LOCATION) private void bar() {} @RequiresPermission(Manifest.permission.GET_ACCOUNTS) private void baz() {} } ACCESS_FINE_LOCATION都归类为&#34;危险&#34;权限。
  • 在这两个项目中,正如预期的那样,在GET_ACCOUNTSfoo()的来电中,bar()会显示警告。
  • 在较新的项目中,两个警告的形式相同:
      

    PermissionWeirdness.bar所需的权限缺失:android.permission.ACCESS_FINE_LOCATION

  • 在较早的项目中,与baz()相关的警告有完全不同的消息。工具提示文本中包含文字反引号,在此处将其解释为代码标记:
      

    调用需要用户可能拒绝的权限:代码应明确检查权限是否可用(使用ACCESS_FINE_LOCATION)或明确处理潜在的checkPermission

  • 在这两个项目中,可以通过向SecurityException添加适当的@RequiresPermission注释来消除采用较短格式的警告。
  • 在较旧的项目中,以这种方式消除神秘的较长警告

1 个答案:

答案 0 :(得分:1)

真实项目与我在示例项目中重现问题的尝试之间的区别在于清单。 检查的行为会更改危险权限,但仅限于清单中列出的情况。警告消息发生变化,"{{ oracle1.instance.reports.forecast.email|d('testing@gmail.com') }}" 不再级联。

我原本以为这是Android Studio bug 177281的回归,但这个问题更为笼统。不级联危险权限可能是故意的,但我已将其报告为错误,因为the process is killed如果用户撤消正在运行的应用程序的权限。