2017-03-16 82 views
0

我一直在編寫一個錯誤記者來自動將我的Minecraft mod中的異常報告給我的GitHub問題頁面。它的工作原理,但我的代碼檢查問題是否已經存在不起作用。我正在使用jcabi與GitHub進行交互。如果您需要更多信息,請告訴我。謝謝!確定GitHub問題是否已經存在

private static Github github = new RtGithub(Secure.Token); 
private static Repo repo = github.repos().get(new Coordinates.Simple("SneakyTactician/BIGB2")); 

public static void Report(Exception ToReport) 
{ 
    try 
    {  
     //The title for the issue. 
     String Title = ToReport.getMessage(); 
     //Generates a message for the issue. 
     String Report = GetMessage(ToReport); 

     if (!DoesIssueAlreadyExist(Title, Report)) 
     { 

     Issue TheIssue = repo.issues().create(Title, Report); 
     Issue.Smart a = new Issue.Smart(TheIssue); 
     a.assign("SneakyTactician"); 

     a.labels().add(extracted()); 
     } 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
} 

示例問題標題:

/零啓動我的消息生成,問題產生的過程

private static boolean DoesIssueAlreadyExist(String Title, String Report) 
{ 
    try 
    { 
     int i = 0; 
     int size = GetNumberOfIssues(); 
     Issue.Smart Current; 

     while (i != size) 
     { 
      Current = new Issue.Smart(repo.issues().get(i)); 

      if (Current.title() == Title && Current.body() == Report) 
      { 
        return true; 
      } 

      i++; 
     } 

     return false; 

    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
     return false; 
    } 
} 

代碼:確定問題是否已經存在

代碼

示例問題主體:

java.lang.ArithmeticException:/by zero 
at sneaky.main.Startup.preInit(Startup.java:28) 
at sneaky.main.BIGB2.preInit(BIGB2.java:21) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:483) 
at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:641) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:483) 
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) 
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) 
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) 
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) 
at com.google.common.eventbus.EventBus.post(EventBus.java:275) 
at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:246) 
at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:224) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:483) 
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) 
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) 
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) 
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) 
at com.google.common.eventbus.EventBus.post(EventBus.java:275) 
at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:147) 
at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:628) 
at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:268) 
at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:440) 
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:352) 
at net.minecraft.client.main.Main.main(SourceFile:124) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:483) 
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) 
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) 

MODS的6number發現運行:

的Minecraft 1.11.2

的Minecraft編碼器包9.19

鍛造Mod裝載8.0.99.99

的Minecraft Forge的13.20.0.2228

mercurius_updater 1.0

因爲我得到無聊1.0

回答

0

經過了許多小時的困惑和沮喪,我找到了它!下面的方法檢查問題是否已經存在於你的GitHub問題頁面上。

/** 
* Determines if the exception has already been posted to the issue page. 
* Returns false if an error occurs. 
* @param e 
* @return 
*/ 
private static boolean DoesIssueAlreadyExist(String Title, String Report) 
{ 
    try 
    { 
     EnumMap<Qualifier, String> qualifiers = new EnumMap<Qualifier, String>(Issues.Qualifier.class); 

     Iterable<Issue> Issues = repo.issues().search(Sort.CREATED, Order.DESC, qualifiers); 

     Issue.Smart current; 

     long size = Iterables.size(Issues); 

     int i = 0; 


     while (i != size) 
     { 
      current = new Issue.Smart(Issues.iterator().next()); 

      if (current.title().contains(Title) && current.body().contains(Report)) 
      { 
       return true; 
      } 

      i++; 
     } 

     return false; 

    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
     return true; 
    } 
}